// main mod cvars
user string swwm_voicetype = "default";		// voice for your demolitionist
//user color swwm_tagcolor = "40 FF 00";	// color of your model tags, not available due to engine dickery
nosave float swwm_flashstrength = 1.0;		// strength of screen flashes
nosave int swwm_hudmargin = 10;			// margin around fullscreen hud elements
nosave int swwm_maxshown = 4;			// max messages to show normally
nosave int swwm_maxshownbig = 10;			// max messages to show when chatting
nosave int swwm_maxpickup = 5;			// total pickup messages visible
nosave int swwm_mutevoice = 0;			// mute demolitionist voice
						// 0 - none
						// 1 - combat comments
						// 2 - item/secret comments
						// 3 - map start comment
						// 4 - pain/death and grunts
nosave int swwm_chatduration = 25;		// lifespan of chat messages
nosave int swwm_msgduration = 5;		// lifespan of other messages
nosave int swwm_pickduration = 3;		// lifespan of pickup messages
server bool swwm_sharekeys = true;		// share keys in mp
nosave noarchive int swwm_lasttab = 0;		// last selected tab in the menu
nosave noarchive int swwm_lastloretab = 0;	// last selected tab in the library submenu
nosave noarchive int swwm_laststattab = 0;	// last selected tab in the stats submenu
user bool swwm_autousearmor = true;		// automatically use armor items when possible
user bool swwm_autousehealth = true;		// automatically use health items when possible
user bool swwm_autouseammo = true;		// automatically use ammo fabricators when possible (excl. tier 4)
server int swwm_enforceautousearmor = 0;	// 1: server enforces auto use, -1: server enforces no auto use, 0: server respects user setting
server int swwm_enforceautousehealth = 0;	// likewise for health
server int swwm_enforceautouseammo = 0;		// likewise for fabricators
nosave bool swwm_targeter = true;			// show targeter healthbars
nosave bool swwm_targettags = true;		// show enemy tags above healthbars
nosave bool swwm_healthnums = true;		// show damage/healing numbers
nosave bool swwm_scorenums = true;		// show score numbers
nosave bool swwm_scorebonus = true;		// show score bonuses
nosave bool swwm_pois = true;			// show points of interest highlighted by omnisight
server bool swwm_fly6dof = false;		// flying uses 6dof movement, toggleable for those who get motion sickness
nosave bool swwm_othervoice = true;		// can hear other player's voice lines in coop
nosave bool swwm_shaders = true;		// use pp shaders for some effects
nosave bool swwm_earbuster = false;		// limits loudness of wallbuster fire sounds
server bool swwm_revive = true;			// allows the player to do an "emergency reboot" when dying
server int swwm_revivecooldown = 60;		// cooldown after using a revive, in seconds (0: no limit)
nosave bool swwm_interart = true;		// show fanart on intermissions
server bool swwm_balluse = true;		// lead ball can "press" switches remotely
nosave bool swwm_bosshealthbars = true;		// display large healthbars for vanilla boss encounters
server bool swwm_upgradebosses = true;		// vanilla bosses will be "upgraded" to be less insta-die prone
server bool swwm_extraalert = false;		// enables A_AlertMonsters calls for certain things which may be cpu-heavy
nosave bool swwm_accdamage = false;		// damage within the same tic is grouped into a single damage number
nosave int swwm_maxtargetdist = 2000;		// maximum distance for target healthbars to be updated
nosave int swwm_maxtargets = 40;		// maximum targeter healthbars to display (0 = unlimited)
nosave int swwm_maxscorenums = 0;		// maximum score numbers to display (0 = unlimited)
nosave int swwm_maxdamnums = 0;			// maximum damage/healing numbers to display (0 = unlimited)
nosave int swwm_hudscale = 0;			// HUD scaling (0 = use GZDoom scaling)
nosave int swwm_barscale = 2;			// target healthbar scaling (0 = use GZDoom scaling)
nosave int swwm_scrscale = 2;			// score scaling (0 = use GZDoom scaling)
nosave int swwm_numscale = 3;			// damnum scaling (0 = use GZDoom scaling)
nosave int swwm_poiscale = 1;			// point of interest scaling (0 = use GZDoom scaling)
nosave int swwm_detscale = 2;			// item sense scaling (0 = use GZDoom scaling)
server bool swwm_blood = false;			// custom blood/gibbing
server int swwm_maxblood = 400;			// max blood effects at any time
server int swwm_maxgibs = 100;			// max gibs at any time
server int swwm_maxcasings = 200;		// max casings and spent mags at any time
server int swwm_maxdebris = 500;		// max chunks of debris at any time
nosave bool swwm_fuzz = true;			// allows toggling the fuzz shader on the demolitionist menus, useful if you're streaming/recording since it destroys the encoding quality
nosave bool swwm_cbtpause = true;		// wallbuster menu pauses the game
nosave noarchive int swwm_cbtlast = 0;		// last selected ammo for the wallbuster
server bool swwm_cbtall = false;		// wallbuster breaks any wall, not just movable ones
server bool swwm_doomfall = false;		// monsters take fall damage outside of hexen
server bool swwm_capmcrange = false;		// cap ynykron chain reaction range
server bool swwm_resetscore = true;		// reset score back to 0 on pistol starts
server bool swwm_notrack = false;		// disables all combat tracking (useful to speed up slaughterwads)
server bool swwm_ynykronalert = false;		// caps ynykron alert (so it doesn't wake everyone up)
nosave bool swwm_menupause = true;		// pause the game when demolitionist menu is open
nosave noarchive bool swwm_debugblast = false;	// debug visual aid for DoExplosion
nosave bool swwm_funtags = false;		// replace vanilla monster names with silly ones
server bool swwm_omnibust = false;		// TODO add wallbusting effect to all weapons
server bool swwm_superfuel = false;		// TODO enable unlimited fuel
server bool swwm_partytime = false;		// TODO killed enemies burst into confetti
server bool swwm_simplefog = false;		// simplified teleport fogs (useful to speed up slaughterwads)
nosave bool swwm_bigtags = false;		// use a bigger font for targeter tags
nosave bool swwm_intermusic = false;		// use original intermission music
server int swwm_enemydrops = 0;			// allow enemies to drop ammo and weapons (-1 - no ammo or weapons, 0 - ammo only, 1 - both)
server bool swwm_shotgib = true;		// buckshot can gib (some people don't like this for some reason, so it's an option now)
user bool swwm_collectanim = true;		// player special gestures for collectables (first person only)
user bool swwm_collectanimkey = true;		// same but for key items
server bool swwm_shadows = true;		// enables blob shadows under mod entities, like in UT (except it also affects inventory items)
nosave bool swwm_precisecrosshair = true;	// use mod's own, more precise crosshair
nosave bool swwm_ldspoil = false;		// [LD] always shows "Legendary" prefix on Legendary monsters, otherwise only when they've transformed
nosave bool swwm_camhud = false;		// keep full hud visible when operating cameras, otherwise only shows messages
nosave bool swwm_rageshader = false;		// alternate ragekit shader for people with photosensitivity
server bool swwm_uncapalert = false;		// all noise alerts have infinite range
nosave int swwm_damagetarget = 1;		// conditional healthbar hiding (1 - hide until damage is first taken, 2 - hide if at full health)
server int swwm_strictuntouchable = 0;		// untouchable bonus ends... (1 - even if your armor absorbed all the damage, 2 - if you get hit by anything PERIOD)
server int swwm_silencemap = 0;			// silences the map when all kills/items/secrets are achieved (2 - play calm music)
nosave int swwm_shadowdist = 2000;		// max distance beyond which blob shadows are no longer rendered, helps performance
server bool swwm_swapweapons = true;		// [DLC1] allows carrying only one weapon in each slot (excluding starter melee)
nosave int swwm_forcestats = 0;			// always shows level stats on the HUD, not just when the automap is open (2 - also show map name, otherwise only stats)
user int swwm_funtrails = 0;			// recolors trails of eviscerator chunks and sheen bullets
server bool swwm_pistolstart = false;		// enforces pistol start for all maps (excluding hubs)
nosave int swwm_numcolor_scr = 5;		// font color for score numbers (default: gold)
nosave int swwm_numcolor_bonus = 23;		// font color for bonus numbers (default: fire)
nosave int swwm_numcolor_dmg = 6;		// font color for damage numbers (default: red)
nosave int swwm_numcolor_hp = 7;		// font color for health numbers (default: blue)
nosave int swwm_numcolor_ap = 3;		// font color for armor numbers (default: green)
server int swwm_drlaskill = 3;			// [DRLA Monsters] skill setting for monster spawns
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
nosave noarchive bool swwm_debugview = false;	// debug visual aid for various things, such as actor collision, trajectories, relationships, etc.
nosave noarchive bool swwm_oldcheat = false;	// set to true if you used a SWWM Platinum cheat, so the easter egg only appears once per session
server bool swwm_selflight = true;		// player emits light
server bool swwm_usetopickup = false;		// allow item pickup only by pressing use
server bool swwm_meleepickup = false;		// allow picking up items through melee
nosave bool swwm_buttsfx = true;		// buttslam homerun SFX
nosave int swwm_sewercount = 0;			// I'm sorry Civvie

// minimap settings
nosave bool swwm_mm_enable = true;		// show a minimap below the score counter
nosave noarchive float swwm_mm_zoom = 1;	// zoom level of minimap
nosave bool swwm_mm_rotate = true;		// rotate minimap
nosave bool swwm_mm_grid = false;		// show blockmap grid plus (0,0) crosshair
nosave bool swwm_mm_portaloverlay = true;	// show portal overlays, like the gzdoom automap (but unlike the gzdoom automap, we also overlay actors)
nosave bool swwm_mm_missiles = true;		// show projectiles (how revolutionary)
nosave int swwm_mm_colorset = 0;		// 0: SWWM GZ, 1: GZDoom, 2: Doom, 3: Strife, 4: Raven
nosave color swwm_mm_backcolor = "10 10 10";
nosave color swwm_mm_cdwallcolor = "30 50 70";
nosave color swwm_mm_efwallcolor = "80 a0 c0";
nosave color swwm_mm_fdwallcolor = "50 70 90";
nosave color swwm_mm_gridcolor = "30 20 40";
nosave color swwm_mm_interlevelcolor = "ff 00 60";
nosave color swwm_mm_intralevelcolor = "00 60 ff";
nosave color swwm_mm_lockedcolor = "00 90 80";
nosave color swwm_mm_notseencolor = "20 20 30";
nosave color swwm_mm_portalcolor = "40 30 20";
nosave color swwm_mm_secretsectorcolor = "80 00 ff";
nosave color swwm_mm_secretwallcolor = "60 40 80";
nosave color swwm_mm_specialwallcolor = "ff a0 00";
nosave color swwm_mm_thingcolor = "ff ff ff";
nosave color swwm_mm_thingcolor_citem = "00 ff ff";
nosave color swwm_mm_thingcolor_friend = "80 ff a0";
nosave color swwm_mm_thingcolor_item = "ff c0 00";
nosave color swwm_mm_thingcolor_monster = "ff 60 40";
nosave color swwm_mm_thingcolor_ncmonster = "a0 40 20";
nosave color swwm_mm_thingcolor_shootable = "ff a0 a0";	// thingcolor as fallback
nosave color swwm_mm_thingcolor_vipitem = "80 60 ff";	// unexploredsecretcolor as fallback
nosave color swwm_mm_thingcolor_missile = "ff a0 20";	// specialwallcolor as fallback
nosave color swwm_mm_tswallcolor = "30 20 40";
nosave color swwm_mm_unexploredsecretcolor = "40 00 80";
nosave color swwm_mm_wallcolor = "c0 e0 ff";
nosave color swwm_mm_xhaircolor = "80 80 ff";
nosave color swwm_mm_yourcolor = "80 ff 00";

server noarchive bool swwm_iseriouslywanttoplaythiswithbd = false;	// self-explanatory

nosave int swwm_playtime = 0;	// total playtime in seconds

// cross-session achievement cvars (0: locked, 1: unlocked, 2: notified)
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_anom = 0;
nosave int swwm_achievement_anone = 0;
nosave int swwm_achievement_balls = 0;
nosave int swwm_achievement_barrel = 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_candy = 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_crush = 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_doodle = 0;
nosave int swwm_achievement_doomboss1 = 0;
nosave int swwm_achievement_doomboss2 = 0;
nosave int swwm_achievement_doomboss3 = 0;
nosave int swwm_achievement_doomboss4 = 0;
nosave int swwm_achievement_doomboss5 = 0;
nosave int swwm_achievement_doomboss6 = 0;
nosave int swwm_achievement_doomboss7 = 0;
nosave int swwm_achievement_doomboss8 = 0;
nosave int swwm_achievement_doomboss9 = 0;
nosave int swwm_achievement_doomboss10 = 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_grenade = 0;
nosave int swwm_achievement_hereticboss1 = 0;
nosave int swwm_achievement_hereticboss2 = 0;
nosave int swwm_achievement_hereticboss3 = 0;
nosave int swwm_achievement_hereticboss4 = 0;
nosave int swwm_achievement_hereticboss5 = 0;
nosave int swwm_achievement_hexenboss1 = 0;
nosave int swwm_achievement_hexenboss2 = 0;
nosave int swwm_achievement_hexenboss3 = 0;
nosave int swwm_achievement_hexenboss4 = 0;
nosave int swwm_achievement_hexenboss5 = 0;
nosave int swwm_achievement_hexenboss6 = 0;
nosave int swwm_achievement_hexenboss7 = 0;
nosave int swwm_achievement_hexenboss8 = 0;
nosave int swwm_achievement_hexenboss9 = 0;
nosave int swwm_achievement_hexenboss10 = 0;
nosave int swwm_achievement_hexenboss11 = 0;
nosave int swwm_achievement_hnd = 0;
nosave int swwm_achievement_jump = 0;
nosave int swwm_achievement_keen = 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_peace = 0;
nosave int swwm_achievement_pene = 0;
nosave int swwm_achievement_plush = 0;
nosave int swwm_achievement_puzzle = 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_shame = 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_trash = 0;
nosave int swwm_achievement_travel = 0;
nosave int swwm_achievement_untouchable = 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_acid = 0;
nosave int swwm_progress_allcoll = 0;
nosave int swwm_progress_allitems = 0;
nosave int swwm_progress_allkills = 0;
nosave int swwm_progress_allsecrets = 0;
nosave int swwm_progress_anom = 0;
nosave int swwm_progress_balls = 0;
nosave int swwm_progress_barrel = 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_candy = 0;
nosave int swwm_progress_conga = 0;
nosave int swwm_progress_dab = 0;
nosave int swwm_progress_dakka = 0;
nosave int swwm_progress_doodle = 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_grenade = 0;
nosave int swwm_progress_hnd = 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_puzzle = 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_thruwall = 0;
nosave float swwm_progress_travel = 0;	// also needs to be float
