Optimize achievement loading.
Add a new achievement (heh). Don't show achievement notifications while the level is ending.
82
achievements.lst
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
# achievements listed here
|
||||
# format: "basename,maxval,hasformat"
|
||||
# basename: the base name used to construct cvars and localization strings
|
||||
# maxval: limit progress value (if any), a value of -1 means it needs special
|
||||
# handling in zscript (usually for cases where this is dynamic, like
|
||||
# the "all collectibles" achievement)
|
||||
# hasformat: the TXT string has a %d in it to substitute for maxval
|
||||
abort,0,no
|
||||
acid,200,yes
|
||||
allcoll,-1,no
|
||||
allitems,30,yes
|
||||
allkills,30,yes
|
||||
allsecrets,30,yes
|
||||
anom,25,yes
|
||||
anone,0,no
|
||||
balls,10,yes
|
||||
barrier,25,yes
|
||||
bonk,300,yes
|
||||
bossdash,10,yes
|
||||
brake,30,yes
|
||||
bune,200,yes
|
||||
bustin,40,yes
|
||||
butts,100,yes
|
||||
cheat,0,no
|
||||
cliffyb,0,no
|
||||
clonk,0,no
|
||||
conga,15,yes
|
||||
#dab,100,yes
|
||||
#dakka,60,no
|
||||
dime,0,no
|
||||
dosh,1000000000,no
|
||||
everything,0,no
|
||||
ezkill,100,yes
|
||||
flight,2000,yes
|
||||
friend,30,yes
|
||||
fuel,400,yes
|
||||
#fuller,0,no
|
||||
gcsandwich,25,yes
|
||||
#gepgun,30,yes
|
||||
ghost,25,yes
|
||||
gib,1000,yes
|
||||
golden,24,yes
|
||||
gravity,25,yes
|
||||
#hnd,6,yes
|
||||
iwad,7,no
|
||||
jump,100,yes
|
||||
lead,1500,yes
|
||||
#lightning,0,no
|
||||
ligma,0,no
|
||||
love,20,yes
|
||||
#mashiro,0,no
|
||||
mbf,0,no
|
||||
mega,1000000,no
|
||||
moth,50,yes
|
||||
nice,0,no
|
||||
oneguy,0,no
|
||||
onestanding,0,no
|
||||
oopsie,0,no
|
||||
par,30,yes
|
||||
parry,100,yes
|
||||
#pene,20,yes
|
||||
plush,20,yes
|
||||
rage,25,yes
|
||||
reflect,20,yes
|
||||
refresh,25,yes
|
||||
#roast,30,yes
|
||||
salt,0,no
|
||||
sanic,800,yes
|
||||
sekiro,0,no
|
||||
shock,30,yes
|
||||
slayer,40,yes
|
||||
slemg,50,yes
|
||||
sneeze,20,yes
|
||||
step,60,yes
|
||||
stomp,50,yes
|
||||
sunny,25,yes
|
||||
tele,0,no
|
||||
thicc,100,yes
|
||||
thruwall,25,yes
|
||||
wantdie,0,no
|
||||
wave,0,no
|
||||
yeet,0,no
|
||||
229
cvarinfo.txt
|
|
@ -103,6 +103,7 @@ server int swwm_drlaskill = 3; // [DRLA Monsters] skill setting for monster sp
|
|||
nosave bool swwm_itemsparkles = false; // visual aid for low visibility items
|
||||
server bool swwm_singlefirst = false; // single weapons are selected before dual ones, has to be a server cvar due to limitations
|
||||
nosave bool swwm_uniqstats = false; // only list stats from the same map once, rather than for each single visit
|
||||
nosave int swwm_filterachievements = 1; // filter for achievements at 0%: 0 - no filter, 1 - obscure text, 2 - don't show
|
||||
|
||||
// minimap settings
|
||||
nosave bool swwm_mm_enable = true; // show a minimap below the score counter
|
||||
|
|
@ -145,132 +146,132 @@ server noarchive bool swwm_iseriouslywanttoplaythiswithbd = false; // self-expla
|
|||
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_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_gravity = 0;
|
||||
nosave int swwm_achievement_flight = 0;
|
||||
nosave int swwm_achievement_cliffyb = 0;
|
||||
nosave int swwm_achievement_par = 0;
|
||||
nosave int swwm_achievement_oneguy = 0;
|
||||
nosave int swwm_achievement_golden = 0;
|
||||
nosave int swwm_achievement_gib = 0;
|
||||
nosave int swwm_achievement_barrier = 0;
|
||||
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_dime = 0;
|
||||
nosave int swwm_achievement_stomp = 0;
|
||||
nosave int swwm_achievement_cheat = 0;
|
||||
nosave int swwm_achievement_god = 0;
|
||||
nosave int swwm_achievement_thruwall = 0;
|
||||
nosave int swwm_achievement_mashiro = 0;
|
||||
nosave int swwm_achievement_lead = 0;
|
||||
nosave int swwm_achievement_love = 0;
|
||||
nosave int swwm_achievement_butts = 0;
|
||||
nosave int swwm_achievement_plush = 0;
|
||||
nosave int swwm_achievement_bustin = 0;
|
||||
nosave int swwm_achievement_moth = 0;
|
||||
nosave int swwm_achievement_iwad = 0;
|
||||
nosave int swwm_achievement_brake = 0;
|
||||
nosave int swwm_achievement_rage = 0;
|
||||
nosave int swwm_achievement_abort = 0;
|
||||
nosave int swwm_achievement_parry = 0;
|
||||
nosave int swwm_achievement_acid = 0;
|
||||
nosave int swwm_achievement_allcoll = 0;
|
||||
nosave int swwm_achievement_allitems = 0;
|
||||
nosave int swwm_achievement_allkills = 0;
|
||||
nosave int swwm_achievement_allsecrets = 0;
|
||||
nosave int swwm_achievement_reflect = 0;
|
||||
nosave int swwm_achievement_sekiro = 0;
|
||||
nosave int swwm_achievement_wave = 0;
|
||||
nosave int swwm_achievement_friend = 0;
|
||||
nosave int swwm_achievement_shock = 0;
|
||||
nosave int swwm_achievement_balls = 0;
|
||||
nosave int swwm_achievement_refresh = 0;
|
||||
nosave int swwm_achievement_step = 0;
|
||||
nosave int swwm_achievement_sunny = 0;
|
||||
nosave int swwm_achievement_thicc = 0;
|
||||
nosave int swwm_achievement_everything = 0;
|
||||
nosave int swwm_achievement_allcoll = 0;
|
||||
nosave int swwm_achievement_slemg = 0;
|
||||
nosave int swwm_achievement_dosh = 0;
|
||||
nosave int swwm_achievement_jump = 0;
|
||||
nosave int swwm_achievement_ezkill = 0;
|
||||
nosave int swwm_achievement_ligma = 0;
|
||||
nosave int swwm_achievement_yeet = 0;
|
||||
nosave int swwm_achievement_mbf = 0;
|
||||
nosave int swwm_achievement_lightning = 0;
|
||||
nosave int swwm_achievement_dakka = 0;
|
||||
nosave int swwm_achievement_roast = 0;
|
||||
nosave int swwm_achievement_dab = 0;
|
||||
nosave int swwm_achievement_hnd = 0;
|
||||
nosave int swwm_achievement_gepgun = 0;
|
||||
nosave int swwm_achievement_fuller = 0;
|
||||
nosave int swwm_achievement_pene = 0;
|
||||
nosave int swwm_achievement_acid = 0;
|
||||
nosave int swwm_achievement_salt = 0;
|
||||
nosave int swwm_achievement_mega = 0;
|
||||
nosave int swwm_achievement_sanic = 0;
|
||||
nosave int swwm_achievement_tele = 0;
|
||||
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_balls = 0;
|
||||
nosave int swwm_achievement_barrier = 0;
|
||||
nosave int swwm_achievement_bonk = 0;
|
||||
nosave int swwm_achievement_bossdash = 0;
|
||||
nosave int swwm_achievement_brake = 0;
|
||||
nosave int swwm_achievement_bune = 0;
|
||||
nosave int swwm_achievement_bustin = 0;
|
||||
nosave int swwm_achievement_butts = 0;
|
||||
nosave int swwm_achievement_cheat = 0;
|
||||
nosave int swwm_achievement_cliffyb = 0;
|
||||
nosave int swwm_achievement_clonk = 0;
|
||||
nosave int swwm_achievement_conga = 0;
|
||||
nosave int swwm_achievement_dab = 0;
|
||||
nosave int swwm_achievement_dakka = 0;
|
||||
nosave int swwm_achievement_dime = 0;
|
||||
nosave int swwm_achievement_dosh = 0;
|
||||
nosave int swwm_achievement_everything = 0;
|
||||
nosave int swwm_achievement_ezkill = 0;
|
||||
nosave int swwm_achievement_flight = 0;
|
||||
nosave int swwm_achievement_friend = 0;
|
||||
nosave int swwm_achievement_fuel = 0;
|
||||
nosave int swwm_achievement_fuller = 0;
|
||||
nosave int swwm_achievement_gcsandwich = 0;
|
||||
nosave int swwm_achievement_gepgun = 0;
|
||||
nosave int swwm_achievement_ghost = 0;
|
||||
nosave int swwm_achievement_gib = 0;
|
||||
nosave int swwm_achievement_golden = 0;
|
||||
nosave int swwm_achievement_gravity = 0;
|
||||
nosave int swwm_achievement_hnd = 0;
|
||||
nosave int swwm_achievement_iwad = 0;
|
||||
nosave int swwm_achievement_jump = 0;
|
||||
nosave int swwm_achievement_lead = 0;
|
||||
nosave int swwm_achievement_lightning = 0;
|
||||
nosave int swwm_achievement_ligma = 0;
|
||||
nosave int swwm_achievement_love = 0;
|
||||
nosave int swwm_achievement_mashiro = 0;
|
||||
nosave int swwm_achievement_mbf = 0;
|
||||
nosave int swwm_achievement_mega = 0;
|
||||
nosave int swwm_achievement_moth = 0;
|
||||
nosave int swwm_achievement_nice = 0;
|
||||
nosave int swwm_achievement_oneguy = 0;
|
||||
nosave int swwm_achievement_onestanding = 0;
|
||||
nosave int swwm_achievement_oopsie = 0;
|
||||
nosave int swwm_achievement_par = 0;
|
||||
nosave int swwm_achievement_parry = 0;
|
||||
nosave int swwm_achievement_pene = 0;
|
||||
nosave int swwm_achievement_plush = 0;
|
||||
nosave int swwm_achievement_rage = 0;
|
||||
nosave int swwm_achievement_reflect = 0;
|
||||
nosave int swwm_achievement_refresh = 0;
|
||||
nosave int swwm_achievement_roast = 0;
|
||||
nosave int swwm_achievement_salt = 0;
|
||||
nosave int swwm_achievement_sanic = 0;
|
||||
nosave int swwm_achievement_sekiro = 0;
|
||||
nosave int swwm_achievement_shock = 0;
|
||||
nosave int swwm_achievement_slayer = 0;
|
||||
nosave int swwm_achievement_slemg = 0;
|
||||
nosave int swwm_achievement_sneeze = 0;
|
||||
nosave int swwm_achievement_step = 0;
|
||||
nosave int swwm_achievement_stomp = 0;
|
||||
nosave int swwm_achievement_sunny = 0;
|
||||
nosave int swwm_achievement_tele = 0;
|
||||
nosave int swwm_achievement_thicc = 0;
|
||||
nosave int swwm_achievement_thruwall = 0;
|
||||
nosave int swwm_achievement_wantdie = 0;
|
||||
nosave int swwm_achievement_wave = 0;
|
||||
nosave int swwm_achievement_yeet = 0;
|
||||
// cross-session progress cvars
|
||||
nosave int swwm_progress_gcsandwich = 0;
|
||||
nosave int swwm_progress_ghost = 0;
|
||||
nosave int swwm_progress_acid = 0;
|
||||
nosave int swwm_progress_allcoll = 0;
|
||||
nosave int swwm_progress_allitems = 0;
|
||||
nosave int swwm_progress_conga = 0;
|
||||
nosave int swwm_progress_gravity = 0;
|
||||
nosave int swwm_progress_flight = 0;
|
||||
nosave int swwm_progress_par = 0;
|
||||
nosave int swwm_progress_golden = 0;
|
||||
nosave int swwm_progress_gib = 0;
|
||||
nosave int swwm_progress_barrier = 0;
|
||||
nosave int swwm_progress_bossdash = 0;
|
||||
nosave int swwm_progress_sneeze = 0;
|
||||
nosave float swwm_progress_fuel = 0; // this one has to be a double
|
||||
nosave int swwm_progress_slayer = 0;
|
||||
nosave int swwm_progress_stomp = 0;
|
||||
nosave int swwm_progress_thruwall = 0;
|
||||
nosave int swwm_progress_lead = 0;
|
||||
nosave int swwm_progress_love = 0;
|
||||
nosave int swwm_progress_butts = 0;
|
||||
nosave int swwm_progress_plush = 0;
|
||||
nosave int swwm_progress_bustin = 0;
|
||||
nosave int swwm_progress_moth = 0;
|
||||
nosave int swwm_progress_iwad = 0;
|
||||
nosave int swwm_progress_brake = 0;
|
||||
nosave int swwm_progress_rage = 0;
|
||||
nosave int swwm_progress_parry = 0;
|
||||
nosave int swwm_progress_allkills = 0;
|
||||
nosave int swwm_progress_allsecrets = 0;
|
||||
nosave int swwm_progress_reflect = 0;
|
||||
nosave int swwm_progress_friend = 0;
|
||||
nosave int swwm_progress_shock = 0;
|
||||
nosave int swwm_progress_anom = 0;
|
||||
nosave int swwm_progress_balls = 0;
|
||||
nosave int swwm_progress_barrier = 0;
|
||||
nosave int swwm_progress_bonk = 0;
|
||||
nosave int swwm_progress_bossdash = 0;
|
||||
nosave int swwm_progress_brake = 0;
|
||||
nosave int swwm_progress_bune = 0;
|
||||
nosave int swwm_progress_bustin = 0;
|
||||
nosave int swwm_progress_butts = 0;
|
||||
nosave int swwm_progress_conga = 0;
|
||||
nosave int swwm_progress_dab = 0;
|
||||
nosave int swwm_progress_dakka = 0;
|
||||
nosave int swwm_progress_dosh = 0;
|
||||
nosave int swwm_progress_ezkill = 0;
|
||||
nosave int swwm_progress_flight = 0;
|
||||
nosave int swwm_progress_friend = 0;
|
||||
nosave float swwm_progress_fuel = 0; // this one needs to be float
|
||||
nosave int swwm_progress_gcsandwich = 0;
|
||||
nosave int swwm_progress_gepgun = 0;
|
||||
nosave int swwm_progress_ghost = 0;
|
||||
nosave int swwm_progress_gib = 0;
|
||||
nosave int swwm_progress_golden = 0;
|
||||
nosave int swwm_progress_gravity = 0;
|
||||
nosave int swwm_progress_hnd = 0;
|
||||
nosave int swwm_progress_iwad = 0;
|
||||
nosave int swwm_progress_jump = 0;
|
||||
nosave int swwm_progress_lead = 0;
|
||||
nosave int swwm_progress_love = 0;
|
||||
nosave int swwm_progress_mega = 0;
|
||||
nosave int swwm_progress_moth = 0;
|
||||
nosave int swwm_progress_par = 0;
|
||||
nosave int swwm_progress_parry = 0;
|
||||
nosave int swwm_progress_pene = 0;
|
||||
nosave int swwm_progress_plush = 0;
|
||||
nosave int swwm_progress_rage = 0;
|
||||
nosave int swwm_progress_reflect = 0;
|
||||
nosave int swwm_progress_refresh = 0;
|
||||
nosave int swwm_progress_roast = 0;
|
||||
nosave int swwm_progress_sanic = 0;
|
||||
nosave int swwm_progress_shock = 0;
|
||||
nosave int swwm_progress_slayer = 0;
|
||||
nosave int swwm_progress_slemg = 0;
|
||||
nosave int swwm_progress_sneeze = 0;
|
||||
nosave int swwm_progress_step = 0;
|
||||
nosave int swwm_progress_stomp = 0;
|
||||
nosave int swwm_progress_sunny = 0;
|
||||
nosave int swwm_progress_thicc = 0;
|
||||
nosave int swwm_progress_allcoll = 0;
|
||||
nosave int swwm_progress_slemg = 0;
|
||||
nosave int swwm_progress_dosh = 0;
|
||||
nosave int swwm_progress_jump = 0;
|
||||
nosave int swwm_progress_ezkill = 0;
|
||||
nosave int swwm_progress_dakka = 0;
|
||||
nosave int swwm_progress_roast = 0;
|
||||
nosave int swwm_progress_dab = 0;
|
||||
nosave int swwm_progress_hnd = 0;
|
||||
nosave int swwm_progress_gepgun = 0;
|
||||
nosave int swwm_progress_pene = 0;
|
||||
nosave int swwm_progress_acid = 0;
|
||||
nosave int swwm_progress_mega = 0;
|
||||
nosave int swwm_progress_sanic = 0;
|
||||
nosave int swwm_progress_bune = 0;
|
||||
nosave int swwm_progress_bonk = 0;
|
||||
nosave int swwm_progress_anom = 0;
|
||||
nosave int swwm_progress_thruwall = 0;
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
|
@ -828,161 +828,153 @@ SWWM_FANART7 = "Marisa.jpg";
|
|||
SWWM_FANART8 = "Marisa2.jpg";
|
||||
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_GCSANDWICH_PIC = "graphics/Achievements/AchievementSandwich.png";
|
||||
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";
|
||||
SWWM_ACHIEVEMENT_OOPSIE_TXT = "Erase yourself with the Ynykron Artifact";
|
||||
SWWM_ACHIEVEMENT_GHOST_TAG = "Cloak Engaged";
|
||||
SWWM_ACHIEVEMENT_GHOST_TXT = "Use %d Ghost Artifacts";
|
||||
SWWM_ACHIEVEMENT_GHOST_PIC = "graphics/Achievements/AchievementGhost.png";
|
||||
SWWM_ACHIEVEMENT_CLONK_TAG = "CLONK";
|
||||
SWWM_ACHIEVEMENT_CLONK_TXT = "Kill a boss with a Lead Ball crit";
|
||||
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_GRAVITY_TAG = "Decent Ascent";
|
||||
SWWM_ACHIEVEMENT_GRAVITY_TXT = "Use %d Gravity Suppressors";
|
||||
SWWM_ACHIEVEMENT_GRAVITY_PIC = "graphics/Achievements/AchievementGravity.png";
|
||||
SWWM_ACHIEVEMENT_FLIGHT_TAG = "Demolitionist Space Program";
|
||||
SWWM_ACHIEVEMENT_FLIGHT_TXT = "Send a single enemy flying over %d map units";
|
||||
SWWM_ACHIEVEMENT_CLIFFYB_TAG = "Errand Boy Bullshit";
|
||||
SWWM_ACHIEVEMENT_CLIFFYB_TXT = "Finish a map without collecting any keys";
|
||||
SWWM_ACHIEVEMENT_PAR_TAG = "Fast";
|
||||
SWWM_ACHIEVEMENT_PAR_TXT = "Beat the par time in %d maps";
|
||||
SWWM_ACHIEVEMENT_ONEGUY_TAG = "Fuck that Guy in Particular";
|
||||
SWWM_ACHIEVEMENT_ONEGUY_TXT = "Use the Ynykron Artifact to kill a single non-boss enemy";
|
||||
SWWM_ACHIEVEMENT_GOLDEN_TAG = "Golden Shower";
|
||||
SWWM_ACHIEVEMENT_GOLDEN_TXT = "Use %d golden shells";
|
||||
SWWM_ACHIEVEMENT_GIB_TAG = "Gibbitude";
|
||||
SWWM_ACHIEVEMENT_GIB_TXT = "Overkill %d enemies";
|
||||
SWWM_ACHIEVEMENT_BARRIER_TAG = "Green Filter";
|
||||
SWWM_ACHIEVEMENT_BARRIER_TXT = "Use %d Elemental Barriers";
|
||||
SWWM_ACHIEVEMENT_BARRIER_PIC = "graphics/Achievements/AchievementBarrier.png";
|
||||
SWWM_ACHIEVEMENT_BOSSDASH_TAG = "Headstrong";
|
||||
SWWM_ACHIEVEMENT_BOSSDASH_TXT = "Kill %d bosses by dashing into them";
|
||||
SWWM_ACHIEVEMENT_SNEEZE_TAG = "Humiliator";
|
||||
SWWM_ACHIEVEMENT_SNEEZE_TXT = "Kill %d enemies with the Deep Impact primary fire";
|
||||
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_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_THRUWALL_TAG = "Knock Knock";
|
||||
SWWM_ACHIEVEMENT_THRUWALL_TXT = "Kill %d enemies through walls with the Silver Bullet";
|
||||
SWWM_ACHIEVEMENT_MASHIRO_TAG = "Layers of White";
|
||||
SWWM_ACHIEVEMENT_MASHIRO_TXT = "Summon the White Lady";
|
||||
SWWM_ACHIEVEMENT_LEAD_TAG = "Lead Delivery";
|
||||
SWWM_ACHIEVEMENT_LEAD_TXT = "Hit an enemy dead-on with the Eviscerator secondary from over %d map units away";
|
||||
SWWM_ACHIEVEMENT_LOVE_TAG = "Lethal Love";
|
||||
SWWM_ACHIEVEMENT_LOVE_TXT = "Kill %d enemies with a blown kiss (not counting insta-kills)";
|
||||
SWWM_ACHIEVEMENT_BUTTS_TAG = "Let's get to Bashing Butts";
|
||||
SWWM_ACHIEVEMENT_BUTTS_TXT = "Kill %d enemies by dashing backwards";
|
||||
SWWM_ACHIEVEMENT_PLUSH_TAG = "Lovestruck";
|
||||
SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya or Kirin plushies %d times in the same session";
|
||||
SWWM_ACHIEVEMENT_BUSTIN_TAG = "Makes me Feel Good";
|
||||
SWWM_ACHIEVEMENT_BUSTIN_TXT = "Bust %d walls";
|
||||
SWWM_ACHIEVEMENT_BUSTIN_PIC = "graphics/Achievements/AchievementBustin.png";
|
||||
SWWM_ACHIEVEMENT_MOTH_TAG = "Mother";
|
||||
SWWM_ACHIEVEMENT_MOTH_TXT = "Gather %d moths";
|
||||
SWWM_ACHIEVEMENT_IWAD_TAG = "Mx. Worldwide";
|
||||
SWWM_ACHIEVEMENT_IWAD_TXT = "Play on all supported games";
|
||||
SWWM_ACHIEVEMENT_IWAD_PIC = "graphics/Achievements/AchievementMxWorldwide.png";
|
||||
SWWM_ACHIEVEMENT_BRAKE_TAG = "No Brakes";
|
||||
SWWM_ACHIEVEMENT_BRAKE_TXT = "Consume your full fuel supply in a single dash %d times";
|
||||
SWWM_ACHIEVEMENT_RAGE_TAG = "No Talk me Angy";
|
||||
SWWM_ACHIEVEMENT_RAGE_TXT = "Use %d Ragekits";
|
||||
SWWM_ACHIEVEMENT_RAGE_PIC = "graphics/Achievements/AchievementRagekit.png";
|
||||
SWWM_ACHIEVEMENT_ABORT_TAG = "Oops I Broke It";
|
||||
SWWM_ACHIEVEMENT_ABORT_TXT = "Cause a VM abort";
|
||||
SWWM_ACHIEVEMENT_PARRY_TAG = "Parry King";
|
||||
SWWM_ACHIEVEMENT_PARRY_TXT = "Deflect %d projectiles";
|
||||
SWWM_ACHIEVEMENT_ACID_TAG = "Fizzy Goodness";
|
||||
SWWM_ACHIEVEMENT_ACID_TXT = "Melt %d enemies with Telebrium Flechettes";
|
||||
SWWM_ACHIEVEMENT_ALLCOLL_TAG = "The Full Set";
|
||||
SWWM_ACHIEVEMENT_ALLCOLL_TXT = "Obtain all collectibles in a single session";
|
||||
SWWM_ACHIEVEMENT_ALLITEMS_TAG = "Collector";
|
||||
SWWM_ACHIEVEMENT_ALLITEMS_TXT = "Obtain 100%% items in %d maps";
|
||||
SWWM_ACHIEVEMENT_ALLKILLS_TAG = "Pest Control";
|
||||
SWWM_ACHIEVEMENT_ALLKILLS_TXT = "Obtain 100%% kills in %d maps";
|
||||
SWWM_ACHIEVEMENT_ALLSECRETS_TAG = "Premium Detective";
|
||||
SWWM_ACHIEVEMENT_ALLSECRETS_TXT = "Obtain 100%% secrets in %d maps";
|
||||
SWWM_ACHIEVEMENT_REFLECT_TAG = "Return to Sender";
|
||||
SWWM_ACHIEVEMENT_REFLECT_TXT = "Kill %d enemies with parried projectiles";
|
||||
SWWM_ACHIEVEMENT_SEKIRO_TAG = "Hesitation is Defeat";
|
||||
SWWM_ACHIEVEMENT_SEKIRO_TXT = "Die and reboot two times in the same map";
|
||||
SWWM_ACHIEVEMENT_WAVE_TAG = "Sayonara, Scumbag";
|
||||
SWWM_ACHIEVEMENT_WAVE_TXT = "Wave at a dying enemy";
|
||||
SWWM_ACHIEVEMENT_FRIEND_TAG = "Shaped like a Friend";
|
||||
SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %d Cacodemons, Weredragons or Ettins with headpats";
|
||||
SWWM_ACHIEVEMENT_SHOCK_TAG = "Shockmaster";
|
||||
SWWM_ACHIEVEMENT_SHOCK_TXT = "Perform %d Biospark combos";
|
||||
SWWM_ACHIEVEMENT_BALLS_TAG = "Slam your Balls";
|
||||
SWWM_ACHIEVEMENT_BALLS_TXT = "Land %d Lead Ball crits";
|
||||
SWWM_ACHIEVEMENT_REFRESH_TAG = "Stay Fresh";
|
||||
SWWM_ACHIEVEMENT_REFRESH_TXT = "Use %d Refreshers";
|
||||
SWWM_ACHIEVEMENT_REFRESH_PIC = "graphics/Achievements/AchievementRefresh.png";
|
||||
SWWM_ACHIEVEMENT_STEP_TAG = "Steppy";
|
||||
SWWM_ACHIEVEMENT_STEP_TXT = "Stand on a single enemy's head for %d seconds";
|
||||
SWWM_ACHIEVEMENT_SUNNY_TAG = "Sunny D";
|
||||
SWWM_ACHIEVEMENT_SUNNY_TXT = "Use %d Invinciballs";
|
||||
SWWM_ACHIEVEMENT_SUNNY_PIC = "graphics/Achievements/AchievementInvinciball.png";
|
||||
SWWM_ACHIEVEMENT_THICC_TAG = "The Ass was Fat";
|
||||
SWWM_ACHIEVEMENT_THICC_TXT = "Kill %d enemies by ground pounding";
|
||||
SWWM_ACHIEVEMENT_EVERYTHING_TAG = "The Demolitionist";
|
||||
SWWM_ACHIEVEMENT_EVERYTHING_TXT = "Unlock all achievements";
|
||||
SWWM_ACHIEVEMENT_ALLCOLL_TAG = "The Full Set";
|
||||
SWWM_ACHIEVEMENT_ALLCOLL_TXT = "Obtain all collectibles in a single session";
|
||||
SWWM_ACHIEVEMENT_SLEMG_TAG = "The Sledge Method";
|
||||
SWWM_ACHIEVEMENT_SLEMG_TXT = "Activate %d switches by punching them";
|
||||
SWWM_ACHIEVEMENT_DOSH_TAG = "Unchecked Capitalism";
|
||||
SWWM_ACHIEVEMENT_DOSH_TXT = "Have ¥1,000,000,000 in bank";
|
||||
SWWM_ACHIEVEMENT_JUMP_TAG = "Verticality";
|
||||
SWWM_ACHIEVEMENT_JUMP_TXT = "Walljump %d times";
|
||||
SWWM_ACHIEVEMENT_EZKILL_TAG = "Well That was Easy";
|
||||
SWWM_ACHIEVEMENT_EZKILL_TXT = "Kill %d enemies with a single Ynykron Artifact shot (excluding altfire)";
|
||||
SWWM_ACHIEVEMENT_LIGMA_TAG = "Who's Steve Jobs?";
|
||||
SWWM_ACHIEVEMENT_LIGMA_TXT = "Kill an endgame boss with the Ynykron Artifact";
|
||||
SWWM_ACHIEVEMENT_YEET_TAG = "YEET";
|
||||
SWWM_ACHIEVEMENT_YEET_TXT = "Throw a Candygun right into the Icon of Sin's brains";
|
||||
SWWM_ACHIEVEMENT_MBF_TAG = "You can Pet the Dog";
|
||||
SWWM_ACHIEVEMENT_MBF_TXT = "Pet a dog";
|
||||
SWWM_ACHIEVEMENT_LIGHTNING_TAG = "John Romero's Curse";
|
||||
SWWM_ACHIEVEMENT_LIGHTNING_TXT = "Fry yourself by discharging an electric weapon in water";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TAG = "Dakka";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TXT = "Fire the Sheen HMG for one minute straight";
|
||||
SWWM_ACHIEVEMENT_ROAST_TAG = "Gravely Roast";
|
||||
SWWM_ACHIEVEMENT_ROAST_TXT = "Perform %d bayonet combos with the Quadravol";
|
||||
SWWM_ACHIEVEMENT_DAB_TAG = "HAHA DAB";
|
||||
SWWM_ACHIEVEMENT_DAB_TXT = "Gib %d enemies with the Itamex Hammer";
|
||||
SWWM_ACHIEVEMENT_HND_TAG = "High Noon";
|
||||
SWWM_ACHIEVEMENT_HND_TXT = "Land %d killing shots in a single Puntzer Beta reload";
|
||||
SWWM_ACHIEVEMENT_GEPGUN_TAG = "The Most Silent Takedown";
|
||||
SWWM_ACHIEVEMENT_GEPGUN_TXT = "Kill %d enemies with the Ray-Khom primary without alerting them";
|
||||
SWWM_ACHIEVEMENT_FULLER_TAG = "You Gained Brouzouf";
|
||||
SWWM_ACHIEVEMENT_FULLER_TXT = "Unload an entire mag in fuller auto with the Puntzer Gamma without missing a single shot";
|
||||
SWWM_ACHIEVEMENT_PENE_TAG = "Penetrator";
|
||||
SWWM_ACHIEVEMENT_PENE_TXT = "Strike through %d enemies in a row with a single Grand Lance secondary";
|
||||
SWWM_ACHIEVEMENT_ACID_TAG = "Fizzy Goodness";
|
||||
SWWM_ACHIEVEMENT_ACID_TXT = "Melt %d enemies with Telebrium Flechettes";
|
||||
SWWM_ACHIEVEMENT_SALT_TAG = "Maximum Oversalt";
|
||||
SWWM_ACHIEVEMENT_SALT_TXT = "Shoot 25 Saltshot rounds simultaneously";
|
||||
SWWM_ACHIEVEMENT_MEGA_TAG = "Megadeath";
|
||||
SWWM_ACHIEVEMENT_MEGA_TXT = "Kill a grand total of one million enemies";
|
||||
SWWM_ACHIEVEMENT_SANIC_TAG = "CHILLI DOGS";
|
||||
SWWM_ACHIEVEMENT_SANIC_TXT = "Reach a top speed of %d km/h";
|
||||
SWWM_ACHIEVEMENT_TELE_TAG = "A Soldier's Pastime";
|
||||
SWWM_ACHIEVEMENT_TELE_TXT = "Teleport some bread (a sandwich works too)";
|
||||
SWWM_ACHIEVEMENT_BUNE_TAG = "Legendary Lagomorph";
|
||||
SWWM_ACHIEVEMENT_BUNE_TXT = "Bunnyhop %d times";
|
||||
SWWM_ACHIEVEMENT_BONK_TAG = "Shock Resistant";
|
||||
SWWM_ACHIEVEMENT_BONK_TXT = "Bump into stuff %d times";
|
||||
SWWM_ACHIEVEMENT_ANOM_TAG = "Anomalous";
|
||||
SWWM_ACHIEVEMENT_ANOM_TXT = "Use %d Mykradvo Artifacts";
|
||||
SWWM_ACHIEVEMENT_ANOM_PIC = "graphics/Achievements/AchievementAnomaly.png";
|
||||
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_BALLS_TAG = "Slam your Balls";
|
||||
SWWM_ACHIEVEMENT_BALLS_TXT = "Land %d Lead Ball crits";
|
||||
SWWM_ACHIEVEMENT_BARRIER_TAG = "Green Filter";
|
||||
SWWM_ACHIEVEMENT_BARRIER_TXT = "Use %d Elemental Barriers";
|
||||
SWWM_ACHIEVEMENT_BONK_TAG = "Shock Resistant";
|
||||
SWWM_ACHIEVEMENT_BONK_TXT = "Bump into stuff %d times";
|
||||
SWWM_ACHIEVEMENT_BOSSDASH_TAG = "Headstrong";
|
||||
SWWM_ACHIEVEMENT_BOSSDASH_TXT = "Kill %d bosses by dashing into them";
|
||||
SWWM_ACHIEVEMENT_BRAKE_TAG = "No Brakes";
|
||||
SWWM_ACHIEVEMENT_BRAKE_TXT = "Consume your full fuel supply in a single dash %d times";
|
||||
SWWM_ACHIEVEMENT_BUNE_TAG = "Legendary Lagomorph";
|
||||
SWWM_ACHIEVEMENT_BUNE_TXT = "Bunnyhop %d times";
|
||||
SWWM_ACHIEVEMENT_BUSTIN_TAG = "Makes me Feel Good";
|
||||
SWWM_ACHIEVEMENT_BUSTIN_TXT = "Bust %d walls";
|
||||
SWWM_ACHIEVEMENT_BUTTS_TAG = "Let's get to Bashing Butts";
|
||||
SWWM_ACHIEVEMENT_BUTTS_TXT = "Kill %d enemies by dashing backwards";
|
||||
SWWM_ACHIEVEMENT_CHEAT_TAG = "It's Been Ten Years";
|
||||
SWWM_ACHIEVEMENT_CHEAT_TXT = "Use a cheat code from SWWM Platinum";
|
||||
SWWM_ACHIEVEMENT_CLIFFYB_TAG = "Errand Boy Bullshit";
|
||||
SWWM_ACHIEVEMENT_CLIFFYB_TXT = "Finish a map without collecting any keys";
|
||||
SWWM_ACHIEVEMENT_CLONK_TAG = "CLONK";
|
||||
SWWM_ACHIEVEMENT_CLONK_TXT = "Kill a boss with a Lead Ball crit";
|
||||
SWWM_ACHIEVEMENT_CONGA_TAG = "Conga Line of Death";
|
||||
SWWM_ACHIEVEMENT_CONGA_TXT = "Kill %d enemies with a single XSB round";
|
||||
SWWM_ACHIEVEMENT_DAB_TAG = "HAHA DAB";
|
||||
SWWM_ACHIEVEMENT_DAB_TXT = "Gib %d enemies with the Itamex Hammer";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TAG = "Dakka";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TXT = "Fire the Sheen HMG for one minute straight";
|
||||
SWWM_ACHIEVEMENT_DIME_TAG = "Icarus Dimes";
|
||||
SWWM_ACHIEVEMENT_DIME_TXT = "Blow yourself up with your own explosives";
|
||||
SWWM_ACHIEVEMENT_DOSH_TAG = "Unchecked Capitalism";
|
||||
SWWM_ACHIEVEMENT_DOSH_TXT = "Have ¥1,000,000,000 in bank";
|
||||
SWWM_ACHIEVEMENT_EVERYTHING_TAG = "The Demolitionist";
|
||||
SWWM_ACHIEVEMENT_EVERYTHING_TXT = "Unlock all achievements";
|
||||
SWWM_ACHIEVEMENT_EZKILL_TAG = "Well That was Easy";
|
||||
SWWM_ACHIEVEMENT_EZKILL_TXT = "Kill %d enemies with a single Ynykron Artifact shot (excluding altfire)";
|
||||
SWWM_ACHIEVEMENT_FLIGHT_TAG = "Demolitionist Space Program";
|
||||
SWWM_ACHIEVEMENT_FLIGHT_TXT = "Send a single enemy flying over %d map units";
|
||||
SWWM_ACHIEVEMENT_FRIEND_TAG = "Shaped like a Friend";
|
||||
SWWM_ACHIEVEMENT_FRIEND_TXT = "Befriend %d Cacodemons, Weredragons or Ettins with headpats";
|
||||
SWWM_ACHIEVEMENT_FUEL_TAG = "Hydrogenated";
|
||||
SWWM_ACHIEVEMENT_FUEL_TXT = "Consume a total of %dL of fuel";
|
||||
SWWM_ACHIEVEMENT_FULLER_TAG = "You Gained Brouzouf";
|
||||
SWWM_ACHIEVEMENT_FULLER_TXT = "Unload an entire mag in fuller auto with the Puntzer Gamma without missing a single shot";
|
||||
SWWM_ACHIEVEMENT_GCSANDWICH_TAG = "A Little Sandwich, as a Treat";
|
||||
SWWM_ACHIEVEMENT_GCSANDWICH_TXT = "Use %d Grilled Cheese Sandwiches";
|
||||
SWWM_ACHIEVEMENT_GEPGUN_TAG = "The Most Silent Takedown";
|
||||
SWWM_ACHIEVEMENT_GEPGUN_TXT = "Kill %d enemies with the Ray-Khom primary without alerting them";
|
||||
SWWM_ACHIEVEMENT_GHOST_TAG = "Cloak Engaged";
|
||||
SWWM_ACHIEVEMENT_GHOST_TXT = "Use %d Ghost Artifacts";
|
||||
SWWM_ACHIEVEMENT_GIB_TAG = "Gibbitude";
|
||||
SWWM_ACHIEVEMENT_GIB_TXT = "Overkill %d enemies";
|
||||
SWWM_ACHIEVEMENT_GOLDEN_TAG = "Golden Shower";
|
||||
SWWM_ACHIEVEMENT_GOLDEN_TXT = "Use %d golden shells";
|
||||
SWWM_ACHIEVEMENT_GRAVITY_TAG = "Decent Ascent";
|
||||
SWWM_ACHIEVEMENT_GRAVITY_TXT = "Use %d Gravity Suppressors";
|
||||
SWWM_ACHIEVEMENT_HND_TAG = "High Noon";
|
||||
SWWM_ACHIEVEMENT_HND_TXT = "Land %d killing shots in a single Puntzer Beta reload";
|
||||
SWWM_ACHIEVEMENT_IWAD_TAG = "Mx. Worldwide";
|
||||
SWWM_ACHIEVEMENT_IWAD_TXT = "Play on all supported games";
|
||||
SWWM_ACHIEVEMENT_JUMP_TAG = "Verticality";
|
||||
SWWM_ACHIEVEMENT_JUMP_TXT = "Walljump %d times";
|
||||
SWWM_ACHIEVEMENT_LEAD_TAG = "Lead Delivery";
|
||||
SWWM_ACHIEVEMENT_LEAD_TXT = "Hit an enemy dead-on with the Eviscerator secondary from over %d map units away";
|
||||
SWWM_ACHIEVEMENT_LIGHTNING_TAG = "John Romero's Curse";
|
||||
SWWM_ACHIEVEMENT_LIGHTNING_TXT = "Fry yourself by discharging an electric weapon in water";
|
||||
SWWM_ACHIEVEMENT_LIGMA_TAG = "Who's Steve Jobs?";
|
||||
SWWM_ACHIEVEMENT_LIGMA_TXT = "Kill an endgame boss with the Ynykron Artifact";
|
||||
SWWM_ACHIEVEMENT_LOVE_TAG = "Lethal Love";
|
||||
SWWM_ACHIEVEMENT_LOVE_TXT = "Kill %d enemies with a blown kiss (not counting insta-kills)";
|
||||
SWWM_ACHIEVEMENT_MASHIRO_TAG = "Layers of White";
|
||||
SWWM_ACHIEVEMENT_MASHIRO_TXT = "Summon the White Lady";
|
||||
SWWM_ACHIEVEMENT_MBF_TAG = "You can Pet the Dog";
|
||||
SWWM_ACHIEVEMENT_MBF_TXT = "Pet a dog";
|
||||
SWWM_ACHIEVEMENT_MEGA_TAG = "Megadeath";
|
||||
SWWM_ACHIEVEMENT_MEGA_TXT = "Kill a grand total of one million enemies";
|
||||
SWWM_ACHIEVEMENT_MOTH_TAG = "Mother";
|
||||
SWWM_ACHIEVEMENT_MOTH_TXT = "Gather %d moths";
|
||||
SWWM_ACHIEVEMENT_NICE_TAG = "NICE";
|
||||
SWWM_ACHIEVEMENT_NICE_TXT = "Finish a level with 69 health";
|
||||
SWWM_ACHIEVEMENT_ONEGUY_TAG = "Fuck that Guy in Particular";
|
||||
SWWM_ACHIEVEMENT_ONEGUY_TXT = "Use the Ynykron Artifact to kill a single non-boss enemy";
|
||||
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";
|
||||
SWWM_ACHIEVEMENT_OOPSIE_TXT = "Erase yourself with the Ynykron Artifact";
|
||||
SWWM_ACHIEVEMENT_PARRY_TAG = "Parry King";
|
||||
SWWM_ACHIEVEMENT_PARRY_TXT = "Deflect %d projectiles";
|
||||
SWWM_ACHIEVEMENT_PAR_TAG = "Fast";
|
||||
SWWM_ACHIEVEMENT_PAR_TXT = "Beat the par time in %d maps";
|
||||
SWWM_ACHIEVEMENT_PENE_TAG = "Penetrator";
|
||||
SWWM_ACHIEVEMENT_PENE_TXT = "Strike through %d enemies in a row with a single Grand Lance secondary";
|
||||
SWWM_ACHIEVEMENT_PLUSH_TAG = "Lovestruck";
|
||||
SWWM_ACHIEVEMENT_PLUSH_TXT = "Play with the Saya or Kirin plushies %d times in the same session";
|
||||
SWWM_ACHIEVEMENT_RAGE_TAG = "No Talk me Angy";
|
||||
SWWM_ACHIEVEMENT_RAGE_TXT = "Use %d Ragekits";
|
||||
SWWM_ACHIEVEMENT_REFLECT_TAG = "Return to Sender";
|
||||
SWWM_ACHIEVEMENT_REFLECT_TXT = "Kill %d enemies with parried projectiles";
|
||||
SWWM_ACHIEVEMENT_REFRESH_TAG = "Stay Fresh";
|
||||
SWWM_ACHIEVEMENT_REFRESH_TXT = "Use %d Refreshers";
|
||||
SWWM_ACHIEVEMENT_ROAST_TAG = "Gravely Roast";
|
||||
SWWM_ACHIEVEMENT_ROAST_TXT = "Perform %d bayonet combos with the Quadravol";
|
||||
SWWM_ACHIEVEMENT_SALT_TAG = "Maximum Oversalt";
|
||||
SWWM_ACHIEVEMENT_SALT_TXT = "Shoot 25 Saltshot rounds simultaneously";
|
||||
SWWM_ACHIEVEMENT_SANIC_TAG = "CHILLI DOGS";
|
||||
SWWM_ACHIEVEMENT_SANIC_TXT = "Reach a top speed of %d km/h";
|
||||
SWWM_ACHIEVEMENT_SEKIRO_TAG = "Hesitation is Defeat";
|
||||
SWWM_ACHIEVEMENT_SEKIRO_TXT = "Die and reboot two times in the same map";
|
||||
SWWM_ACHIEVEMENT_SHOCK_TAG = "Shockmaster";
|
||||
SWWM_ACHIEVEMENT_SHOCK_TXT = "Perform %d Biospark combos";
|
||||
SWWM_ACHIEVEMENT_SLAYER_TAG = "I am Become Death";
|
||||
SWWM_ACHIEVEMENT_SLAYER_TXT = "Kill %d enemies with a single Slayer Warhead";
|
||||
SWWM_ACHIEVEMENT_SLEMG_TAG = "The Sledge Method";
|
||||
SWWM_ACHIEVEMENT_SLEMG_TXT = "Activate %d switches by punching them";
|
||||
SWWM_ACHIEVEMENT_SNEEZE_TAG = "Humiliator";
|
||||
SWWM_ACHIEVEMENT_SNEEZE_TXT = "Kill %d enemies with the Deep Impact primary fire";
|
||||
SWWM_ACHIEVEMENT_STEP_TAG = "Steppy";
|
||||
SWWM_ACHIEVEMENT_STEP_TXT = "Stand on a single enemy's head for %d seconds";
|
||||
SWWM_ACHIEVEMENT_STOMP_TAG = "Italian Plumber Complex";
|
||||
SWWM_ACHIEVEMENT_STOMP_TXT = "Kill %d enemies by standing on them";
|
||||
SWWM_ACHIEVEMENT_SUNNY_TAG = "Sunny D";
|
||||
SWWM_ACHIEVEMENT_SUNNY_TXT = "Use %d Invinciballs";
|
||||
SWWM_ACHIEVEMENT_TELE_TAG = "A Soldier's Pastime";
|
||||
SWWM_ACHIEVEMENT_TELE_TXT = "Teleport some bread (a sandwich works too)";
|
||||
SWWM_ACHIEVEMENT_THICC_TAG = "The Ass was Fat";
|
||||
SWWM_ACHIEVEMENT_THICC_TXT = "Kill %d enemies by ground pounding";
|
||||
SWWM_ACHIEVEMENT_THRUWALL_TAG = "Knock Knock";
|
||||
SWWM_ACHIEVEMENT_THRUWALL_TXT = "Kill %d enemies through walls with the Silver Bullet";
|
||||
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)";
|
||||
SWWM_ACHIEVEMENT_WAVE_TAG = "Sayonara, Scumbag";
|
||||
SWWM_ACHIEVEMENT_WAVE_TXT = "Wave at a dying enemy";
|
||||
SWWM_ACHIEVEMENT_YEET_TAG = "YEET";
|
||||
SWWM_ACHIEVEMENT_YEET_TXT = "Throw a Candygun right into the Icon of Sin's brains";
|
||||
|
|
|
|||
259
language.es_base
|
|
@ -731,144 +731,145 @@ SWWM_INTERTIP120 = "Me he dado cuenta de que si te pones a hablar, a tu boca se
|
|||
// intermission fanart
|
||||
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_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";
|
||||
SWWM_ACHIEVEMENT_OOPSIE_TXT = "Bórrate con el Artefacto Ynykron";
|
||||
SWWM_ACHIEVEMENT_GHOST_TAG = "Camuflaje Activado";
|
||||
SWWM_ACHIEVEMENT_GHOST_TXT = "Usa %d Artefactos Fantasma";
|
||||
SWWM_ACHIEVEMENT_CLONK_TAG = "CLONK";
|
||||
SWWM_ACHIEVEMENT_CLONK_TXT = "Mata a un jefe con un crítico de Bola de Plomo";
|
||||
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_GRAVITY_TAG = "Ascenso Decente";
|
||||
SWWM_ACHIEVEMENT_GRAVITY_TXT = "Usa %d Supresores de Gravedad";
|
||||
SWWM_ACHIEVEMENT_FLIGHT_TAG = "Programa Espacial Demolicionista";
|
||||
SWWM_ACHIEVEMENT_FLIGHT_TXT = "Lanza a un enemigo en volandas más allá de %d unidades de mapa";
|
||||
SWWM_ACHIEVEMENT_CLIFFYB_TAG = "Mierdas de Recadero";
|
||||
SWWM_ACHIEVEMENT_CLIFFYB_TXT = "Termina un mapa sin obtener ninguna llave";
|
||||
SWWM_ACHIEVEMENT_PAR_TAG = "Rápido";
|
||||
SWWM_ACHIEVEMENT_PAR_TXT = "Supera el tiempo par en %d mapas";
|
||||
SWWM_ACHIEVEMENT_ONEGUY_TAG = "A la Mierda el Tío Ese";
|
||||
SWWM_ACHIEVEMENT_ONEGUY_TXT = "Usa el Artefacto Ynykron para matar a un único enemigo no-jefe";
|
||||
SWWM_ACHIEVEMENT_GOLDEN_TAG = "Lluvia Dorada";
|
||||
SWWM_ACHIEVEMENT_GOLDEN_TXT = "Usa %d cartuchos dorados";
|
||||
SWWM_ACHIEVEMENT_GIB_TAG = "Carnaza";
|
||||
SWWM_ACHIEVEMENT_GIB_TXT = "Haz overkill a %d enemigos";
|
||||
SWWM_ACHIEVEMENT_BARRIER_TAG = "Filtro Verde";
|
||||
SWWM_ACHIEVEMENT_BARRIER_TXT = "Usa %d Barreras Elementales";
|
||||
SWWM_ACHIEVEMENT_BOSSDASH_TAG = "Cabezonería";
|
||||
SWWM_ACHIEVEMENT_BOSSDASH_TXT = "Mata %d jefes esprintando contra ellos";
|
||||
SWWM_ACHIEVEMENT_SNEEZE_TAG = "Humillador";
|
||||
SWWM_ACHIEVEMENT_SNEEZE_TXT = "Mata %d enemigos con el fuego primario del Deep Impact";
|
||||
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_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_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";
|
||||
SWWM_ACHIEVEMENT_MASHIRO_TXT = "Invoca a la Dama Blanca";
|
||||
SWWM_ACHIEVEMENT_LEAD_TAG = "Reparto de Plomo";
|
||||
SWWM_ACHIEVEMENT_LEAD_TXT = "Alcanza a un enemigo de lleno con el secundario del Eviscerator desde más de %d unidades de mapa";
|
||||
SWWM_ACHIEVEMENT_LOVE_TAG = "Amor Letal";
|
||||
SWWM_ACHIEVEMENT_LOVE_TXT = "Mata %d enemigos con un beso lanzado (sin contar insta-kills)";
|
||||
SWWM_ACHIEVEMENT_BUTTS_TAG = "Esos Glúteos Firmes";
|
||||
SWWM_ACHIEVEMENT_BUTTS_TXT = "Mata %d enemigos esprintando marcha atrás";
|
||||
SWWM_ACHIEVEMENT_PLUSH_TAG = "Amorcito";
|
||||
SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con los peluches de Saya o Kirin %d veces en la misma partida";
|
||||
SWWM_ACHIEVEMENT_BUSTIN_TAG = "Me Hace Sentir Bien";
|
||||
SWWM_ACHIEVEMENT_BUSTIN_TXT = "Revienta %d paredes";
|
||||
SWWM_ACHIEVEMENT_MOTH_TAG = "Madre Polilla";
|
||||
SWWM_ACHIEVEMENT_MOTH_TXT = "Reúne %d polillas";
|
||||
SWWM_ACHIEVEMENT_IWAD_TXT = "Juega en todos los juegos soportados";
|
||||
SWWM_ACHIEVEMENT_BRAKE_TAG = "Sin Frenos";
|
||||
SWWM_ACHIEVEMENT_BRAKE_TXT = "Consume toda tu capacidad de combustible en un solo esprint %d veces";
|
||||
SWWM_ACHIEVEMENT_RAGE_TAG = "No Hablo me Enfado";
|
||||
SWWM_ACHIEVEMENT_RAGE_TXT = "Usa %d Ragekits";
|
||||
SWWM_ACHIEVEMENT_ABORT_TAG = "Uy lo He Roto";
|
||||
SWWM_ACHIEVEMENT_ABORT_TXT = "Causa un aborto de MV";
|
||||
SWWM_ACHIEVEMENT_PARRY_TAG = "Rey del Parry";
|
||||
SWWM_ACHIEVEMENT_PARRY_TXT = "Desvía %d proyectiles";
|
||||
SWWM_ACHIEVEMENT_ACID_TAG = "La Buena Efervescencia";
|
||||
SWWM_ACHIEVEMENT_ACID_TXT = "Derrite %d enemigos con Flechettes de Telebrium";
|
||||
SWWM_ACHIEVEMENT_ALLCOLL_TAG = "El Set Completo";
|
||||
SWWM_ACHIEVEMENT_ALLCOLL_TXT = "Obtén todos los coleccionables en una sola partida";
|
||||
SWWM_ACHIEVEMENT_ALLITEMS_TAG = "Recolector";
|
||||
SWWM_ACHIEVEMENT_ALLITEMS_TXT = "Obtén 100%% ítems en %d mapas";
|
||||
SWWM_ACHIEVEMENT_ALLKILLS_TAG = "Control de Plagas";
|
||||
SWWM_ACHIEVEMENT_ALLKILLS_TXT = "Obtén 100%% muertes en %d mapas";
|
||||
SWWM_ACHIEVEMENT_ALLSECRETS_TAG = "Detective Excelente";
|
||||
SWWM_ACHIEVEMENT_ALLSECRETS_TXT = "Obtén 100%% secretos en %d mapas";
|
||||
SWWM_ACHIEVEMENT_REFLECT_TAG = "Devuelto a Remitente";
|
||||
SWWM_ACHIEVEMENT_REFLECT_TXT = "Mata %d enemigos con proyectiles desviados";
|
||||
SWWM_ACHIEVEMENT_SEKIRO_TAG = "Dudar es Fracasar";
|
||||
SWWM_ACHIEVEMENT_SEKIRO_TXT = "Muere y reinicia dos veces en el mismo mapa";
|
||||
SWWM_ACHIEVEMENT_WAVE_TAG = "Sayonara, Capullo";
|
||||
SWWM_ACHIEVEMENT_WAVE_TXT = "Saluda a un enemigo muriéndose";
|
||||
SWWM_ACHIEVEMENT_FRIEND_TAG = "Con Forma de Amigo";
|
||||
SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %d Cacodemonios, Hombres-Dragón o Ettins a base de caricias";
|
||||
SWWM_ACHIEVEMENT_SHOCK_TXT = "Realiza %d combos de Biospark";
|
||||
SWWM_ACHIEVEMENT_BALLS_TAG = "Machácate las Bolas";
|
||||
SWWM_ACHIEVEMENT_BALLS_TXT = "Consigue %d críticos de Bola de Plomo";
|
||||
SWWM_ACHIEVEMENT_REFRESH_TAG = "Siempre Fresco";
|
||||
SWWM_ACHIEVEMENT_REFRESH_TXT = "Usa %d Refrescadores";
|
||||
SWWM_ACHIEVEMENT_STEP_TAG = "Pisadita";
|
||||
SWWM_ACHIEVEMENT_STEP_TXT = "Mantente de pie en la cabeza de un solo enemigo durante %d segundos";
|
||||
SWWM_ACHIEVEMENT_SUNNY_TXT = "Usa %d Invincibolas";
|
||||
SWWM_ACHIEVEMENT_THICC_TAG = "El Culo era Gordo";
|
||||
SWWM_ACHIEVEMENT_THICC_TXT = "Mata %d enemigos a base de estampidas en el suelo";
|
||||
SWWM_ACHIEVEMENT_EVERYTHING_TAG = "La Demolicionista";
|
||||
SWWM_ACHIEVEMENT_EVERYTHING_TXT = "Desbloquea todos los logros";
|
||||
SWWM_ACHIEVEMENT_ALLCOLL_TAG = "El Set Completo";
|
||||
SWWM_ACHIEVEMENT_ALLCOLL_TXT = "Obtén todos los coleccionables en una sola partida";
|
||||
SWWM_ACHIEVEMENT_SLEMG_TAG = "El Método Sledge";
|
||||
SWWM_ACHIEVEMENT_SLEMG_TXT = "Activa %d interruptores a puñetazos";
|
||||
SWWM_ACHIEVEMENT_DOSH_TAG = "Capitalismo Desenfrenado";
|
||||
SWWM_ACHIEVEMENT_DOSH_TXT = "Ten ¥1.000.000.000 en mano";
|
||||
SWWM_ACHIEVEMENT_JUMP_TAG = "Verticalidad";
|
||||
SWWM_ACHIEVEMENT_JUMP_TXT = "Salta paredes %d veces";
|
||||
SWWM_ACHIEVEMENT_EZKILL_TAG = "Eso Estuvo Fácil";
|
||||
SWWM_ACHIEVEMENT_EZKILL_TXT = "Mata %d enemigos con un solo disparo de Artefacto Ynykron (excluyendo modo secundario)";
|
||||
SWWM_ACHIEVEMENT_LIGMA_TAG = "¿Quien es Steve Jobs?";
|
||||
SWWM_ACHIEVEMENT_LIGMA_TXT = "Mata a un jefe final con el Artefacto Ynykron";
|
||||
SWWM_ACHIEVEMENT_YEET_TXT = "Lanza una Pistola Caramelo justo dentro del cerebro del Icono del Pecado";
|
||||
SWWM_ACHIEVEMENT_MBF_TAG = "Puedes Acariciar el Perro";
|
||||
SWWM_ACHIEVEMENT_MBF_TXT = "Acaricia un perro";
|
||||
SWWM_ACHIEVEMENT_LIGHTNING_TAG = "Maldición de John Romero";
|
||||
SWWM_ACHIEVEMENT_LIGHTNING_TXT = "Achichárrate descargando un arma eléctrica en el agua";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TXT = "Dispara la Ametralladora Sheen durante un minuto entero";
|
||||
SWWM_ACHIEVEMENT_ROAST_TAG = "Ensarta en los Fuegos del Hades";
|
||||
SWWM_ACHIEVEMENT_ROAST_TXT = "Realiza %d combos de bayoneta con la Quadravol";
|
||||
SWWM_ACHIEVEMENT_DAB_TXT = "Revienta %d enemigos con el Mazo Itamex";
|
||||
SWWM_ACHIEVEMENT_HND_TAG = "Mediodía";
|
||||
SWWM_ACHIEVEMENT_HND_TXT = "Realiza %d disparos mortales en una única recarga de Puntzer Beta";
|
||||
SWWM_ACHIEVEMENT_GEPGUN_TAG = "El Derribo Más Silencioso";
|
||||
SWWM_ACHIEVEMENT_GEPGUN_TXT = "Mata %d enemigos con el fuego primario de la Ray-Khom sin alertarlos";
|
||||
SWWM_ACHIEVEMENT_FULLER_TAG = "Has Ganado Brouzouf";
|
||||
SWWM_ACHIEVEMENT_FULLER_TXT = "Vacía un cargador entero en super-automático con el Puntzer Gamma sin fallar un solo disparo";
|
||||
SWWM_ACHIEVEMENT_PENE_TAG = "Penetrador";
|
||||
SWWM_ACHIEVEMENT_PENE_TXT = "Atraviesa %d enemigos en fila con un solo secundario de la Gran Lanza";
|
||||
SWWM_ACHIEVEMENT_ACID_TAG = "La Buena Efervescencia";
|
||||
SWWM_ACHIEVEMENT_ACID_TXT = "Derrite %d enemigos con Flechettes de Telebrium";
|
||||
SWWM_ACHIEVEMENT_SALT_TAG = "Sobresalado Máximo";
|
||||
SWWM_ACHIEVEMENT_SALT_TXT = "Dispara 25 cartuchos de sal al mismo tiempo";
|
||||
SWWM_ACHIEVEMENT_MEGA_TAG = "Megamuerte";
|
||||
SWWM_ACHIEVEMENT_MEGA_TXT = "Mata un gran total de un millón de enemigos";
|
||||
SWWM_ACHIEVEMENT_SANIC_TAG = "PERRITOS DE CHILE";
|
||||
SWWM_ACHIEVEMENT_SANIC_TXT = "Alcanza una velocidad punta de %d km/h";
|
||||
SWWM_ACHIEVEMENT_TELE_TAG = "Pasatiempo de Soldado";
|
||||
SWWM_ACHIEVEMENT_TELE_TXT = "Teletransporta pan (un sandwich también vale)";
|
||||
SWWM_ACHIEVEMENT_BUNE_TAG = "Lagomorfo Legendario";
|
||||
SWWM_ACHIEVEMENT_BUNE_TXT = "Realiza %d bunnyhops";
|
||||
SWWM_ACHIEVEMENT_BONK_TAG = "Resistente a Choques";
|
||||
SWWM_ACHIEVEMENT_BONK_TXT = "Choca %d veces";
|
||||
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_BALLS_TAG = "Machácate las Bolas";
|
||||
SWWM_ACHIEVEMENT_BALLS_TXT = "Consigue %d críticos de Bola de Plomo";
|
||||
SWWM_ACHIEVEMENT_BARRIER_TAG = "Filtro Verde";
|
||||
SWWM_ACHIEVEMENT_BARRIER_TXT = "Usa %d Barreras Elementales";
|
||||
SWWM_ACHIEVEMENT_BONK_TAG = "Resistente a Choques";
|
||||
SWWM_ACHIEVEMENT_BONK_TXT = "Choca %d veces";
|
||||
SWWM_ACHIEVEMENT_BOSSDASH_TAG = "Cabezonería";
|
||||
SWWM_ACHIEVEMENT_BOSSDASH_TXT = "Mata %d jefes esprintando contra ellos";
|
||||
SWWM_ACHIEVEMENT_BRAKE_TAG = "Sin Frenos";
|
||||
SWWM_ACHIEVEMENT_BRAKE_TXT = "Consume toda tu capacidad de combustible en un solo esprint %d veces";
|
||||
SWWM_ACHIEVEMENT_BUNE_TAG = "Lagomorfo Legendario";
|
||||
SWWM_ACHIEVEMENT_BUNE_TXT = "Realiza %d bunnyhops";
|
||||
SWWM_ACHIEVEMENT_BUSTIN_TAG = "Me Hace Sentir Bien";
|
||||
SWWM_ACHIEVEMENT_BUSTIN_TXT = "Revienta %d paredes";
|
||||
SWWM_ACHIEVEMENT_BUTTS_TAG = "Esos Glúteos Firmes";
|
||||
SWWM_ACHIEVEMENT_BUTTS_TXT = "Mata %d enemigos esprintando marcha atrás";
|
||||
SWWM_ACHIEVEMENT_CHEAT_TAG = "Han Pasado Diez Años";
|
||||
SWWM_ACHIEVEMENT_CHEAT_TXT = "Usa un código trampa de SWWM Platinum";
|
||||
SWWM_ACHIEVEMENT_CLIFFYB_TAG = "Mierdas de Recadero";
|
||||
SWWM_ACHIEVEMENT_CLIFFYB_TXT = "Termina un mapa sin obtener ninguna llave";
|
||||
SWWM_ACHIEVEMENT_CLONK_TAG = "CLONK";
|
||||
SWWM_ACHIEVEMENT_CLONK_TXT = "Mata a un jefe con un crítico de Bola de Plomo";
|
||||
SWWM_ACHIEVEMENT_CONGA_TAG = "Conga de la Muerte";
|
||||
SWWM_ACHIEVEMENT_CONGA_TXT = "Mata %d enemigos con una sola bala XSB";
|
||||
SWWM_ACHIEVEMENT_DAB_TXT = "Revienta %d enemigos con el Mazo Itamex";
|
||||
SWWM_ACHIEVEMENT_DAKKA_TXT = "Dispara la Ametralladora Sheen durante un minuto entero";
|
||||
SWWM_ACHIEVEMENT_DIME_TXT = "Reviéntate con tus propios explosivos";
|
||||
SWWM_ACHIEVEMENT_DOSH_TAG = "Capitalismo Desenfrenado";
|
||||
SWWM_ACHIEVEMENT_DOSH_TXT = "Ten ¥1.000.000.000 en mano";
|
||||
SWWM_ACHIEVEMENT_EVERYTHING_TAG = "La Demolicionista";
|
||||
SWWM_ACHIEVEMENT_EVERYTHING_TXT = "Desbloquea todos los logros";
|
||||
SWWM_ACHIEVEMENT_EZKILL_TAG = "Eso Estuvo Fácil";
|
||||
SWWM_ACHIEVEMENT_EZKILL_TXT = "Mata %d enemigos con un solo disparo de Artefacto Ynykron (excluyendo modo secundario)";
|
||||
SWWM_ACHIEVEMENT_FLIGHT_TAG = "Programa Espacial Demolicionista";
|
||||
SWWM_ACHIEVEMENT_FLIGHT_TXT = "Lanza a un enemigo en volandas más allá de %d unidades de mapa";
|
||||
SWWM_ACHIEVEMENT_FRIEND_TAG = "Con Forma de Amigo";
|
||||
SWWM_ACHIEVEMENT_FRIEND_TXT = "Entabla amistad con %d Cacodemonios, Hombres-Dragón o Ettins a base de caricias";
|
||||
SWWM_ACHIEVEMENT_FUEL_TAG = "Hidrogenado";
|
||||
SWWM_ACHIEVEMENT_FUEL_TXT = "Consume un total de %dL de combustible";
|
||||
SWWM_ACHIEVEMENT_FULLER_TAG = "Has Ganado Brouzouf";
|
||||
SWWM_ACHIEVEMENT_FULLER_TXT = "Vacía un cargador entero en super-automático con el Puntzer Gamma sin fallar un solo disparo";
|
||||
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_GEPGUN_TAG = "El Derribo Más Silencioso";
|
||||
SWWM_ACHIEVEMENT_GEPGUN_TXT = "Mata %d enemigos con el fuego primario de la Ray-Khom sin alertarlos";
|
||||
SWWM_ACHIEVEMENT_GHOST_TAG = "Camuflaje Activado";
|
||||
SWWM_ACHIEVEMENT_GHOST_TXT = "Usa %d Artefactos Fantasma";
|
||||
SWWM_ACHIEVEMENT_GIB_TAG = "Carnaza";
|
||||
SWWM_ACHIEVEMENT_GIB_TXT = "Haz overkill a %d enemigos";
|
||||
SWWM_ACHIEVEMENT_GOLDEN_TAG = "Lluvia Dorada";
|
||||
SWWM_ACHIEVEMENT_GOLDEN_TXT = "Usa %d cartuchos dorados";
|
||||
SWWM_ACHIEVEMENT_GRAVITY_TAG = "Ascenso Decente";
|
||||
SWWM_ACHIEVEMENT_GRAVITY_TXT = "Usa %d Supresores de Gravedad";
|
||||
SWWM_ACHIEVEMENT_HND_TAG = "Mediodía";
|
||||
SWWM_ACHIEVEMENT_HND_TXT = "Realiza %d disparos mortales en una única recarga de Puntzer Beta";
|
||||
SWWM_ACHIEVEMENT_IWAD_TXT = "Juega en todos los juegos soportados";
|
||||
SWWM_ACHIEVEMENT_JUMP_TAG = "Verticalidad";
|
||||
SWWM_ACHIEVEMENT_JUMP_TXT = "Salta paredes %d veces";
|
||||
SWWM_ACHIEVEMENT_LEAD_TAG = "Reparto de Plomo";
|
||||
SWWM_ACHIEVEMENT_LEAD_TXT = "Alcanza a un enemigo de lleno con el secundario del Eviscerator desde más de %d unidades de mapa";
|
||||
SWWM_ACHIEVEMENT_LIGHTNING_TAG = "Maldición de John Romero";
|
||||
SWWM_ACHIEVEMENT_LIGHTNING_TXT = "Achichárrate descargando un arma eléctrica en el agua";
|
||||
SWWM_ACHIEVEMENT_LIGMA_TAG = "¿Quien es Steve Jobs?";
|
||||
SWWM_ACHIEVEMENT_LIGMA_TXT = "Mata a un jefe final con el Artefacto Ynykron";
|
||||
SWWM_ACHIEVEMENT_LOVE_TAG = "Amor Letal";
|
||||
SWWM_ACHIEVEMENT_LOVE_TXT = "Mata %d enemigos con un beso lanzado (sin contar insta-kills)";
|
||||
SWWM_ACHIEVEMENT_MASHIRO_TAG = "Capas de Blanco";
|
||||
SWWM_ACHIEVEMENT_MASHIRO_TXT = "Invoca a la Dama Blanca";
|
||||
SWWM_ACHIEVEMENT_MBF_TAG = "Puedes Acariciar el Perro";
|
||||
SWWM_ACHIEVEMENT_MBF_TXT = "Acaricia un perro";
|
||||
SWWM_ACHIEVEMENT_MEGA_TAG = "Megamuerte";
|
||||
SWWM_ACHIEVEMENT_MEGA_TXT = "Mata un gran total de un millón de enemigos";
|
||||
SWWM_ACHIEVEMENT_MOTH_TAG = "Madre Polilla";
|
||||
SWWM_ACHIEVEMENT_MOTH_TXT = "Reúne %d polillas";
|
||||
SWWM_ACHIEVEMENT_NICE_TXT = "Termina un nivel con 69 de vida";
|
||||
SWWM_ACHIEVEMENT_ONEGUY_TAG = "A la Mierda el Tío Ese";
|
||||
SWWM_ACHIEVEMENT_ONEGUY_TXT = "Usa el Artefacto Ynykron para matar a un único enemigo no-jefe";
|
||||
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";
|
||||
SWWM_ACHIEVEMENT_OOPSIE_TXT = "Bórrate con el Artefacto Ynykron";
|
||||
SWWM_ACHIEVEMENT_PARRY_TAG = "Rey del Parry";
|
||||
SWWM_ACHIEVEMENT_PARRY_TXT = "Desvía %d proyectiles";
|
||||
SWWM_ACHIEVEMENT_PAR_TAG = "Rápido";
|
||||
SWWM_ACHIEVEMENT_PAR_TXT = "Supera el tiempo par en %d mapas";
|
||||
SWWM_ACHIEVEMENT_PENE_TAG = "Penetrador";
|
||||
SWWM_ACHIEVEMENT_PENE_TXT = "Atraviesa %d enemigos en fila con un solo secundario de la Gran Lanza";
|
||||
SWWM_ACHIEVEMENT_PLUSH_TAG = "Amorcito";
|
||||
SWWM_ACHIEVEMENT_PLUSH_TXT = "Juega con los peluches de Saya o Kirin %d veces en la misma partida";
|
||||
SWWM_ACHIEVEMENT_RAGE_TAG = "No Hablo me Enfado";
|
||||
SWWM_ACHIEVEMENT_RAGE_TXT = "Usa %d Ragekits";
|
||||
SWWM_ACHIEVEMENT_REFLECT_TAG = "Devuelto a Remitente";
|
||||
SWWM_ACHIEVEMENT_REFLECT_TXT = "Mata %d enemigos con proyectiles desviados";
|
||||
SWWM_ACHIEVEMENT_REFRESH_TAG = "Siempre Fresco";
|
||||
SWWM_ACHIEVEMENT_REFRESH_TXT = "Usa %d Refrescadores";
|
||||
SWWM_ACHIEVEMENT_ROAST_TAG = "Ensarta en los Fuegos del Hades";
|
||||
SWWM_ACHIEVEMENT_ROAST_TXT = "Realiza %d combos de bayoneta con la Quadravol";
|
||||
SWWM_ACHIEVEMENT_SALT_TAG = "Sobresalado Máximo";
|
||||
SWWM_ACHIEVEMENT_SALT_TXT = "Dispara 25 cartuchos de sal al mismo tiempo";
|
||||
SWWM_ACHIEVEMENT_SANIC_TAG = "PERRITOS DE CHILE";
|
||||
SWWM_ACHIEVEMENT_SANIC_TXT = "Alcanza una velocidad punta de %d km/h";
|
||||
SWWM_ACHIEVEMENT_SEKIRO_TAG = "Dudar es Fracasar";
|
||||
SWWM_ACHIEVEMENT_SEKIRO_TXT = "Muere y reinicia dos veces en el mismo mapa";
|
||||
SWWM_ACHIEVEMENT_SHOCK_TXT = "Realiza %d combos de Biospark";
|
||||
SWWM_ACHIEVEMENT_SLAYER_TAG = "Me he Convertido en Muerte";
|
||||
SWWM_ACHIEVEMENT_SLAYER_TXT = "Mata %d enemigos con una sola Cabeza Nuclear Slayer";
|
||||
SWWM_ACHIEVEMENT_SLEMG_TAG = "El Método Sledge";
|
||||
SWWM_ACHIEVEMENT_SLEMG_TXT = "Activa %d interruptores a puñetazos";
|
||||
SWWM_ACHIEVEMENT_SNEEZE_TAG = "Humillador";
|
||||
SWWM_ACHIEVEMENT_SNEEZE_TXT = "Mata %d enemigos con el fuego primario del Deep Impact";
|
||||
SWWM_ACHIEVEMENT_STEP_TAG = "Pisadita";
|
||||
SWWM_ACHIEVEMENT_STEP_TXT = "Mantente de pie en la cabeza de un solo enemigo durante %d segundos";
|
||||
SWWM_ACHIEVEMENT_STOMP_TAG = "Complejo de Fontanero Italiano";
|
||||
SWWM_ACHIEVEMENT_STOMP_TXT = "Mata %d enemigos saltando encima";
|
||||
SWWM_ACHIEVEMENT_SUNNY_TXT = "Usa %d Invincibolas";
|
||||
SWWM_ACHIEVEMENT_TELE_TAG = "Pasatiempo de Soldado";
|
||||
SWWM_ACHIEVEMENT_TELE_TXT = "Teletransporta pan (un sandwich también vale)";
|
||||
SWWM_ACHIEVEMENT_THICC_TAG = "El Culo era Gordo";
|
||||
SWWM_ACHIEVEMENT_THICC_TXT = "Mata %d enemigos a base de estampidas en el suelo";
|
||||
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_WANTDIE_TAG = "Mata a tu Jefe";
|
||||
SWWM_ACHIEVEMENT_WANTDIE_TXT = "Despeja un mapa en la dificultad más alta (sin morir)";
|
||||
SWWM_ACHIEVEMENT_WAVE_TAG = "Sayonara, Capullo";
|
||||
SWWM_ACHIEVEMENT_WAVE_TXT = "Saluda a un enemigo muriéndose";
|
||||
SWWM_ACHIEVEMENT_YEET_TXT = "Lanza una Pistola Caramelo justo dentro del cerebro del Icono del Pecado";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r399 \cu(Wed 24 Mar 15:37:04 CET 2021)\c-";
|
||||
SWWM_SHORTVER="\cw0.9.11b-pre r399 \cu(2021-03-24 15:37:04)\c-";
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r400 \cu(Wed 24 Mar 17:41:38 CET 2021)\c-";
|
||||
SWWM_SHORTVER="\cw0.9.11b-pre r400 \cu(2021-03-24 17:41:38)\c-";
|
||||
|
|
|
|||
|
|
@ -90,6 +90,9 @@ extend Class SWWMHandler
|
|||
// one standing?
|
||||
if ( (level.total_monsters-level.killed_monsters) == 1 )
|
||||
SWWMUtility.MarkAchievement('swwm_achievement_onestanding',players[consoleplayer]);
|
||||
// nice?
|
||||
if ( players[consoleplayer].Health == 69 )
|
||||
SWWMUtility.MarkAchievement('swwm_achievement_nice',players[consoleplayer]);
|
||||
}
|
||||
|
||||
private void SetupLockdefsCache( SWWMCachedLockInfo cli )
|
||||
|
|
|
|||
|
|
@ -1,104 +1,34 @@
|
|||
// achievement tracking
|
||||
|
||||
// constants for finetuning them numbers
|
||||
const SA_GCSANDWICH = 25;
|
||||
const SA_GHOST = 25;
|
||||
const SA_ALLITEMS = 30;
|
||||
const SA_CONGA = 15;
|
||||
const SA_GRAVITY = 25;
|
||||
const SA_FLIGHT = 2000;
|
||||
const SA_PAR = 30;
|
||||
const SA_GOLDEN = 24;
|
||||
const SA_GIB = 500;
|
||||
const SA_BARRIER = 25;
|
||||
const SA_BOSSDASH = 10;
|
||||
const SA_SNEEZE = 20;
|
||||
const SA_FUEL = 400;
|
||||
const SA_SLAYER = 40;
|
||||
const SA_STOMP = 50;
|
||||
const SA_THRUWALL = 25;
|
||||
const SA_LEAD = 1500;
|
||||
const SA_LOVE = 20;
|
||||
const SA_BUTTS = 100;
|
||||
const SA_PLUSH = 20;
|
||||
const SA_BUSTIN = 40;
|
||||
const SA_MOTH = 50;
|
||||
const SA_BRAKE = 20;
|
||||
const SA_RAGE = 25;
|
||||
const SA_PARRY = 100;
|
||||
const SA_ALLKILLS = 30;
|
||||
const SA_ALLSECRETS = 30;
|
||||
const SA_REFLECT = 20;
|
||||
const SA_FRIEND = 30;
|
||||
const SA_SHOCK = 30;
|
||||
const SA_BALLS = 10;
|
||||
const SA_REFRESH = 25;
|
||||
const SA_STEP = 60;
|
||||
const SA_SUNNY = 25;
|
||||
const SA_THICC = 80;
|
||||
const SA_SLEMG = 50;
|
||||
const SA_JUMP = 80;
|
||||
const SA_EZKILL = 100;
|
||||
const SA_ROAST = 30;
|
||||
const SA_DAB = 100;
|
||||
const SA_HND = 6;
|
||||
const SA_GEPGUN = 30;
|
||||
const SA_PENE = 20;
|
||||
const SA_ACID = 100;
|
||||
const SA_SANIC = 800;
|
||||
const SA_BUNE = 150;
|
||||
const SA_BONK = 300;
|
||||
const SA_ANOM = 25;
|
||||
|
||||
// achievement unlock tracking
|
||||
extend Class SWWMStaticHandler
|
||||
{
|
||||
ui int lastachievementnotify; // prevent overlap
|
||||
Array<SWWMAchievement> achievements;
|
||||
|
||||
private ui bool CheckAchievement( Name ac, String acname, int acnum, Name acprog )
|
||||
private ui bool CheckAchievement( SWWMAchievement a )
|
||||
{
|
||||
let ev = CVar.FindCVar(ac);
|
||||
int val = ev.GetInt();
|
||||
int val = a.state.GetInt();
|
||||
// manually check progress
|
||||
if ( acprog != 'None' )
|
||||
if ( a.progress )
|
||||
{
|
||||
int prog = CVar.FindCVar(acprog).GetInt();
|
||||
int maxval = acnum;
|
||||
int prog = a.progress.GetInt();
|
||||
// special cases
|
||||
if ( ac == 'swwm_achievement_allcoll' )
|
||||
if ( val && (prog < a.maxval) )
|
||||
{
|
||||
int nc = 0;
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
{
|
||||
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;
|
||||
}
|
||||
else if ( ac == 'swwm_achievement_dakka' ) maxval = 60;
|
||||
else if ( ac == 'swwm_achievement_dosh' ) maxval = 1000000000;
|
||||
else if ( ac == 'swwm_achievement_mega' ) maxval = 1000000;
|
||||
else if ( ac == 'swwm_achievement_iwad' ) maxval = 7;
|
||||
if ( val && (prog < maxval) )
|
||||
{
|
||||
ev.SetInt(0);
|
||||
a.state.SetInt(0);
|
||||
val = 0;
|
||||
}
|
||||
else if ( !val && (prog >= maxval) )
|
||||
else if ( !val && (prog >= a.maxval) )
|
||||
{
|
||||
ev.SetInt(1);
|
||||
a.state.SetInt(1);
|
||||
val = 1;
|
||||
}
|
||||
}
|
||||
if ( (val == 1) && (gametic > lastachievementnotify) )
|
||||
{
|
||||
ev.SetInt(2);
|
||||
EventHandler.SendNetworkEvent("swwmachievement."..acname.."_TAG",consoleplayer);
|
||||
let notif = new("SWWMAchievementNotification").Init(acname,acnum);
|
||||
a.state.SetInt(2);
|
||||
EventHandler.SendNetworkEvent("swwmachievement."..a.basename,consoleplayer);
|
||||
let notif = new("SWWMAchievementNotification").Init(a.basename,a.icon,a.hasformat?a.maxval:0);
|
||||
StatusBar.AttachMessage(notif,-3478);
|
||||
lastachievementnotify = gametic+200;
|
||||
}
|
||||
|
|
@ -107,415 +37,38 @@ extend Class SWWMStaticHandler
|
|||
|
||||
private ui void CheckAllAchievements()
|
||||
{
|
||||
// don't check constantly
|
||||
if ( (maptime < 105) || (maptime%35) ) return;
|
||||
// cvar assigned
|
||||
static const Name vars[] =
|
||||
{
|
||||
'swwm_achievement_gcsandwich',
|
||||
'swwm_achievement_onestanding',
|
||||
'swwm_achievement_oopsie',
|
||||
'swwm_achievement_ghost',
|
||||
'swwm_achievement_clonk',
|
||||
'swwm_achievement_allitems',
|
||||
'swwm_achievement_conga',
|
||||
'swwm_achievement_gravity',
|
||||
'swwm_achievement_flight',
|
||||
'swwm_achievement_cliffyb',
|
||||
'swwm_achievement_par',
|
||||
'swwm_achievement_oneguy',
|
||||
'swwm_achievement_golden',
|
||||
'swwm_achievement_gib',
|
||||
'swwm_achievement_barrier',
|
||||
'swwm_achievement_bossdash',
|
||||
'swwm_achievement_sneeze',
|
||||
'swwm_achievement_fuel',
|
||||
'swwm_achievement_slayer',
|
||||
'swwm_achievement_dime',
|
||||
'swwm_achievement_stomp',
|
||||
'swwm_achievement_cheat',
|
||||
'swwm_achievement_thruwall',
|
||||
'swwm_achievement_mashiro',
|
||||
'swwm_achievement_lead',
|
||||
'swwm_achievement_love',
|
||||
'swwm_achievement_butts',
|
||||
'swwm_achievement_plush',
|
||||
'swwm_achievement_bustin',
|
||||
'swwm_achievement_moth',
|
||||
'swwm_achievement_iwad',
|
||||
'swwm_achievement_brake',
|
||||
'swwm_achievement_rage',
|
||||
'swwm_achievement_abort',
|
||||
'swwm_achievement_parry',
|
||||
'swwm_achievement_allkills',
|
||||
'swwm_achievement_allsecrets',
|
||||
'swwm_achievement_reflect',
|
||||
'swwm_achievement_sekiro',
|
||||
'swwm_achievement_wave',
|
||||
'swwm_achievement_friend',
|
||||
'swwm_achievement_shock',
|
||||
'swwm_achievement_balls',
|
||||
'swwm_achievement_refresh',
|
||||
'swwm_achievement_step',
|
||||
'swwm_achievement_sunny',
|
||||
'swwm_achievement_thicc',
|
||||
'swwm_achievement_allcoll',
|
||||
'swwm_achievement_slemg',
|
||||
'swwm_achievement_dosh',
|
||||
'swwm_achievement_jump',
|
||||
'swwm_achievement_ezkill',
|
||||
'swwm_achievement_ligma',
|
||||
'swwm_achievement_yeet',
|
||||
'swwm_achievement_mbf',
|
||||
'swwm_achievement_lightning',
|
||||
'swwm_achievement_dakka',
|
||||
'swwm_achievement_roast',
|
||||
'swwm_achievement_dab',
|
||||
'swwm_achievement_hnd',
|
||||
'swwm_achievement_gepgun',
|
||||
'swwm_achievement_fuller',
|
||||
'swwm_achievement_pene',
|
||||
'swwm_achievement_acid',
|
||||
'swwm_achievement_salt',
|
||||
'swwm_achievement_mega',
|
||||
'swwm_achievement_sanic',
|
||||
'swwm_achievement_tele',
|
||||
'swwm_achievement_bune',
|
||||
'swwm_achievement_bonk',
|
||||
'swwm_achievement_anom',
|
||||
'swwm_achievement_anone',
|
||||
'swwm_achievement_wantdie'
|
||||
};
|
||||
// localized name
|
||||
static const String names[] =
|
||||
{
|
||||
"$SWWM_ACHIEVEMENT_GCSANDWICH",
|
||||
"$SWWM_ACHIEVEMENT_ONESTANDING",
|
||||
"$SWWM_ACHIEVEMENT_OOPSIE",
|
||||
"$SWWM_ACHIEVEMENT_GHOST",
|
||||
"$SWWM_ACHIEVEMENT_CLONK",
|
||||
"$SWWM_ACHIEVEMENT_ALLITEMS",
|
||||
"$SWWM_ACHIEVEMENT_CONGA",
|
||||
"$SWWM_ACHIEVEMENT_GRAVITY",
|
||||
"$SWWM_ACHIEVEMENT_FLIGHT",
|
||||
"$SWWM_ACHIEVEMENT_CLIFFYB",
|
||||
"$SWWM_ACHIEVEMENT_PAR",
|
||||
"$SWWM_ACHIEVEMENT_ONEGUY",
|
||||
"$SWWM_ACHIEVEMENT_GOLDEN",
|
||||
"$SWWM_ACHIEVEMENT_GIB",
|
||||
"$SWWM_ACHIEVEMENT_BARRIER",
|
||||
"$SWWM_ACHIEVEMENT_BOSSDASH",
|
||||
"$SWWM_ACHIEVEMENT_SNEEZE",
|
||||
"$SWWM_ACHIEVEMENT_FUEL",
|
||||
"$SWWM_ACHIEVEMENT_SLAYER",
|
||||
"$SWWM_ACHIEVEMENT_DIME",
|
||||
"$SWWM_ACHIEVEMENT_STOMP",
|
||||
"$SWWM_ACHIEVEMENT_CHEAT",
|
||||
"$SWWM_ACHIEVEMENT_THRUWALL",
|
||||
"$SWWM_ACHIEVEMENT_MASHIRO",
|
||||
"$SWWM_ACHIEVEMENT_LEAD",
|
||||
"$SWWM_ACHIEVEMENT_LOVE",
|
||||
"$SWWM_ACHIEVEMENT_BUTTS",
|
||||
"$SWWM_ACHIEVEMENT_PLUSH",
|
||||
"$SWWM_ACHIEVEMENT_BUSTIN",
|
||||
"$SWWM_ACHIEVEMENT_MOTH",
|
||||
"$SWWM_ACHIEVEMENT_IWAD",
|
||||
"$SWWM_ACHIEVEMENT_BRAKE",
|
||||
"$SWWM_ACHIEVEMENT_RAGE",
|
||||
"$SWWM_ACHIEVEMENT_ABORT",
|
||||
"$SWWM_ACHIEVEMENT_PARRY",
|
||||
"$SWWM_ACHIEVEMENT_ALLKILLS",
|
||||
"$SWWM_ACHIEVEMENT_ALLSECRETS",
|
||||
"$SWWM_ACHIEVEMENT_REFLECT",
|
||||
"$SWWM_ACHIEVEMENT_SEKIRO",
|
||||
"$SWWM_ACHIEVEMENT_WAVE",
|
||||
"$SWWM_ACHIEVEMENT_FRIEND",
|
||||
"$SWWM_ACHIEVEMENT_SHOCK",
|
||||
"$SWWM_ACHIEVEMENT_BALLS",
|
||||
"$SWWM_ACHIEVEMENT_REFRESH",
|
||||
"$SWWM_ACHIEVEMENT_STEP",
|
||||
"$SWWM_ACHIEVEMENT_SUNNY",
|
||||
"$SWWM_ACHIEVEMENT_THICC",
|
||||
"$SWWM_ACHIEVEMENT_ALLCOLL",
|
||||
"$SWWM_ACHIEVEMENT_SLEMG",
|
||||
"$SWWM_ACHIEVEMENT_DOSH",
|
||||
"$SWWM_ACHIEVEMENT_JUMP",
|
||||
"$SWWM_ACHIEVEMENT_EZKILL",
|
||||
"$SWWM_ACHIEVEMENT_LIGMA",
|
||||
"$SWWM_ACHIEVEMENT_YEET",
|
||||
"$SWWM_ACHIEVEMENT_MBF",
|
||||
"$SWWM_ACHIEVEMENT_LIGHTNING",
|
||||
"$SWWM_ACHIEVEMENT_DAKKA",
|
||||
"$SWWM_ACHIEVEMENT_ROAST",
|
||||
"$SWWM_ACHIEVEMENT_DAB",
|
||||
"$SWWM_ACHIEVEMENT_HND",
|
||||
"$SWWM_ACHIEVEMENT_GEPGUN",
|
||||
"$SWWM_ACHIEVEMENT_FULLER",
|
||||
"$SWWM_ACHIEVEMENT_PENE",
|
||||
"$SWWM_ACHIEVEMENT_ACID",
|
||||
"$SWWM_ACHIEVEMENT_SALT",
|
||||
"$SWWM_ACHIEVEMENT_MEGA",
|
||||
"$SWWM_ACHIEVEMENT_SANIC",
|
||||
"$SWWM_ACHIEVEMENT_TELE",
|
||||
"$SWWM_ACHIEVEMENT_BUNE",
|
||||
"$SWWM_ACHIEVEMENT_BONK",
|
||||
"$SWWM_ACHIEVEMENT_ANOM",
|
||||
"$SWWM_ACHIEVEMENT_ANONE",
|
||||
"$SWWM_ACHIEVEMENT_WANTDIE"
|
||||
};
|
||||
// has number in txt
|
||||
static const int number[] =
|
||||
{
|
||||
SA_GCSANDWICH,
|
||||
0, // ONESTANDING
|
||||
0, // OOPSIE
|
||||
SA_GHOST,
|
||||
0, // CLONK
|
||||
SA_ALLITEMS,
|
||||
SA_CONGA,
|
||||
SA_GRAVITY,
|
||||
SA_FLIGHT,
|
||||
0, // CLIFFYB
|
||||
SA_PAR,
|
||||
0, // ONEGUY
|
||||
SA_GOLDEN,
|
||||
SA_GIB,
|
||||
SA_BARRIER,
|
||||
SA_BOSSDASH,
|
||||
SA_SNEEZE,
|
||||
SA_FUEL,
|
||||
SA_SLAYER,
|
||||
0, // DIME
|
||||
SA_STOMP,
|
||||
0, // CHEAT
|
||||
SA_THRUWALL,
|
||||
0, // MASHIRO
|
||||
SA_LEAD,
|
||||
SA_LOVE,
|
||||
SA_BUTTS,
|
||||
SA_PLUSH,
|
||||
SA_BUSTIN,
|
||||
SA_MOTH,
|
||||
0, // IWAD
|
||||
SA_BRAKE,
|
||||
SA_RAGE,
|
||||
0, // ABORT
|
||||
SA_PARRY,
|
||||
SA_ALLKILLS,
|
||||
SA_ALLSECRETS,
|
||||
SA_REFLECT,
|
||||
0, // SEKIRO
|
||||
0, // WAVE
|
||||
SA_FRIEND,
|
||||
SA_SHOCK,
|
||||
SA_BALLS,
|
||||
SA_REFRESH,
|
||||
SA_STEP,
|
||||
SA_SUNNY,
|
||||
SA_THICC,
|
||||
0, // ALLCOLL
|
||||
SA_SLEMG,
|
||||
0, // DOSH
|
||||
SA_JUMP,
|
||||
SA_EZKILL,
|
||||
0, // LIGMA
|
||||
0, // YEET
|
||||
0, // MBF
|
||||
0, // LIGHTNING
|
||||
0, // DAKKA
|
||||
SA_ROAST,
|
||||
SA_DAB,
|
||||
SA_HND,
|
||||
SA_GEPGUN,
|
||||
0, // FULLER
|
||||
SA_PENE,
|
||||
SA_ACID,
|
||||
0, // SALT
|
||||
0, // MEGA
|
||||
SA_SANIC,
|
||||
0, // TELE
|
||||
SA_BUNE,
|
||||
SA_BONK,
|
||||
SA_ANOM,
|
||||
0, // ANONE
|
||||
0 // WANTDIE
|
||||
};
|
||||
// is ignored (hide away achievements that can't be done yet)
|
||||
static const bool ignoreme[] =
|
||||
{
|
||||
false, // GCSANDWICH
|
||||
false, // ONESTANDING
|
||||
false, // OOPSIE
|
||||
false, // GHOST
|
||||
false, // CLONK
|
||||
false, // ALLITEMS
|
||||
false, // CONGA
|
||||
false, // GRAVITY
|
||||
false, // FLIGHT
|
||||
false, // CLIFFYB
|
||||
false, // PAR
|
||||
false, // ONEGUY
|
||||
false, // GOLDEN
|
||||
false, // GIB
|
||||
false, // BARRIER
|
||||
false, // BOSSDASH
|
||||
false, // SNEEZE
|
||||
false, // FUEL
|
||||
false, // SLAYER
|
||||
false, // DIME
|
||||
false, // STOMP
|
||||
false, // CHEAT
|
||||
false, // THRUWALL
|
||||
true, // MASHIRO
|
||||
false, // LEAD
|
||||
false, // LOVE
|
||||
false, // BUTTS
|
||||
false, // PLUSH
|
||||
false, // BUSTIN
|
||||
false, // MOTH
|
||||
false, // IWAD
|
||||
false, // BRAKE
|
||||
false, // RAGE
|
||||
false, // ABORT
|
||||
false, // PARRY
|
||||
false, // ALLKILLS
|
||||
false, // ALLSECRETS
|
||||
false, // REFLECT
|
||||
false, // SEKIRO
|
||||
false, // WAVE
|
||||
false, // FRIEND
|
||||
false, // SHOCK
|
||||
false, // BALLS
|
||||
false, // REFRESH
|
||||
false, // STEP
|
||||
false, // SUNNY
|
||||
false, // THICC
|
||||
false, // ALLCOLL
|
||||
false, // SLEMG
|
||||
false, // DOSH
|
||||
false, // JUMP
|
||||
false, // EZKILL
|
||||
false, // LIGMA
|
||||
false, // YEET
|
||||
false, // MBF
|
||||
true, // LIGHTNING
|
||||
true, // DAKKA
|
||||
true, // ROAST
|
||||
true, // DAB
|
||||
true, // HND
|
||||
true, // GEPGUN
|
||||
true, // FULLER
|
||||
true, // PENE
|
||||
false, // ACID
|
||||
false, // SALT
|
||||
false, // MEGA
|
||||
false, // SANIC
|
||||
false, // TELE
|
||||
false, // BUNE
|
||||
false, // BONK
|
||||
false, // ANOM
|
||||
false, // ANONE
|
||||
false // WANTDIE
|
||||
};
|
||||
// progress tracking cvar (if any)
|
||||
static const Name pvar[] =
|
||||
{
|
||||
'swwm_progress_gcsandwich',
|
||||
'None', // ONESTANDING
|
||||
'None', // OOPSIE
|
||||
'swwm_progress_ghost',
|
||||
'None', // CLONK
|
||||
'swwm_progress_allitems',
|
||||
'swwm_progress_conga',
|
||||
'swwm_progress_gravity',
|
||||
'swwm_progress_flight',
|
||||
'None', // CLIFFYB
|
||||
'swwm_progress_par',
|
||||
'None', // ONEGUY
|
||||
'swwm_progress_golden',
|
||||
'swwm_progress_gib',
|
||||
'swwm_progress_barrier',
|
||||
'swwm_progress_bossdash',
|
||||
'swwm_progress_sneeze',
|
||||
'swwm_progress_fuel',
|
||||
'swwm_progress_slayer',
|
||||
'None', // DIME
|
||||
'swwm_progress_stomp',
|
||||
'None', // CHEAT
|
||||
'swwm_progress_thruwall',
|
||||
'None', // MASHIRO
|
||||
'swwm_progress_lead',
|
||||
'swwm_progress_love',
|
||||
'swwm_progress_butts',
|
||||
'swwm_progress_plush',
|
||||
'swwm_progress_bustin',
|
||||
'swwm_progress_moth',
|
||||
'swwm_progress_iwad',
|
||||
'swwm_progress_brake', // BRAKE
|
||||
'swwm_progress_rage',
|
||||
'None', // ABORT
|
||||
'swwm_progress_parry',
|
||||
'swwm_progress_allkills',
|
||||
'swwm_progress_allsecrets',
|
||||
'swwm_progress_reflect',
|
||||
'None', // SEKIRO
|
||||
'None', // WAVE
|
||||
'swwm_progress_friend',
|
||||
'swwm_progress_shock',
|
||||
'swwm_progress_balls',
|
||||
'swwm_progress_refresh',
|
||||
'swwm_progress_step',
|
||||
'swwm_progress_sunny',
|
||||
'swwm_progress_thicc',
|
||||
'swwm_progress_allcoll',
|
||||
'swwm_progress_slemg',
|
||||
'swwm_progress_dosh',
|
||||
'swwm_progress_jump',
|
||||
'swwm_progress_ezkill',
|
||||
'None', // LIGMA
|
||||
'None', // YEET
|
||||
'None', // MBF
|
||||
'None', // LIGHTNING
|
||||
'swwm_progress_dakka',
|
||||
'swwm_progress_roast',
|
||||
'swwm_progress_dab',
|
||||
'swwm_progress_hnd',
|
||||
'swwm_progress_gepgun',
|
||||
'None', // FULLER
|
||||
'swwm_progress_pene',
|
||||
'swwm_progress_acid',
|
||||
'None', // SALT
|
||||
'swwm_progress_mega',
|
||||
'swwm_progress_sanic',
|
||||
'None', // TELE
|
||||
'swwm_progress_bune',
|
||||
'swwm_progress_bonk',
|
||||
'swwm_progress_anom',
|
||||
'None', // ANONE
|
||||
'None' // WANTDIE
|
||||
};
|
||||
// don't check constantly, and don't check during level transitions
|
||||
if ( unloading || (maptime < 105) || (maptime%35) ) return;
|
||||
// first load
|
||||
if ( achievements.Size() <= 0 ) SWWMUtility.LoadAchievements(achievements);
|
||||
bool alldone = true;
|
||||
for ( int i=0; i<vars.Size(); i++ )
|
||||
int ev = -1;
|
||||
for ( int i=0; i<achievements.Size(); i++ )
|
||||
{
|
||||
if ( ignoreme[i] ) continue;
|
||||
if ( !CheckAchievement(vars[i],names[i],number[i],pvar[i]) )
|
||||
// this one is updated outside the loop
|
||||
if ( achievements[i].basename == "everything" )
|
||||
{
|
||||
ev = i;
|
||||
continue;
|
||||
}
|
||||
if ( !CheckAchievement(achievements[i]) )
|
||||
alldone = false;
|
||||
}
|
||||
let ev = CVar.FindCVar('swwm_achievement_everything');
|
||||
int val = ev.GetInt();
|
||||
if ( ev == -1 ) return; // should not happen, though
|
||||
int val = achievements[ev].state.GetInt();
|
||||
// not done!
|
||||
if ( !alldone )
|
||||
{
|
||||
if ( val != 0 ) ev.SetInt(0);
|
||||
if ( val != 0 ) achievements[ev].state.SetInt(0);
|
||||
return;
|
||||
}
|
||||
// all done!
|
||||
if ( val == 0 ) ev.SetInt(1);
|
||||
if ( val == 0 ) achievements[ev].state.SetInt(1);
|
||||
else if ( (val == 1) && (gametic > lastachievementnotify) )
|
||||
{
|
||||
ev.SetInt(2);
|
||||
EventHandler.SendNetworkEvent("swwmachievement.$SWWM_ACHIEVEMENT_EVERYTHING_TAG",consoleplayer);
|
||||
let notif = new("SWWMAchievementNotification").Init("$SWWM_ACHIEVEMENT_EVERYTHING");
|
||||
achievements[ev].state.SetInt(2);
|
||||
EventHandler.SendNetworkEvent("swwmachievement."..achievements[ev].basename,consoleplayer);
|
||||
let notif = new("SWWMAchievementNotification").Init(achievements[ev].basename,achievements[ev].icon);
|
||||
StatusBar.AttachMessage(notif,-3478);
|
||||
lastachievementnotify = gametic+200;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -166,14 +166,12 @@ Class SWWMAchievementNotification : HUDMessageBase
|
|||
double tics, holdtics, fadeintics, fadeouttics;
|
||||
transient Font tewifont, mplusfont, miniwifont, k6x8font;
|
||||
|
||||
SWWMAchievementNotification Init( String bname, int bnum = 0 )
|
||||
SWWMAchievementNotification Init( String bname, TextureID icon, int bnum = 0 )
|
||||
{
|
||||
tag = bname.."_TAG";
|
||||
txt = bname.."_TXT";
|
||||
tag = "$SWWM_ACHIEVEMENT_"..bname.."_TAG";
|
||||
txt = "$SWWM_ACHIEVEMENT_"..bname.."_TXT";
|
||||
num = bnum;
|
||||
icon = TexMan.CheckForTexture(StringTable.Localize(bname.."_PIC"),TexMan.Type_Any);
|
||||
// fallback icon
|
||||
if ( !icon.IsValid() ) icon = TexMan.CheckForTexture("graphics/Achievements/AchievementNone.png",TexMan.Type_Any);
|
||||
self.icon = icon;
|
||||
frame = TexMan.CheckForTexture("graphics/HUD/AchievementNotification.png",TexMan.Type_Any);
|
||||
holdtics = 150;
|
||||
fadeintics = 20;
|
||||
|
|
|
|||
|
|
@ -13,14 +13,6 @@ Class MenuTransaction
|
|||
bool result, usedup;
|
||||
}
|
||||
|
||||
Class MenuAchievement
|
||||
{
|
||||
String tag, txt;
|
||||
TextureID icon;
|
||||
CVar state, progress;
|
||||
int num, maxval;
|
||||
}
|
||||
|
||||
// FIXME this whole thing needs to be refactored eventually
|
||||
Class DemolitionistMenu : GenericMenu
|
||||
{
|
||||
|
|
@ -65,7 +57,7 @@ Class DemolitionistMenu : GenericMenu
|
|||
Array<MonsterKill> sorted_mstats; // sorted by killcount
|
||||
Array<LevelStat> filtered_lstats; // filtered if necessary + entry for current map
|
||||
LevelStat curlstat;
|
||||
Array<MenuAchievement> achievements; // array created once, then sorted as needed
|
||||
Array<SWWMAchievement> achievements; // array created once, then sorted as needed
|
||||
// inventory lists
|
||||
Array<Inventory> invlist;
|
||||
// lore stuff
|
||||
|
|
@ -346,440 +338,7 @@ Class DemolitionistMenu : GenericMenu
|
|||
if ( tabs[curtab] == TAB_LIBRARY ) sel1 = swwm_lastloretab;
|
||||
else if ( tabs[curtab] == TAB_STATS ) sel1 = swwm_laststattab;
|
||||
// load achievements
|
||||
LoadAchievements();
|
||||
}
|
||||
|
||||
// this is very spaghetti, sorry
|
||||
private void LoadAchievements()
|
||||
{
|
||||
// cvar assigned
|
||||
static const Name vars[] =
|
||||
{
|
||||
'swwm_achievement_gcsandwich',
|
||||
'swwm_achievement_onestanding',
|
||||
'swwm_achievement_oopsie',
|
||||
'swwm_achievement_ghost',
|
||||
'swwm_achievement_clonk',
|
||||
'swwm_achievement_allitems',
|
||||
'swwm_achievement_conga',
|
||||
'swwm_achievement_gravity',
|
||||
'swwm_achievement_flight',
|
||||
'swwm_achievement_cliffyb',
|
||||
'swwm_achievement_par',
|
||||
'swwm_achievement_oneguy',
|
||||
'swwm_achievement_golden',
|
||||
'swwm_achievement_gib',
|
||||
'swwm_achievement_barrier',
|
||||
'swwm_achievement_bossdash',
|
||||
'swwm_achievement_sneeze',
|
||||
'swwm_achievement_fuel',
|
||||
'swwm_achievement_slayer',
|
||||
'swwm_achievement_dime',
|
||||
'swwm_achievement_stomp',
|
||||
'swwm_achievement_cheat',
|
||||
'swwm_achievement_thruwall',
|
||||
'swwm_achievement_mashiro',
|
||||
'swwm_achievement_lead',
|
||||
'swwm_achievement_love',
|
||||
'swwm_achievement_butts',
|
||||
'swwm_achievement_plush',
|
||||
'swwm_achievement_bustin',
|
||||
'swwm_achievement_moth',
|
||||
'swwm_achievement_iwad',
|
||||
'swwm_achievement_brake',
|
||||
'swwm_achievement_rage',
|
||||
'swwm_achievement_abort',
|
||||
'swwm_achievement_parry',
|
||||
'swwm_achievement_allkills',
|
||||
'swwm_achievement_allsecrets',
|
||||
'swwm_achievement_reflect',
|
||||
'swwm_achievement_sekiro',
|
||||
'swwm_achievement_wave',
|
||||
'swwm_achievement_friend',
|
||||
'swwm_achievement_shock',
|
||||
'swwm_achievement_balls',
|
||||
'swwm_achievement_refresh',
|
||||
'swwm_achievement_step',
|
||||
'swwm_achievement_sunny',
|
||||
'swwm_achievement_thicc',
|
||||
'swwm_achievement_everything',
|
||||
'swwm_achievement_allcoll',
|
||||
'swwm_achievement_slemg',
|
||||
'swwm_achievement_dosh',
|
||||
'swwm_achievement_jump',
|
||||
'swwm_achievement_ezkill',
|
||||
'swwm_achievement_ligma',
|
||||
'swwm_achievement_yeet',
|
||||
'swwm_achievement_mbf',
|
||||
'swwm_achievement_lightning',
|
||||
'swwm_achievement_dakka',
|
||||
'swwm_achievement_roast',
|
||||
'swwm_achievement_dab',
|
||||
'swwm_achievement_hnd',
|
||||
'swwm_achievement_gepgun',
|
||||
'swwm_achievement_fuller',
|
||||
'swwm_achievement_pene',
|
||||
'swwm_achievement_acid',
|
||||
'swwm_achievement_salt',
|
||||
'swwm_achievement_mega',
|
||||
'swwm_achievement_sanic',
|
||||
'swwm_achievement_tele',
|
||||
'swwm_achievement_bune',
|
||||
'swwm_achievement_bonk',
|
||||
'swwm_achievement_anom',
|
||||
'swwm_achievement_anone',
|
||||
'swwm_achievement_wantdie'
|
||||
};
|
||||
// localized name
|
||||
static const String names[] =
|
||||
{
|
||||
"$SWWM_ACHIEVEMENT_GCSANDWICH",
|
||||
"$SWWM_ACHIEVEMENT_ONESTANDING",
|
||||
"$SWWM_ACHIEVEMENT_OOPSIE",
|
||||
"$SWWM_ACHIEVEMENT_GHOST",
|
||||
"$SWWM_ACHIEVEMENT_CLONK",
|
||||
"$SWWM_ACHIEVEMENT_ALLITEMS",
|
||||
"$SWWM_ACHIEVEMENT_CONGA",
|
||||
"$SWWM_ACHIEVEMENT_GRAVITY",
|
||||
"$SWWM_ACHIEVEMENT_FLIGHT",
|
||||
"$SWWM_ACHIEVEMENT_CLIFFYB",
|
||||
"$SWWM_ACHIEVEMENT_PAR",
|
||||
"$SWWM_ACHIEVEMENT_ONEGUY",
|
||||
"$SWWM_ACHIEVEMENT_GOLDEN",
|
||||
"$SWWM_ACHIEVEMENT_GIB",
|
||||
"$SWWM_ACHIEVEMENT_BARRIER",
|
||||
"$SWWM_ACHIEVEMENT_BOSSDASH",
|
||||
"$SWWM_ACHIEVEMENT_SNEEZE",
|
||||
"$SWWM_ACHIEVEMENT_FUEL",
|
||||
"$SWWM_ACHIEVEMENT_SLAYER",
|
||||
"$SWWM_ACHIEVEMENT_DIME",
|
||||
"$SWWM_ACHIEVEMENT_STOMP",
|
||||
"$SWWM_ACHIEVEMENT_CHEAT",
|
||||
"$SWWM_ACHIEVEMENT_THRUWALL",
|
||||
"$SWWM_ACHIEVEMENT_MASHIRO",
|
||||
"$SWWM_ACHIEVEMENT_LEAD",
|
||||
"$SWWM_ACHIEVEMENT_LOVE",
|
||||
"$SWWM_ACHIEVEMENT_BUTTS",
|
||||
"$SWWM_ACHIEVEMENT_PLUSH",
|
||||
"$SWWM_ACHIEVEMENT_BUSTIN",
|
||||
"$SWWM_ACHIEVEMENT_MOTH",
|
||||
"$SWWM_ACHIEVEMENT_IWAD",
|
||||
"$SWWM_ACHIEVEMENT_BRAKE",
|
||||
"$SWWM_ACHIEVEMENT_RAGE",
|
||||
"$SWWM_ACHIEVEMENT_ABORT",
|
||||
"$SWWM_ACHIEVEMENT_PARRY",
|
||||
"$SWWM_ACHIEVEMENT_ALLKILLS",
|
||||
"$SWWM_ACHIEVEMENT_ALLSECRETS",
|
||||
"$SWWM_ACHIEVEMENT_REFLECT",
|
||||
"$SWWM_ACHIEVEMENT_SEKIRO",
|
||||
"$SWWM_ACHIEVEMENT_WAVE",
|
||||
"$SWWM_ACHIEVEMENT_FRIEND",
|
||||
"$SWWM_ACHIEVEMENT_SHOCK",
|
||||
"$SWWM_ACHIEVEMENT_BALLS",
|
||||
"$SWWM_ACHIEVEMENT_REFRESH",
|
||||
"$SWWM_ACHIEVEMENT_STEP",
|
||||
"$SWWM_ACHIEVEMENT_SUNNY",
|
||||
"$SWWM_ACHIEVEMENT_THICC",
|
||||
"$SWWM_ACHIEVEMENT_EVERYTHING",
|
||||
"$SWWM_ACHIEVEMENT_ALLCOLL",
|
||||
"$SWWM_ACHIEVEMENT_SLEMG",
|
||||
"$SWWM_ACHIEVEMENT_DOSH",
|
||||
"$SWWM_ACHIEVEMENT_JUMP",
|
||||
"$SWWM_ACHIEVEMENT_EZKILL",
|
||||
"$SWWM_ACHIEVEMENT_LIGMA",
|
||||
"$SWWM_ACHIEVEMENT_YEET",
|
||||
"$SWWM_ACHIEVEMENT_MBF",
|
||||
"$SWWM_ACHIEVEMENT_LIGHTNING",
|
||||
"$SWWM_ACHIEVEMENT_DAKKA",
|
||||
"$SWWM_ACHIEVEMENT_ROAST",
|
||||
"$SWWM_ACHIEVEMENT_DAB",
|
||||
"$SWWM_ACHIEVEMENT_HND",
|
||||
"$SWWM_ACHIEVEMENT_GEPGUN",
|
||||
"$SWWM_ACHIEVEMENT_FULLER",
|
||||
"$SWWM_ACHIEVEMENT_PENE",
|
||||
"$SWWM_ACHIEVEMENT_ACID",
|
||||
"$SWWM_ACHIEVEMENT_SALT",
|
||||
"$SWWM_ACHIEVEMENT_MEGA",
|
||||
"$SWWM_ACHIEVEMENT_SANIC",
|
||||
"$SWWM_ACHIEVEMENT_TELE",
|
||||
"$SWWM_ACHIEVEMENT_BUNE",
|
||||
"$SWWM_ACHIEVEMENT_BONK",
|
||||
"$SWWM_ACHIEVEMENT_ANOM",
|
||||
"$SWWM_ACHIEVEMENT_ANONE",
|
||||
"$SWWM_ACHIEVEMENT_WANTDIE"
|
||||
};
|
||||
// has number in txt
|
||||
static const int number[] =
|
||||
{
|
||||
SA_GCSANDWICH,
|
||||
0, // ONESTANDING
|
||||
0, // OOPSIE
|
||||
SA_GHOST,
|
||||
0, // CLONK
|
||||
SA_ALLITEMS,
|
||||
SA_CONGA,
|
||||
SA_GRAVITY,
|
||||
SA_FLIGHT,
|
||||
0, // CLIFFYB
|
||||
SA_PAR,
|
||||
0, // ONEGUY
|
||||
SA_GOLDEN,
|
||||
SA_GIB,
|
||||
SA_BARRIER,
|
||||
SA_BOSSDASH,
|
||||
SA_SNEEZE,
|
||||
SA_FUEL,
|
||||
SA_SLAYER,
|
||||
0, // DIME
|
||||
SA_STOMP,
|
||||
0, // CHEAT
|
||||
SA_THRUWALL,
|
||||
0, // MASHIRO
|
||||
SA_LEAD,
|
||||
SA_LOVE,
|
||||
SA_BUTTS,
|
||||
SA_PLUSH,
|
||||
SA_BUSTIN,
|
||||
SA_MOTH,
|
||||
0, // IWAD
|
||||
SA_BRAKE,
|
||||
SA_RAGE,
|
||||
0, // ABORT
|
||||
SA_PARRY,
|
||||
SA_ALLKILLS,
|
||||
SA_ALLSECRETS,
|
||||
SA_REFLECT,
|
||||
0, // SEKIRO
|
||||
0, // WAVE
|
||||
SA_FRIEND,
|
||||
SA_SHOCK,
|
||||
SA_BALLS,
|
||||
SA_REFRESH,
|
||||
SA_STEP,
|
||||
SA_SUNNY,
|
||||
SA_THICC,
|
||||
0, // EVERYTHING
|
||||
0, // ALLCOLL
|
||||
SA_SLEMG,
|
||||
0, // DOSH
|
||||
SA_JUMP,
|
||||
SA_EZKILL,
|
||||
0, // LIGMA
|
||||
0, // YEET
|
||||
0, // MBF
|
||||
0, // LIGHTNING
|
||||
0, // DAKKA
|
||||
SA_ROAST,
|
||||
SA_DAB,
|
||||
SA_HND,
|
||||
SA_GEPGUN,
|
||||
0, // FULLER
|
||||
SA_PENE,
|
||||
SA_ACID,
|
||||
0, // SALT
|
||||
0, // MEGA
|
||||
SA_SANIC,
|
||||
0, // TELE
|
||||
SA_BUNE,
|
||||
SA_BONK,
|
||||
SA_ANOM,
|
||||
0, // ANONE
|
||||
0 // WANTDIE
|
||||
};
|
||||
// is ignored (hide away achievements that can't be done yet)
|
||||
static const bool ignoreme[] =
|
||||
{
|
||||
false, // GCSANDWICH
|
||||
false, // ONESTANDING
|
||||
false, // OOPSIE
|
||||
false, // GHOST
|
||||
false, // CLONK
|
||||
false, // ALLITEMS
|
||||
false, // CONGA
|
||||
false, // GRAVITY
|
||||
false, // FLIGHT
|
||||
false, // CLIFFYB
|
||||
false, // PAR
|
||||
false, // ONEGUY
|
||||
false, // GOLDEN
|
||||
false, // GIB
|
||||
false, // BARRIER
|
||||
false, // BOSSDASH
|
||||
false, // SNEEZE
|
||||
false, // FUEL
|
||||
false, // SLAYER
|
||||
false, // DIME
|
||||
false, // STOMP
|
||||
false, // CHEAT
|
||||
false, // THRUWALL
|
||||
true, // MASHIRO
|
||||
false, // LEAD
|
||||
false, // LOVE
|
||||
false, // BUTTS
|
||||
false, // PLUSH
|
||||
false, // BUSTIN
|
||||
false, // MOTH
|
||||
false, // IWAD
|
||||
false, // BRAKE
|
||||
false, // RAGE
|
||||
false, // ABORT
|
||||
false, // PARRY
|
||||
false, // ALLKILLS
|
||||
false, // ALLSECRETS
|
||||
false, // REFLECT
|
||||
false, // SEKIRO
|
||||
false, // WAVE
|
||||
false, // FRIEND
|
||||
false, // SHOCK
|
||||
false, // BALLS
|
||||
false, // REFRESH
|
||||
false, // STEP
|
||||
false, // SUNNY
|
||||
false, // THICC
|
||||
false, // EVERYTHING
|
||||
false, // ALLCOLL
|
||||
false, // SLEMG
|
||||
false, // DOSH
|
||||
false, // JUMP
|
||||
false, // EZKILL
|
||||
false, // LIGMA
|
||||
false, // YEET
|
||||
false, // MBF
|
||||
true, // LIGHTNING
|
||||
true, // DAKKA
|
||||
true, // ROAST
|
||||
true, // DAB
|
||||
true, // HND
|
||||
true, // GEPGUN
|
||||
true, // FULLER
|
||||
true, // PENE
|
||||
false, // ACID
|
||||
false, // SALT
|
||||
false, // MEGA
|
||||
false, // SANIC
|
||||
false, // TELE
|
||||
false, // BUNE
|
||||
false, // BONK
|
||||
false, // ANOM
|
||||
false, // ANONE
|
||||
false // WANTDIE
|
||||
};
|
||||
// progress tracking cvar (if any)
|
||||
static const Name pvar[] =
|
||||
{
|
||||
'swwm_progress_gcsandwich',
|
||||
'None', // ONESTANDING
|
||||
'None', // OOPSIE
|
||||
'swwm_progress_ghost',
|
||||
'None', // CLONK
|
||||
'swwm_progress_allitems',
|
||||
'swwm_progress_conga',
|
||||
'swwm_progress_gravity',
|
||||
'swwm_progress_flight',
|
||||
'None', // CLIFFYB
|
||||
'swwm_progress_par',
|
||||
'None', // ONEGUY
|
||||
'swwm_progress_golden',
|
||||
'swwm_progress_gib',
|
||||
'swwm_progress_barrier',
|
||||
'swwm_progress_bossdash',
|
||||
'swwm_progress_sneeze',
|
||||
'swwm_progress_fuel',
|
||||
'swwm_progress_slayer',
|
||||
'None', // DIME
|
||||
'swwm_progress_stomp',
|
||||
'None', // CHEAT
|
||||
'swwm_progress_thruwall',
|
||||
'None', // MASHIRO
|
||||
'swwm_progress_lead',
|
||||
'swwm_progress_love',
|
||||
'swwm_progress_butts',
|
||||
'swwm_progress_plush',
|
||||
'swwm_progress_bustin',
|
||||
'swwm_progress_moth',
|
||||
'swwm_progress_iwad',
|
||||
'swwm_progress_brake',
|
||||
'swwm_progress_rage',
|
||||
'None', // ABORT
|
||||
'swwm_progress_parry',
|
||||
'swwm_progress_allkills',
|
||||
'swwm_progress_allsecrets',
|
||||
'swwm_progress_reflect',
|
||||
'None', // SEKIRO
|
||||
'None', // WAVE
|
||||
'swwm_progress_friend',
|
||||
'swwm_progress_shock',
|
||||
'swwm_progress_balls',
|
||||
'swwm_progress_refresh',
|
||||
'swwm_progress_step',
|
||||
'swwm_progress_sunny',
|
||||
'swwm_progress_thicc',
|
||||
'None', // EVERYTHING
|
||||
'swwm_progress_allcoll',
|
||||
'swwm_progress_slemg',
|
||||
'swwm_progress_dosh',
|
||||
'swwm_progress_jump',
|
||||
'swwm_progress_ezkill',
|
||||
'None', // LIGMA
|
||||
'None', // YEET
|
||||
'None', // MBF
|
||||
'None', // LIGHTNING
|
||||
'swwm_progress_dakka',
|
||||
'swwm_progress_roast',
|
||||
'swwm_progress_dab',
|
||||
'swwm_progress_hnd',
|
||||
'swwm_progress_gepgun',
|
||||
'None', // FULLER
|
||||
'swwm_progress_pene',
|
||||
'swwm_progress_acid',
|
||||
'None', // SALT
|
||||
'swwm_progress_mega',
|
||||
'swwm_progress_sanic',
|
||||
'None', // TELE
|
||||
'swwm_progress_bune',
|
||||
'swwm_progress_bonk',
|
||||
'swwm_progress_anom',
|
||||
'None', // ANONE
|
||||
'None' // WANTDIE
|
||||
};
|
||||
achievements.Clear();
|
||||
for ( int i=0; i<vars.Size(); i++ )
|
||||
{
|
||||
if ( ignoreme[i] ) continue;
|
||||
let ac = new("MenuAchievement");
|
||||
ac.state = CVar.FindCVar(vars[i]);
|
||||
if ( (names[i] == "$SWWM_ACHIEVEMENT_EVERYTHING") && !ac.state.GetInt() )
|
||||
continue; // this one must remain hidden until obtained
|
||||
ac.progress = (pvar[i]!='None')?CVar.FindCVar(pvar[i]):null;
|
||||
ac.maxval = ac.num = number[i];
|
||||
// special cases
|
||||
if ( vars[i] == 'swwm_achievement_allcoll' )
|
||||
{
|
||||
int nc = 0;
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
{
|
||||
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;
|
||||
}
|
||||
else if ( vars[i] == 'swwm_achievement_dakka' ) ac.maxval = 60;
|
||||
else if ( vars[i] == 'swwm_achievement_dosh' ) ac.maxval = 1000000000;
|
||||
else if ( vars[i] == 'swwm_achievement_mega' ) ac.maxval = 1000000;
|
||||
else if ( vars[i] == 'swwm_achievement_iwad' ) ac.maxval = 7;
|
||||
ac.tag = names[i].."_TAG";
|
||||
ac.txt = names[i].."_TXT";
|
||||
ac.icon = TexMan.CheckForTexture(StringTable.Localize(names[i].."_PIC"),TexMan.Type_Any);
|
||||
TextureID invalid;
|
||||
invalid.SetInvalid();
|
||||
if ( ac.icon == invalid )
|
||||
ac.icon = TexMan.CheckForTexture("graphics/Achievements/AchievementNone.png",TexMan.Type_Any);
|
||||
achievements.Push(ac);
|
||||
}
|
||||
SWWMUtility.LoadAchievements(achievements,true);
|
||||
AchievementUnknown = TexMan.CheckForTexture("graphics/Achievements/AchievementUnknown.png",TexMan.Type_Any);
|
||||
}
|
||||
|
||||
|
|
@ -2617,7 +2176,7 @@ Class DemolitionistMenu : GenericMenu
|
|||
qsort_collectible(a,p+1,h);
|
||||
}
|
||||
|
||||
private bool CmpAchievement( MenuAchievement a, MenuAchievement b )
|
||||
private bool CmpAchievement( SWWMAchievement a, SWWMAchievement b )
|
||||
{
|
||||
bool adone = !!(a.state.GetInt()), bdone = !!(b.state.GetInt());
|
||||
double afactor = adone?1.:0., bfactor = bdone?1.:0.;
|
||||
|
|
@ -2625,7 +2184,7 @@ Class DemolitionistMenu : GenericMenu
|
|||
{
|
||||
int val = a.progress.GetInt();
|
||||
int mval = a.maxval;
|
||||
if ( a.tag == "$SWWM_ACHIEVEMENT_IWAD_TAG" )
|
||||
if ( a.basename == "iwad" )
|
||||
{
|
||||
// special case
|
||||
mval = 3;
|
||||
|
|
@ -2640,7 +2199,7 @@ Class DemolitionistMenu : GenericMenu
|
|||
{
|
||||
int val = b.progress.GetInt();
|
||||
int mval = b.maxval;
|
||||
if ( b.tag == "$SWWM_ACHIEVEMENT_IWAD_TAG" )
|
||||
if ( b.basename == "iwad" )
|
||||
{
|
||||
// special case
|
||||
mval = 3;
|
||||
|
|
@ -2654,8 +2213,8 @@ Class DemolitionistMenu : GenericMenu
|
|||
if ( adone && bdone )
|
||||
{
|
||||
// alphabetic sort
|
||||
String tag1 = StringTable.Localize(a.tag),
|
||||
tag2 = StringTable.Localize(b.tag);
|
||||
String tag1 = StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TAG"),
|
||||
tag2 = StringTable.Localize("$SWWM_ACHIEVEMENT_"..b.basename.."_TAG");
|
||||
return tag1 > tag2;
|
||||
}
|
||||
if ( !adone && !bdone )
|
||||
|
|
@ -2664,34 +2223,34 @@ Class DemolitionistMenu : GenericMenu
|
|||
if ( afactor != bfactor )
|
||||
return afactor < bfactor;
|
||||
// alphabetic sort
|
||||
String tag1 = StringTable.Localize(a.tag),
|
||||
tag2 = StringTable.Localize(b.tag);
|
||||
String tag1 = StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TAG"),
|
||||
tag2 = StringTable.Localize("$SWWM_ACHIEVEMENT_"..b.basename.."_TAG");
|
||||
return tag1 > tag2;
|
||||
}
|
||||
// state sort
|
||||
return bdone;
|
||||
}
|
||||
|
||||
private int partition_achievements( Array<MenuAchievement> a, int l, int h )
|
||||
private int partition_achievements( Array<SWWMAchievement> a, int l, int h )
|
||||
{
|
||||
MenuAchievement pv = a[h];
|
||||
SWWMAchievement pv = a[h];
|
||||
int i = (l-1);
|
||||
for ( int j=l; j<=(h-1); j++ )
|
||||
{
|
||||
if ( CmpAchievement(pv,a[j]) )
|
||||
{
|
||||
i++;
|
||||
MenuAchievement tmp = a[j];
|
||||
SWWMAchievement tmp = a[j];
|
||||
a[j] = a[i];
|
||||
a[i] = tmp;
|
||||
}
|
||||
}
|
||||
MenuAchievement tmp = a[h];
|
||||
SWWMAchievement tmp = a[h];
|
||||
a[h] = a[i+1];
|
||||
a[i+1] = tmp;
|
||||
return i+1;
|
||||
}
|
||||
private void qsort_achievements( Array<MenuAchievement> a, int l, int h )
|
||||
private void qsort_achievements( Array<SWWMAchievement> a, int l, int h )
|
||||
{
|
||||
if ( l >= h ) return;
|
||||
int p = partition_achievements(a,l,h);
|
||||
|
|
@ -3584,20 +3143,21 @@ Class DemolitionistMenu : GenericMenu
|
|||
let fnt2 = LangFont(MiniwiFont);
|
||||
int barsz = (language~=="jp")?400:480;
|
||||
int txtsz = (language~=="jp")?360:440;
|
||||
bool obscure = (swwm_filterachievements==1);
|
||||
for ( int i=ofs; i<cnt; i++ )
|
||||
{
|
||||
if ( yy >= 360 ) break;
|
||||
let a = achievements[i];
|
||||
bool completed = !!a.state.GetInt();
|
||||
bool hasprogress = (a.progress && a.progress.GetInt());
|
||||
Screen.DrawTexture((!completed&&!hasprogress)?AchievementUnknown:a.icon,false,origin.x+xx+1,origin.y+yy+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_FillColor,(!completed&&!hasprogress)?Color(8,8,8):Color(16,16,16));
|
||||
Screen.DrawTexture((!completed&&!hasprogress)?AchievementUnknown:a.icon,false,origin.x+xx,origin.y+yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Desaturate,(!completed)*255,DTA_ColorOverlay,completed?Color(0,0,0,0):hasprogress?Color(96,0,0,0):Color(192,0,0,0));
|
||||
Screen.DrawTexture((!completed&&!hasprogress&&obscure)?AchievementUnknown:a.icon,false,origin.x+xx+1,origin.y+yy+1,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_FillColor,(!completed&&!hasprogress&&obscure)?Color(8,8,8):Color(16,16,16));
|
||||
Screen.DrawTexture((!completed&&!hasprogress&&obscure)?AchievementUnknown:a.icon,false,origin.x+xx,origin.y+yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Desaturate,(!completed)*255,DTA_ColorOverlay,completed?Color(0,0,0,0):(hasprogress||!obscure)?Color(96,0,0,0):Color(192,0,0,0));
|
||||
// progress bar
|
||||
if ( a.progress )
|
||||
{
|
||||
int val = a.progress.GetInt();
|
||||
int mval = a.maxval;
|
||||
if ( a.tag == "$SWWM_ACHIEVEMENT_IWAD_TAG" )
|
||||
if ( a.basename == "iwad" )
|
||||
{
|
||||
// special case
|
||||
mval = 3;
|
||||
|
|
@ -3620,11 +3180,11 @@ Class DemolitionistMenu : GenericMenu
|
|||
Screen.DrawText(TewiFont,Font.CR_UNTRANSLATED,origin.x+xx,origin.y+yy+34,str,DTA_Spacing,-5,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
}
|
||||
// the text itself
|
||||
str = a.num?String.Format(StringTable.Localize(a.txt),a.num):StringTable.Localize(a.txt);
|
||||
if ( !completed && !hasprogress ) SWWMUtility.ObscureText(str,(gametic/3)+i*2);
|
||||
str = a.hasformat?String.Format(StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TXT"),a.maxval):StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TXT");
|
||||
if ( !completed && !hasprogress && obscure ) SWWMUtility.ObscureText(str,(gametic/3)+i*2);
|
||||
BrokenLines l = fnt2.BreakLines(str,txtsz);
|
||||
str = StringTable.Localize(a.tag);
|
||||
if ( !completed && !hasprogress ) SWWMUtility.ObscureText(str,(gametic/3)+i*2+1);
|
||||
str = StringTable.Localize("$SWWM_ACHIEVEMENT_"..a.basename.."_TAG");
|
||||
if ( !completed && !hasprogress && obscure ) SWWMUtility.ObscureText(str,(gametic/3)+i*2+1);
|
||||
int oy = (32-(14+(9*l.Count())))/2;
|
||||
Screen.DrawText(fnt,completed?Font.CR_GREEN:Font.CR_DARKGRAY,origin.x+xx+36,origin.y+yy+oy,str,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
|
||||
for ( int j=0; j<l.Count(); j++ )
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ Class SWWMStaticHandler : StaticEventHandler
|
|||
int checktic;
|
||||
ui bool mpsent, checked;
|
||||
int maptime;
|
||||
bool unloading;
|
||||
|
||||
override void NewGame()
|
||||
{
|
||||
|
|
@ -32,6 +33,7 @@ Class SWWMStaticHandler : StaticEventHandler
|
|||
override void WorldUnloaded( WorldEvent e )
|
||||
{
|
||||
SWWMHandler.ClearAllShaders(players[consoleplayer]);
|
||||
unloading = true;
|
||||
}
|
||||
|
||||
override void WorldTick()
|
||||
|
|
@ -41,6 +43,7 @@ Class SWWMStaticHandler : StaticEventHandler
|
|||
|
||||
override void WorldLoaded( WorldEvent e )
|
||||
{
|
||||
unloading = false;
|
||||
maptime = 0;
|
||||
if ( e.IsSavegame || e.IsReopen )
|
||||
{
|
||||
|
|
@ -53,10 +56,19 @@ Class SWWMStaticHandler : StaticEventHandler
|
|||
}
|
||||
if ( players[consoleplayer].mo )
|
||||
{
|
||||
// recheck progress on collectibles
|
||||
int nc = 0;
|
||||
for ( Inventory i=players[consoleplayer].mo.inv; i; i=i.inv ) if ( i is 'SWWMCollectible' ) nc++;
|
||||
if ( !swwm_achievement_allcoll ) CVar.FindCVar('swwm_progress_allcoll').SetInt(nc);
|
||||
// recheck progress on some per-session achievements
|
||||
if ( swwm_achievement_allcoll <= 0 )
|
||||
{
|
||||
int nc = 0;
|
||||
for ( Inventory i=players[consoleplayer].mo.inv; i; i=i.inv ) if ( i is 'SWWMCollectible' ) nc++;
|
||||
CVar.FindCVar('swwm_progress_allcoll').SetInt(nc);
|
||||
}
|
||||
if ( swwm_achievement_plush <= 0 )
|
||||
{
|
||||
let s = SWWMStats.Find(players[consoleplayer]);
|
||||
if ( s ) CVar.FindCVar('swwm_progress_plush').SetInt(s.plushuses);
|
||||
else CVar.FindCVar('swwm_progress_plush').SetInt(0);
|
||||
}
|
||||
}
|
||||
SWWMHandler.ClearAllShaders(players[consoleplayer]);
|
||||
// force a reset of the minimap zoom in case it's set beyond safe levels
|
||||
|
|
@ -189,14 +201,14 @@ Class SWWMStaticHandler : StaticEventHandler
|
|||
c.bSTANDSTILL = true;
|
||||
if ( e.Args[0] == consoleplayer )
|
||||
{
|
||||
S_StartSound("misc/achievement",CHAN_ITEM,CHANF_UI|CHANF_OVERLAP);
|
||||
S_StartSound("misc/achievement2",CHAN_VOICE,CHANF_UI|CHANF_OVERLAP);
|
||||
c.A_StartSound("misc/achievement",CHAN_ITEM,CHANF_UI|CHANF_OVERLAP,attenuation:0.);
|
||||
c.A_StartSound("misc/achievement2",CHAN_VOICE,CHANF_UI|CHANF_OVERLAP,attenuation:0.);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.Printf(String.Format(StringTable.Localize("$SWWM_CHEEVOREM"),players[e.Args[0]].GetUserName(),StringTable.Localize(e.Name.Mid(16))));
|
||||
c.A_StartSound("misc/achievement",CHAN_ITEM,CHANF_OVERLAP);
|
||||
c.A_StartSound("misc/achievement2",CHAN_ITEM,CHANF_OVERLAP);
|
||||
c.A_StartSound("misc/achievement",CHAN_ITEM,CHANF_UI|CHANF_OVERLAP);
|
||||
c.A_StartSound("misc/achievement2",CHAN_ITEM,CHANF_UI|CHANF_OVERLAP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,121 @@ enum EDoExplosionFlags
|
|||
DE_COUNTSTEALTH = 256, // only count hits for inactive monsters
|
||||
};
|
||||
|
||||
Class SWWMAchievement
|
||||
{
|
||||
String basename;
|
||||
transient CVar state, progress;
|
||||
TextureID icon;
|
||||
int maxval;
|
||||
bool hasformat;
|
||||
}
|
||||
|
||||
Class SWWMUtility
|
||||
{
|
||||
// loaded from a file, neater than having a bunch of static arrays
|
||||
// filter: excludes unobtained achievements if swwm_filterachievements is 2
|
||||
// also excludes the "everything" achievement unless unlocked
|
||||
static clearscope void LoadAchievements( out Array<SWWMAchievement> achievements, bool filter = false )
|
||||
{
|
||||
achievements.Clear();
|
||||
let lmp = Wads.FindLump("achievements.lst");
|
||||
if ( lmp == -1 ) ThrowAbortException("'achievements.lst' not found");
|
||||
String dat = Wads.ReadLump(lmp);
|
||||
Array<String> list;
|
||||
dat.Split(list,"\n");
|
||||
bool hide = (filter&&(swwm_filterachievements==2));
|
||||
for ( int i=0; i<list.Size(); i++ )
|
||||
{
|
||||
if ( (list[i].Length() == 0) || (list[i].Left(1) == "#") || (list[i].Left(1) == "") )
|
||||
continue;
|
||||
Array<String> ln;
|
||||
list[i].Split(ln,",",0);
|
||||
let ac = new("SWWMAchievement");
|
||||
ac.basename = ln[0];
|
||||
ac.maxval = ln[1].ToInt();
|
||||
ac.hasformat = (ln[2]~=="yes");
|
||||
ac.state = CVar.FindCVar("swwm_achievement_"..ac.basename);
|
||||
// if filtering, always hide the full completion achievement until it's unlocked
|
||||
if ( filter && (ac.basename == "everything") && (ac.state.GetInt() <= 0) )
|
||||
{
|
||||
ac.Destroy();
|
||||
continue;
|
||||
}
|
||||
if ( !ac.state ) ThrowAbortException("could not find cvar 'swwm_achievement_"..ac.basename.."'");
|
||||
if ( ac.maxval )
|
||||
{
|
||||
ac.progress = CVar.FindCVar("swwm_progress_"..ac.basename);
|
||||
if ( !ac.progress ) ThrowAbortException("could not find cvar 'swwm_progress_"..ac.basename.."'");
|
||||
// special case for maxval
|
||||
if ( ac.basename == "allcoll" )
|
||||
{
|
||||
int nc = 0;
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
else ac.progress = null;
|
||||
ac.icon = TexMan.CheckForTexture("graphics/Achievements/Achievement"..ac.basename..".png",TexMan.Type_Any);
|
||||
// fallback icon if one is not found
|
||||
if ( !ac.icon.IsValid() ) ac.icon = TexMan.CheckForTexture("graphics/Achievements/AchievementNone.png",TexMan.Type_Any);
|
||||
// hide away achievements at 0%
|
||||
if ( hide && (ac.state.GetInt() <= 0) && (!ac.progress || (ac.progress.GetInt() <= 0)) )
|
||||
{
|
||||
ac.Destroy();
|
||||
continue;
|
||||
}
|
||||
achievements.Push(ac);
|
||||
}
|
||||
}
|
||||
// achievement helpers
|
||||
static clearscope void MarkAchievement( Name mvar, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(mvar);
|
||||
if ( !cv ) return;
|
||||
if ( cv.GetInt() < 1 ) cv.SetInt(1);
|
||||
}
|
||||
static clearscope void AchievementProgress( Name pvar, int val, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(pvar);
|
||||
if ( !cv ) return;
|
||||
int cval = cv.GetInt();
|
||||
cv.SetInt(max(cval,val));
|
||||
}
|
||||
static clearscope void AchievementProgressInc( Name pvar, int inc, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(pvar);
|
||||
if ( !cv ) return;
|
||||
int cval = cv.GetInt();
|
||||
cv.SetInt(cval+inc);
|
||||
}
|
||||
static clearscope void AchievementProgressIncDouble( Name pvar, double inc, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(pvar);
|
||||
if ( !cv ) return;
|
||||
double cval = cv.GetFloat();
|
||||
cv.SetFloat(cval+inc);
|
||||
}
|
||||
static clearscope void AchievementProgressOr( Name pvar, int val, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(pvar);
|
||||
if ( !cv ) return;
|
||||
int cval = cv.GetInt();
|
||||
cv.SetInt(cval|val);
|
||||
}
|
||||
|
||||
// thanks zscript
|
||||
static clearscope double fract( double a )
|
||||
{
|
||||
|
|
@ -1629,47 +1742,6 @@ Class SWWMUtility
|
|||
return false, checkme;
|
||||
}
|
||||
|
||||
// achievement helpers
|
||||
static clearscope void MarkAchievement( Name mvar, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(mvar);
|
||||
if ( !cv ) return;
|
||||
if ( cv.GetInt() < 1 ) cv.SetInt(1);
|
||||
}
|
||||
static clearscope void AchievementProgress( Name pvar, int val, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(pvar);
|
||||
if ( !cv ) return;
|
||||
int cval = cv.GetInt();
|
||||
cv.SetInt(max(cval,val));
|
||||
}
|
||||
static clearscope void AchievementProgressInc( Name pvar, int inc, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(pvar);
|
||||
if ( !cv ) return;
|
||||
int cval = cv.GetInt();
|
||||
cv.SetInt(cval+inc);
|
||||
}
|
||||
static clearscope void AchievementProgressIncDouble( Name pvar, double inc, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(pvar);
|
||||
if ( !cv ) return;
|
||||
double cval = cv.GetFloat();
|
||||
cv.SetFloat(cval+inc);
|
||||
}
|
||||
static clearscope void AchievementProgressOr( Name pvar, int val, PlayerInfo p = null )
|
||||
{
|
||||
if ( !p || (p != players[consoleplayer]) ) return;
|
||||
let cv = CVar.FindCVar(pvar);
|
||||
if ( !cv ) return;
|
||||
int cval = cv.GetInt();
|
||||
cv.SetInt(cval|val);
|
||||
}
|
||||
|
||||
// full reset of inventory (excluding collectibles, and optionally resetting the score)
|
||||
static play void WipeInventory( Actor mo, bool resetscore = false, bool allplayers = false )
|
||||
{
|
||||
|
|
|
|||