diff --git a/cvarinfo.base b/cvarinfo.base index 394d7e279..92b4b960d 100644 --- a/cvarinfo.base +++ b/cvarinfo.base @@ -3,9 +3,6 @@ user string swwm_voicetype = "default"; // voice for your demolitionist user int swwm_tagcolor = 0; // customize glowing tag color 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 @@ -13,72 +10,44 @@ nosave int swwm_mutevoice = 0; // mute demolitionist voice // 3 - map start comment // 4 - pain/death and grunts nosave int swwm_voiceamp = 2; // additional voice line amplification, up to 4x -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 -user bool swwm_autousearmor = true; // automatically use armor items when possible -user bool swwm_autousehealth = true; // automatically use health items when possible 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_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 int swwm_interart = 1; // show art on intermissions (2: only fanart, 3: only official renders) 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_barscalerel = -1; // target healthbar scaling (relative) -nosave int swwm_numscalerel = 0; // damnum scaling (relative) -nosave int swwm_scrscalerel = -1; // score scaling (relative) -nosave int swwm_poiscalerel = -2; // point of interest scaling (relative) -nosave int swwm_detscalerel = -1; // item sense scaling (relative) server bool swwm_blood = true; // custom blood/gibbing server int swwm_maxblood = 200; // max blood effects at any time server int swwm_maxgibs = 100; // max gibs at any time server int swwm_maxcasings = 100; // max casings and spent mags at any time server int swwm_maxdebris = 200; // max chunks of debris at any time nosave bool swwm_fuzz = true; // allows toggling the fuzz shader on menus/backgrounds, 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 bool swwm_menupause = true; // pause the game when demolitionist menus are open nosave noarchive bool swwm_debugblast = false; // debug visual aid for DoExplosion nosave bool swwm_funtags = true; // replace vanilla monster names with silly ones server bool swwm_omnibust = false; // add wallbusting effect to all weapons server bool swwm_superfuel = false; // enable unlimited fuel server bool swwm_partytime = false; // 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 int swwm_precisecrosshair = 1; // use mod's own, more precise crosshair (2 - force even when crosshair is not on) 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 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 bool swwm_silencemap = true; // silences the map when all kills/items/secrets are achieved 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 = 1; // always shows level stats on the HUD, not just when the automap is open (2 - also show map name, otherwise only stats) @@ -87,11 +56,6 @@ server int swwm_ps_fullreset = 0; // full reset of inventory, including score i server int swwm_ps_resetammo = 0; // resets all ammo to zero server int swwm_ps_resetitems = 0; // removes all carried items server int swwm_ps_resethealth = 0; // sets health back to 100 -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 = true; // visual aid for low visibility items nosave bool swwm_itemglows = true; // distant items glow @@ -99,15 +63,12 @@ server bool swwm_singlefirst = false; // single weapons are selected before dua 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. -server bool swwm_selflight = true; // player emits light server bool swwm_usetopickup = false; // allow item pickup only by pressing use server bool swwm_meleepickup = true; // allow picking up items through melee nosave bool swwm_buttsfx = true; // buttslam homerun SFX nosave int swwm_sewercount = 0; // I'm sorry Civvie -server bool swwm_ondemandammo = true; // don't spawn ammo for unavailable weapons user float swwm_bumpstrength = 1.0; // intensity of fov bumping server bool swwm_nomagdrop = true; // does not drop spent magazines (the "environmentally conscious" option) -user bool swwm_autousebarrier = true; // auto-use elemental coating when standing on damaging floors nosave bool swwm_nomapmsg = false; // disables special map dialogue messages nosave bool swwm_weapontooltips = true; // shows a tooltip on weapon operation when first selected nosave string swwm_tooltipshown = ""; // which weapons have already had their tooltips displayed @@ -118,22 +79,11 @@ nosave bool swwm_beepboop = false; // prompts the Demolitionist to go "beep", " nosave string swwm_menuposehistory = ""; // stores currently seen poses for the main menu, for shuffling nosave string swwm_titlesubhistory = ""; // stores currently seen subtitles for the title screen, for shuffling nosave noarchive int swwm_profstart = 0; // starts profiling as soon as handler is registered for specified >0 tics -server bool swwm_nodeathexit = false; // completely sidesteps the inventory resetting of death exits, if you hate those server bool swwm_extendedpickup = false; // items will have an additional "virtual hitbox" that's the same size as vanilla nosave bool swwm_voicelog = false; // adds player voicelines to the message log nosave bool swwm_skipskill = false; // skips skill confirmations -nosave bool swwm_hudtrimammo = false; // only show ammo for owned weapons -nosave bool swwm_hudmugshot = true; // show an animated mugshot in the hud +nosave bool swwm_hudallammo = false; // only show ammo for owned weapons nosave bool swwm_nointroex = false; // does not play the "explosions" intro sequence -server bool swwm_slot2spawn = false; // invert first spawn order for these weapon slots (note: slot2spawn changes which pistol type you start with) -server bool swwm_slot3spawn = false; -server bool swwm_slot4spawn = false; -server bool swwm_slot5spawn = false; -server bool swwm_slot6spawn = false; -server bool swwm_slot7spawn = false; -server bool swwm_slot8spawn = false; -server bool swwm_slot9spawn = false; -server bool swwm_slot0spawn = false; // minimap settings nosave bool swwm_mm_enable = true; // show a minimap below the score counter diff --git a/language.def_menu b/language.def_menu index 8c98b744c..5069f3d8c 100644 --- a/language.def_menu +++ b/language.def_menu @@ -41,24 +41,13 @@ SWWM_MUTEALL = "Everything"; SWWM_OTITLE = "Visual Options"; SWWM_FLASH = "Screen Flash Strength"; SWWM_HUDMARGIN = "HUD Margin"; -SWWM_MAXMSG = "Max Messages"; -SWWM_MAXMSGBIG = "Max Messages (Extended)"; -SWWM_MAXPICK = "Max Pickup Messages"; -SWWM_CHATLEN = "Chat Message Duration"; -SWWM_MSGLEN = "General Message Duration"; -SWWM_PICKLEN = "Pickup Message Duration"; SWWM_ITITLE = "Item Options"; -SWWM_ARMORUSE = "Automatically Use Armor"; -SWWM_HEALTHUSE = "Automatically Use Health"; SWWM_AMMOUSE = "Automatically Use Fabricators"; -SWWM_6DOF = "6DOF Flight"; SWWM_TARGET = "Show Healthbars"; SWWM_TARGETTAG = "Show Monster Names"; SWWM_DAMNUMS = "Show Damage/Heal Numbers"; SWWM_SCORENUMS = "Show Score Numbers"; -SWWM_SCOREBONUS = "Show Score Bonuses"; SWWM_POIS = "Show Points of Interest"; -SWWM_EARBUSTER = "Reduce Wallbuster Loudness"; SWWM_SHADERS = "Use Screen Shaders"; SWWM_REVIVE = "Emergency Reboot System"; SWWM_REVIVECOOLDOWN = "Reboot Cooldown"; @@ -69,36 +58,19 @@ SWWM_INTERART = "Intermission Art"; SWWM_NORENDER = "Yes (Fanart Only)"; SWWM_NOFANART = "Yes (Renders Only)"; SWWM_BALLUSE = "Lead Balls can Activate Switches"; -SWWM_BOSSBAR = "Show Boss Healthbars"; SWWM_BTITLE = "Balance Options"; -SWWM_BOSSENHANCE = "Enhance Vanilla Bosses"; -SWWM_EXTRAALERT = "Extra Noise Alerts"; -SWWM_ACCDAMAGE = "Cumulative Damage Numbers"; -SWWM_MAXTARGETDIST = "Max. Healthbar Distance"; -SWWM_MAXTARGETS = "Max. Displayed Healthbars"; -SWWM_MAXDAMNUMS = "Max. Displayed Damage/Heal Numbers"; -SWWM_MAXSCORENUMS = "Max. Displayed Score Numbers"; -SWWM_BARSCALE = "Healthbar Scaling"; -SWWM_NUMSCALE = "Number Scaling"; -SWWM_SCRSCALE = "Score Scaling"; -SWWM_POISCALE = "POI Scaling"; -SWWM_DETSCALE = "Item Sense Scaling"; SWWM_BLOOD = "Enable Custom Blood"; SWWM_FUZZ = "Enable Animated Menu BG"; -SWWM_BUSTERPAUSE = "Pause on Wallbuster Reload"; SWWM_CBTALL = "Unrestricted Busting"; SWWM_DOOMFALL = "Force Monster Fall Damage"; -SWWM_CAPMCRANGE = "Cap Ynykron Chain Reaction"; SWWM_RESETSCORE = "Reset Score on Pistol Start"; SWWM_NOTRACK = "Disable Combat Trackers"; -SWWM_YNYKRONALERT = "Cap Ynykron Alert"; SWWM_MENUPAUSE = "Pause on Demolitionist Menu"; SWWM_FTITLE = "Fun Options"; SWWM_FUNTAGS = "Monster Renaming"; SWWM_OMNIBUST = "Omni-Busting"; SWWM_SUPERFUEL = "Unlimited Fuel"; SWWM_PARTYTIME = "Super Fun Party Time"; -SWWM_SIMPLEFOG = "Simplified Teleport Fog"; SWWM_BIGTAGS = "Use Large Font for Names"; SWWM_INTERMUSIC = "Use Original Intermission Music"; SWWM_MAXBLOOD = "Blood Limit"; @@ -109,14 +81,12 @@ SWWM_ENEMYDROPS = "Enemy Ammo/Weapon Drops"; SWWM_DROPS_NONE = "Disabled"; SWWM_DROPS_AMMO = "Ammo Only"; SWWM_DROPS_WEAPONS = "Ammo And Weapons"; -SWWM_SHOTGIB = "Buckshot can Gib"; SWWM_COLLECTANIM = "Collectible Animations"; SWWM_SHADOWS = "Simple Shadows"; SWWM_PRECISECROSSHAIR = "Precise Crosshair"; SWWM_MCTITLE = "Mod Compatibility Options"; SWWM_LDSPOIL = "Always Show Legendaries"; SWWM_ETITLE = "Effect Options"; -SWWM_CAMHUD = "Full HUD In Cameras"; SWWM_UNCAPALERT = "Uncap Alert Range"; SWWM_COLLECTANIMKEY = "Key Animations"; SWWM_DAMAGETARGET = "Healthbar Visibility"; @@ -127,7 +97,6 @@ SWWM_STRICTUNTOUCHABLE = "Untouchable Bonus Strictness"; SWWM_UNTOUCHABLE_HEALTH = "Health Decrease"; SWWM_UNTOUCHABLE_ARMOR = "Armor Decrease"; SWWM_UNTOUCHABLE_ANYHIT = "Any Hit"; -SWWM_SILENCEMAP = "Cleared Map Music"; SWWM_SHADOWDIST = "Shadow Distance"; SWWM_SWAPWEAPONS = "Weapon Swapping"; SWWM_FORCESTATS = "Always Show Map Stats"; @@ -152,11 +121,6 @@ SWWM_PS_RESETITEMS = "Reset Items"; SWWM_PS_RESETHEALTH = "Reset Health"; SWWM_PISTOLSTART_MAP = "Per-Map"; SWWM_PISTOLSTART_CLUSTER = "Per-Cluster"; -SWWM_NUMCOLOR_SCR = "Score Number Color"; -SWWM_NUMCOLOR_BONUS = "Score Bonus Color"; -SWWM_NUMCOLOR_DMG = "Damage Number Color"; -SWWM_NUMCOLOR_HP = "Health Number Color"; -SWWM_NUMCOLOR_AP = "Armor Number Color"; SWWM_DRLASKILL = "DRLA Difficulty"; SWWM_DRLASKILL_BABY = "Very Easy"; SWWM_DRLASKILL_EASY = "Easy"; @@ -183,16 +147,12 @@ SWWM_TIME_HOURS = "hours"; SWWM_TIME_MINUTES = "minutes"; SWWM_TIME_SECONDS = "seconds"; SWWM_ATITLE = "Achievements"; -SWWM_SELFLIGHT = "Self-Lighting"; SWWM_USETOPICKUP = "Exclusive Use To Pickup"; -SWWM_MELEEPICKUP = "Allow Item Pickup Through Melee"; SWWM_BUTTSFX = "Clapping Buttcheeks"; -SWWM_ONDEMANDAMMO = "On Demand Ammo Placement"; SWWM_BUMP = "FOV Bump Strength"; SWWM_ENGINE = "Engine"; SWWM_ITEMGLOWS = "Distant Items Glow"; SWWM_NOMAGDROP = "Drop Spent Mags"; -SWWM_BARRIERUSE = "Automatically Use Coating"; SWWM_NOMAPMSG = "Map Special Messages"; SWWM_WEAPONTOOLTIPS = "Weapon Tooltips"; SWWM_RESETTOOLTIPS = "Reset Weapon Tooltips"; @@ -203,12 +163,10 @@ SWWM_DEMOSLAYER = "Demoslayer Mode"; SWWM_BEEPBOOP = "Switch Emoting"; SWWM_VOICEAMP = "Voice Amplification"; SWWM_CLEARFX = "Clear All Effects"; -SWWM_NODEATHEXIT = "Disable Death Exits"; SWWM_EXTENDEDPICKUP = "Extend Item Size"; SWWM_VOICELOG = "Log Player Comments"; SWWM_SKIPSKILL = "Skip Skill Confirmation"; -SWWM_HUDTRIMAMMO = "Trim Ammo List"; -SWWM_HUDMUGSHOT = "Face In HUD"; +SWWM_HUDALLAMMO = "Show All Ammo"; SWWM_NOINTROEX = "Skip Intro Explosions"; SWWM_TAGCOLOR = "Tag Color"; SWWM_COL_0 = "Green"; @@ -225,6 +183,7 @@ SWWM_COL_10 = "Red"; SWWM_COL_11 = "Violet"; SWWM_COL_12 = "White"; SWWM_COL_13 = "Yellow"; +SWWM_UTITLE = "Interface Options"; SWWM_MM_ENABLE = "Show Minimap"; SWWM_MM_MISSILES = "Projectiles In Minimap"; SWWM_MM_COLORSET = "Minimap Color Set"; @@ -251,56 +210,27 @@ TOOLTIP_SWWM_VOICETYPE = "Sets the voice pack for the player."; TOOLTIP_SWWM_MUTEVOICE = "Control what gets muted, if you'd rather have a more silent protagonist."; TOOLTIP_SWWM_FLASHSTRENGTH = "Screen flashes usually happen when firing some weapons, you can lower this if these effects are harmful for you."; TOOLTIP_SWWM_HUDMARGIN = "Margin around HUD elements, in (scaled) pixels."; -TOOLTIP_SWWM_MAXSHOWN = "Maximum messages (not lines) shown in the top left part of the HUD."; -TOOLTIP_SWWM_MAXSHOWNBIG = "Like the option above, but when the chat prompt is open."; -TOOLTIP_SWWM_MAXPICKUP = "Maximum pickup messages visible at any time."; -TOOLTIP_SWWM_CHATDURATION = "Duration of chat messages in seconds."; -TOOLTIP_SWWM_MSGDURATION = "Duration of obituaries and other messages in seconds."; -TOOLTIP_SWWM_PICKDURATION = "Duration of pickup messages in seconds."; -TOOLTIP_SWWM_AUTOUSEARMOR = "When enabled, spare armors will be automatically used when needed (new armors are always automatically worn)."; -TOOLTIP_SWWM_AUTOUSEHEALTH = "When enabled, health items are automatically used if they can heal (including spares). This excludes Refreshers since they count as powerups, and always autoactivate on fatal damage."; -TOOLTIP_SWWM_AUTOUSEAMMO = "When enabled, ammo fabricators are automatically used on pickup. This excludes Tier 4 fabricators since they count as powerups."; -TOOLTIP_SWWM_FLY6DOF = "Enable 6DOF movement when flying. Disable if this feature causes any discomfort."; TOOLTIP_SWWM_TARGETER = "Show enemy/player healthbars. Disable if you'd prefer to use another mod for this, such as Target Spy."; TOOLTIP_SWWM_TARGETTAGS = "Show enemy names above their healthbars."; TOOLTIP_SWWM_HEALTHNUMS = "Show damage/healing numbers. Disable if you'd prefer to use another mod for this, such as DamNums."; TOOLTIP_SWWM_SCORENUMS = "Show score numbers."; -TOOLTIP_SWWM_SCOREBONUS = "Show additional bonus strings above score numbers (e.g.: multikill counters)."; TOOLTIP_SWWM_POIS = "Show points of interest (such as key items and exits) when you have Omnisight."; -TOOLTIP_SWWM_EARBUSTER = "The Wallbuster's firing sounds may be painfully loud at times. This setting will limit the loudness to something more bearable."; TOOLTIP_SWWM_SHADERS = "Use postprocess shaders for things like powerups and the Silver Bullet scope. You can disable this if you'd prefer something lighter on the eyes."; TOOLTIP_SWWM_REVIVE = "Allows the player to get back up after dying by pressing Fire. Has a configurable cooldown."; TOOLTIP_SWWM_REVIVECOOLDOWN = "Time in seconds of downtime after using a reboot, where if you die again, you can't get back up. Set to 0 to allow unlimited reboots. Alternatively, you can also set it to only allow one reboot per map (enforced on expert difficulties)."; TOOLTIP_SWWM_INTERART = "If enabled, displays randomly selected fanart and official renders during intermissions. There are extra options to only show each category."; TOOLTIP_SWWM_BALLUSE = "Lead Ball projectiles can remotely activate use switches (excluding exits). Potentially OP."; -TOOLTIP_SWWM_BOSSHEALTHBARS = "Show a healthbar for vanilla boss encounters at the bottom of the screen. Just like Dark Souls™!"; -TOOLTIP_SWWM_UPGRADEBOSSES = "Buffs the health of vanilla bosses in order to make the fights more \"fair\" with this mod, and less prone to instant wins."; -TOOLTIP_SWWM_EXTRAALERT = "Allows monsters to hear things such as bouncing projectiles, ricocheting bullets, and more. Due to the recursive nature of the A_AlertMonsters function, this has a MASSIVE performance hit on very complex maps."; -TOOLTIP_SWWM_ACCDAMAGE = "Damage dealt to a target within the same tic will be grouped into a single damage number, which may make the screen less cluttered in most cases."; -TOOLTIP_SWWM_MAXTARGETDIST = "Limit the farthest distance at which healthbars for hostile targets are shown. Non-hostiles are always shown at one quarter of this distance."; -TOOLTIP_SWWM_MAXTARGETS = "Limit the amount of healthbars to display on-screen. Helps keep the screen less cluttered."; -TOOLTIP_SWWM_MAXDAMNUMS = "Limit the amount of damage/healing numbers to display on-screen. Helps keep the screen less cluttered."; -TOOLTIP_SWWM_MAXSCORENUMS = "Limit the amount of score numbers to display on-screen. Helps keep the screen less cluttered."; -TOOLTIP_SWWM_BARSCALEREL = "Relative scaling factor for targetter healthbars. A factor of 0 matches the HUD scale."; -TOOLTIP_SWWM_NUMSCALEREL = "Relative scaling factor for damage/healing numbers. A factor of 0 matches the HUD scale."; -TOOLTIP_SWWM_SCRSCALEREL = "Relative scaling factor for score numbers. A factor of 0 matches the HUD scale."; -TOOLTIP_SWWM_POISCALEREL = "Relative scaling factor for points of interest. A factor of 0 matches the HUD scale."; -TOOLTIP_SWWM_DETSCALEREL = "Relative scaling factor for sensed items. A factor of 0 matches the HUD scale."; TOOLTIP_SWWM_BLOOD = "Enable custom blood and gore effects, adapted from Soundless Mound. I'd honestly recommend Nashgore instead, it's better."; TOOLTIP_SWWM_FUZZ = "Toggling this off is recommended if you're recording/streaming as this effect can harm video quality."; -TOOLTIP_SWWM_CBTPAUSE = "The game will pause while the Wallbuster reload menu is open (only in singleplayer)."; TOOLTIP_SWWM_CBTALL = "Allows the Wallbuster and other weapons capable of map geometry destruction to break pretty much anything, not just doors and platforms. Note that this can break some maps, which is why this option is here."; TOOLTIP_SWWM_DOOMFALL = "Makes monsters take fall damage outside of Hexen. Requires map reload if previously disabled."; -TOOLTIP_SWWM_CAPMCRANGE = "By default the Ynykron's chain reactions will propagate until no more targets can be reached. This option limits this spread, making it at least somewhat more \"balanced\"."; TOOLTIP_SWWM_RESETSCORE = "Whenever a map transition or script resets the player inventory, also reset the score back to zero."; TOOLTIP_SWWM_NOTRACK = "Completely disables combat tracking (responsible for healthbars). This is mainly useful in maps with extreme monstercounts, where the trackers would be extremely performance-intensive. Requires map restart."; -TOOLTIP_SWWM_YNYKRONALERT = "By default the Ynykron wakes all monsters in the map. This may sometimes cause issues (and would destroy your framerate with huge monstercounts)."; -TOOLTIP_SWWM_MENUPAUSE = "In single player, the Demolitionist Menu by default will pause everything. You can disable this if you want a more Souls-like experience (or if you want to have a read while actively waiting for some looooooooong elevator or other timed event)."; +TOOLTIP_SWWM_MENUPAUSE = "Mod menus pause the game by default. You can disable this if you want an added challenge."; TOOLTIP_SWWM_FUNTAGS = "Replaces the names of various vanilla monsters with funny alternatives."; TOOLTIP_SWWM_OMNIBUST = "Allows any weapon to potentially bust walls. This is obviously broken as fuck."; TOOLTIP_SWWM_SUPERFUEL = "Your fuel never runs out."; TOOLTIP_SWWM_PARTYTIME = "When something dies, it shoots out a cloud of confetti."; -TOOLTIP_SWWM_SIMPLEFOG = "Replaces particle-based teleport fogs with simple sprites. Useful if they cause performance issues."; TOOLTIP_SWWM_BIGTAGS = "By default name labels on healthbars are shown with a small, compact font. Enabling this will use a bigger one."; TOOLTIP_SWWM_INTERMUSIC = "If enabled, intermission screens will use the original music from the current IWAD or map pack."; TOOLTIP_SWWM_MAXBLOOD = "Caps the maximum amount of blood effects. Surpassing this limit will cause the excess to fade out."; @@ -308,17 +238,14 @@ TOOLTIP_SWWM_MAXGIBS = "Caps the maximum amount of gibs. Surpassing this limit w TOOLTIP_SWWM_MAXCASINGS = "Caps the maximum amount of casings and spent magazines. Surpassing this limit will cause the excess to fade out."; TOOLTIP_SWWM_MAXDEBRIS = "Caps the maximum amount of rubble from explosions and others. Surpassing this limit will cause the excess to fade out."; TOOLTIP_SWWM_ENEMYDROPS = "By default, enemies only drop ammo for a better progression. In maps with excessive amounts of enemies, it's recommended to disable this entirely."; -TOOLTIP_SWWM_SHOTGIB = "Some people don't like this for some reason, so here it is as an option."; TOOLTIP_SWWM_COLLECTANIM = "Play special first person animations when picking up collectibles."; TOOLTIP_SWWM_SHADOWS = "Enables round shadows for various entities, combine with sprite shadows for best effect. Requires a map restart."; TOOLTIP_SWWM_PRECISECROSSHAIR = "Projects crosshair onto the spot the weapon will actually hit, rather than staying in the center of the screen. (\"Always\" will draw the crosshair even if it's normally toggled off, useful if you regularly switch to other mods where it's recommended to be disabled)"; TOOLTIP_SWWM_LDSPOIL = "[LegenDoom] Always show the \"Legendary\" prefix on healthbar tags, rather than after the monster has transformed. Disable if you'd rather not spoil the surprise."; -TOOLTIP_SWWM_CAMHUD = "By default, when the player is looking through a camera, most HUD elements excluding messages will be hidden. Set this to keep the full HUD."; TOOLTIP_SWWM_UNCAPALERT = "If enabled, all weapons and projectiles will have infinite noise radius. May fix maps that employ vanilla-style teleport traps."; TOOLTIP_SWWM_COLLECTANIMKEY = "Play special first person animations when picking up keys."; TOOLTIP_SWWM_DAMAGETARGET = "Select when targetter healthbars should be shown."; TOOLTIP_SWWM_STRICTUNTOUCHABLE = "By default, the \"Untouchable\" bonus is active until you take direct damage. If you feel this isn't strict enough, you can also make it end if armor absorbs the damage, or, for extra strictness, on ANY hit, even while invulnerable."; -TOOLTIP_SWWM_SILENCEMAP = "Chooses whether you want music to stop when you 100% a map."; TOOLTIP_SWWM_SHADOWDIST = "Maximum distance at which to show blob shadows. May help performance."; TOOLTIP_SWWM_SWAPWEAPONS = "Allow only one weapon per slot (excluding Deep Impact). Disable if you'd rather throw balance out the window."; TOOLTIP_SWWM_FORCESTATS = "Shows map statistics in the HUD even when the automap isn't open."; @@ -327,27 +254,18 @@ TOOLTIP_SWWM_PS_FULLRESET = "Clears your entire inventory, excluding collectible TOOLTIP_SWWM_PS_RESETAMMO = "Clears all your carried ammo, excluding what is already loaded into your weapons."; TOOLTIP_SWWM_PS_RESETITEMS = "Clears all your carried items that aren't weapons or ammo. Excludes equipped armor."; TOOLTIP_SWWM_PS_RESETHEALTH = "Sets your health back to 100%, and removes all equipped armor."; -TOOLTIP_SWWM_NUMCOLOR_SCR = "Select the color for score numbers."; -TOOLTIP_SWWM_NUMCOLOR_BONUS = "Select the color for bonuses that may accompany score numbers."; -TOOLTIP_SWWM_NUMCOLOR_DMG = "Select the color for damage numbers."; -TOOLTIP_SWWM_NUMCOLOR_HP = "Select the color for health numbers."; -TOOLTIP_SWWM_NUMCOLOR_AP = "Select the color for armor numbers."; TOOLTIP_SWWM_DRLASKILL = "[DRLA Monsters] Sets the skill level for enemy spawns."; TOOLTIP_SWWM_ITEMSPARKLES = "Nearby items will have particles around them, as a visual aid."; TOOLTIP_SWWM_SINGLEFIRST = "For weapons that have dual-wield variants, enabling this will always select the single weapon first."; TOOLTIP_SWWM_UNIQSTATS = "Clears duplicate map entries in the mission stats tab, useful to unclutter the list when moving back and forth in hubs."; TOOLTIP_SWWM_FILTERACHIEVEMENTS = "Filters out achievements at 0% in the Demolitionist Menu, if you'd rather avoid spoiling the fun. The 'Obfuscate' option is recommended, as it will at least leave a hint of things to be discovered."; TOOLTIP_SWWM_PLAYTIME = "Your total play time with this mod loaded."; -TOOLTIP_SWWM_SELFLIGHT = "Emit blue light from the player's face. Disable if this causes performance issues."; TOOLTIP_SWWM_USETOPICKUP = "Prevents picking up mod items through touch, exclusively requiring a use action instead."; -TOOLTIP_SWWM_MELEEPICKUP = "Allows picking up items though melee attacks. Do note that some weapons have an extended melee range, allowing you to grab things from farther away."; TOOLTIP_SWWM_BUTTSFX = "The Demolitionist's buttcheeks will VERY AUDIBLY clap upon executing a successful buttslam."; -TOOLTIP_SWWM_ONDEMANDAMMO = "Only ammo for weapons that are currently available (either in the player's inventory or in the map) will spawn in the map. May cause long load times on large maps."; TOOLTIP_SWWM_BUMPSTRENGTH = "Controls how strong the bumping of the FOV is from weapon recoil and other actions."; TOOLTIP_SWWM_ENGINE = "Don't touch this."; TOOLTIP_SWWM_ITEMGLOWS = "If enabled, items that are far away from the player will display a shimmering glow (requires a map restart to take full effect)."; TOOLTIP_SWWM_NOMAGDROP = "By default, the Demolitionist will be somewhat environmentally conscious and not leave spent magazines lying around. Enable if you prefer the added clutter."; -TOOLTIP_SWWM_AUTOUSEBARRIER = "When enabled, elemental coating will be automatically used as needed if standing on damaging floors."; TOOLTIP_SWWM_NOMAPMSG = "Toggles special animated character messages on certain maps (usually vanilla)."; TOOLTIP_SWWM_WEAPONTOOLTIPS = "Shows a summary of controls when a weapon is selected for the first time."; TOOLTIP_EVENT_SWWMRESETTOOLTIPS = "Resets weapon tooltips so you can see them all over again."; @@ -358,12 +276,10 @@ TOOLTIP_SWWM_DEMOSLAYER = "Killed enemies may drop health and armor orbs."; TOOLTIP_SWWM_BEEPBOOP = "The Demolitionist will make cute noises whenever pressing any usable line. This might get annoying, so it's optional."; TOOLTIP_SWWM_VOICEAMP = "At their default volume, the Demolitionist's voice lines might be drowned out by in-game audio. This sets an additional amplification level so they're louder than other sounds."; TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Fades out any active blood, gore, debris and casings."; -TOOLTIP_SWWM_NODEATHEXIT = "This option completely negates the effects of death exits, if you don't like losing all your stuff."; TOOLTIP_SWWM_EXTENDEDPICKUP = "Gives all items a vanilla-sized \"virtual hitbox\" that allows picking them up from farther away. Requires a map restart if changed."; TOOLTIP_SWWM_VOICELOG = "Subtitled player comments will be saved to the Messages tab of the Demolitionist Menu."; TOOLTIP_SWWM_SKIPSKILL = "Skips confirmation of skill selection, if you get tired of seeing it every time."; -TOOLTIP_SWWM_HUDTRIMAMMO = "Only shows ammo for currently carried weapons in the HUD."; -TOOLTIP_SWWM_HUDMUGSHOT = "Shows the Demolitionist's face in the HUD, for a more classic touch."; +TOOLTIP_SWWM_HUDALLAMMO = "Shows all ammo types in the HUD, rather than only those for currently carried weapons."; TOOLTIP_SWWM_NOINTROEX = "Skips the explosion sequence over the original titlepic."; TOOLTIP_SWWM_TAGCOLOR = "Changes the color for the glowing tags on various parts of the player's body."; TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements."; diff --git a/language.es_menu b/language.es_menu index e8e23d252..e7fdc6acf 100644 --- a/language.es_menu +++ b/language.es_menu @@ -41,24 +41,12 @@ SWWM_MUTEALL = "Todo"; SWWM_OTITLE = "Opciones Visuales"; SWWM_FLASH = "Intensidad de Destellos en Pantalla"; SWWM_HUDMARGIN = "Margen del HUD"; -SWWM_MAXMSG = "Mensajes Máximos"; -SWWM_MAXMSGBIG = "Mensajes Máximos (extendido)"; -SWWM_MAXPICK = "Mensajes de Ítem Máximos"; -SWWM_CHATLEN = "Duración de Mensajes de Chat"; -SWWM_MSGLEN = "Duración de Mensajes Generales"; -SWWM_PICKLEN = "Duración de Mensajes de Ítem"; SWWM_ITITLE = "Opciones de Ítems"; -SWWM_ARMORUSE = "Usar Armadura Automáticamente"; -SWWM_HEALTHUSE = "Usar Salud Automáticamente"; -SWWM_AMMOUSE = "Usar Fabricadores Automáticamente"; -SWWM_6DOF = "Vuelo con 6DOF"; SWWM_TARGET = "Mostrar Barras de Salud"; SWWM_TARGETTAG = "Mostrar Nombres de Enemigos"; SWWM_DAMNUMS = "Mostrar Números de Daño/Cura"; SWWM_SCORENUMS = "Mostrar Números de Puntuación"; -SWWM_SCOREBONUS = "Mostrar Bonificaciones de Puntuación"; SWWM_POIS = "Mostrar Puntos de Interés"; -SWWM_EARBUSTER = "Reducir Estruendo del Wallbuster"; SWWM_SHADERS = "Usar Shaders de Pantalla"; SWWM_REVIVE = "Sistema de Reinicio de Emergencia"; SWWM_REVIVECOOLDOWN = "Tiempo de recarga de Reinicio"; @@ -69,36 +57,19 @@ SWWM_INTERART = "Arte de Intermisión"; SWWM_NORENDER = "Sí (Sólo Fanart)"; SWWM_NOFANART = "Sí (Sólo Renders)"; SWWM_BALLUSE = "Las Bolas de Plomo Activan Botones"; -SWWM_BOSSBAR = "Mostrar Barras de Salud de Bosses"; SWWM_BTITLE = "Opciones de Balance"; -SWWM_BOSSENHANCE = "Mejorar Bosses Vanilla"; -SWWM_EXTRAALERT = "Alertas de Ruido Extra"; -SWWM_ACCDAMAGE = "Números de Daño Acumulativos"; -SWWM_MAXTARGETDIST = "Máx. Distancia de Barras de Salud"; -SWWM_MAXTARGETS = "Máx. Barras de Salud en Pantalla"; -SWWM_MAXDAMNUMS = "Máx. Números de Daño/Cura en Pantalla"; -SWWM_MAXSCORENUMS = "Máx. Números de Puntuación en Pantalla"; -SWWM_BARSCALE = "Escala de Barras de Salud"; -SWWM_NUMSCALE = "Escala de Números"; -SWWM_SCRSCALE = "Escala de Puntuaciones"; -SWWM_POISCALE = "Escala de Puntos de Interés"; -SWWM_DETSCALE = "Escala de Sensor de Ítems"; SWWM_BLOOD = "Habilitar Sangre Personalizada"; SWWM_FUZZ = "Habilitar Fondo Animado de Menú"; -SWWM_BUSTERPAUSE = "Pausar en Recarga de Wallbuster"; SWWM_CBTALL = "Reventamiento sin Restricciones"; SWWM_DOOMFALL = "Forzar Daño por Caída en Monstruos"; -SWWM_CAPMCRANGE = "Limitar Reacción en Cadena de Ynykron"; SWWM_RESETSCORE = "Resetear Puntuación en Pistol Starts"; SWWM_NOTRACK = "Desactivar Rastreo de Combate"; -SWWM_YNYKRONALERT = "Limitar Alerta de Ynykron"; SWWM_MENUPAUSE = "Pausar en Menú de Demolicionista"; SWWM_FTITLE = "Opciones Divertidas"; SWWM_FUNTAGS = "Renombrar Monstruos"; SWWM_OMNIBUST = "Omni-Reventamiento"; SWWM_SUPERFUEL = "Combustible Ilimitado"; SWWM_PARTYTIME = "Modo Fiesta Tope"; -SWWM_SIMPLEFOG = "Efecto de Teletransporte Simple"; SWWM_BIGTAGS = "Usar Fuente Grande para Nombres"; SWWM_INTERMUSIC = "Usar Música de Intermisión Original"; SWWM_MAXBLOOD = "Límite de Sangre"; @@ -109,14 +80,12 @@ SWWM_ENEMYDROPS = "Drops de Armas y Munición de Enemigos"; SWWM_DROPS_NONE = "Desactivado"; SWWM_DROPS_AMMO = "Solo Munición"; SWWM_DROPS_WEAPONS = "Munición y Armas"; -SWWM_SHOTGIB = "Los Perdigones pueden Desviscerar"; SWWM_COLLECTANIM = "Animaciones de Coleccionables"; SWWM_SHADOWS = "Sombras Simples"; SWWM_PRECISECROSSHAIR = "Mira Precisa"; SWWM_MCTITLE = "Opciones de Compatibilidad con Mods"; SWWM_LDSPOIL = "Mostrar Siempre Legendarios"; SWWM_ETITLE = "Opciones de Efectos"; -SWWM_CAMHUD = "HUD Completo en Cámaras"; SWWM_UNCAPALERT = "Rango de Alerta Ilimitado"; SWWM_COLLECTANIMKEY = "Animaciones de Llaves"; SWWM_DAMAGETARGET = "Visibilidad de Barras de Salud"; @@ -127,7 +96,6 @@ SWWM_STRICTUNTOUCHABLE = "Rigurosidad de Bonus Intocable"; SWWM_UNTOUCHABLE_HEALTH = "Baja de Salud"; SWWM_UNTOUCHABLE_ARMOR = "Baja de Armadura"; SWWM_UNTOUCHABLE_ANYHIT = "Cualquier Golpe"; -SWWM_SILENCEMAP = "Música de Mapa Despejado"; SWWM_SHADOWDIST = "Distancia de Sombras"; SWWM_SWAPWEAPONS = "Alternado de Armas"; SWWM_FORCESTATS = "Mostrar Siempre Estadísticas de Mapa"; @@ -151,11 +119,6 @@ SWWM_PS_RESETITEMS = "Resetear Ítems"; SWWM_PS_RESETHEALTH = "Resetear Salud"; SWWM_PISTOLSTART_MAP = "Cada Nivel"; SWWM_PISTOLSTART_CLUSTER = "Cada Clúster"; -SWWM_NUMCOLOR_SCR = "Color de Números de Puntos"; -SWWM_NUMCOLOR_BONUS = "Color de Bónuses de Puntos"; -SWWM_NUMCOLOR_DMG = "Color de Números de Daño"; -SWWM_NUMCOLOR_HP = "Color de Números de Salud"; -SWWM_NUMCOLOR_AP = "Color de Números de Armadura"; SWWM_DRLASKILL = "Dificultad de DRLA"; SWWM_DRLASKILL_BABY = "Muy Fácil"; SWWM_DRLASKILL_EASY = "Fácil"; @@ -182,16 +145,12 @@ SWWM_TIME_HOURS = "horas"; SWWM_TIME_MINUTES = "minutos"; SWWM_TIME_SECONDS = "segundos"; SWWM_ATITLE = "Logros"; -SWWM_SELFLIGHT = "Luz Propia"; SWWM_USETOPICKUP = "Uso Exclusivo para Recoger"; -SWWM_MELEEPICKUP = "Permitir Recoger Ítems con Melé"; SWWM_BUTTSFX = "Azote de Nalgas"; -SWWM_ONDEMANDAMMO = "Colocar Munición por Demanda"; SWWM_BUMP = "Intensidad de Sacudida de FOV"; SWWM_ENGINE = "Motor"; SWWM_ITEMGLOWS = "Los Ítems Lejanos Brillan"; SWWM_NOMAGDROP = "Tirar Cargadores Usados"; -SWWM_BARRIERUSE = "Usar Revestimiento Automáticamente"; SWWM_NOMAPMSG = "Mensajes Especiales de Mapa"; SWWM_WEAPONTOOLTIPS = "Ayuda de Armas"; SWWM_RESETTOOLTIPS = "Resetear Ayuda de Armas"; @@ -202,12 +161,10 @@ SWWM_DEMOSLAYER = "Modo Demoslayer"; SWWM_BEEPBOOP = "Ruiditos de Activación"; SWWM_VOICEAMP = "Amplificación de Voz"; SWWM_CLEARFX = "Limpiar todos los Efectos"; -SWWM_NODEATHEXIT = "Desactivar Salidas de Muerte"; SWWM_EXTENDEDPICKUP = "Extender Tamaño de Ítem"; SWWM_VOICELOG = "Registrar Comentarios de Jugador"; SWWM_SKIPSKILL = "Saltar Confirmación de Dificultad"; -SWWM_HUDTRIMAMMO = "Recortar Lista de Munición"; -SWWM_HUDMUGSHOT = "Rostro en el HUD"; +SWWM_HUDALLAMMO = "Mostrar Toda la Munición"; SWWM_NOINTROEX = "Saltar Intro de Explosiones"; SWWM_TAGCOLOR = "Color de Marcas"; SWWM_COL_0 = "Verde"; @@ -223,6 +180,7 @@ SWWM_COL_10 = "Rojo"; SWWM_COL_11 = "Violeta"; SWWM_COL_12 = "Blanco"; SWWM_COL_13 = "Amarillo"; +SWWM_UTITLE = "Opciones de Interfaz"; SWWM_MM_ENABLE = "Mostrar Minimapa"; SWWM_MM_MISSILES = "Proyectiles en Minimapa"; SWWM_MM_COLORSET = "Set de Colores de Minimapa"; @@ -249,60 +207,28 @@ TOOLTIP_SWWM_VOICETYPE = "Selecciona el pack de voz para el jugador."; TOOLTIP_SWWM_MUTEVOICE = "Controla lo que se mutea, si prefieres tener un protagonista más silencioso."; TOOLTIP_SWWM_FLASHSTRENGTH = "Los destellos en pantalla suelen ocurrir al disparar algunas armas, puedes reducirlo si este tipo de efectos te causan malestar."; TOOLTIP_SWWM_HUDMARGIN = "Margen alrededor de los elementos del HUD, en píxeles (escalados)."; -TOOLTIP_SWWM_MAXSHOWN = "Número máximo de mensajes (no líneas individuales) mostrados en la parte superior izquierda del HUD."; -TOOLTIP_SWWM_MAXSHOWNBIG = "Igual que la opción anterior, pero cuando la barra de chat está activa."; -TOOLTIP_SWWM_MAXPICKUP = "Numero máximo de mensajes de recogida de ítems visibles en todo momento."; -TOOLTIP_SWWM_CHATDURATION = "Duración de los mensajes de chat en segundos."; -TOOLTIP_SWWM_MSGDURATION = "Duración de los obituarios y otros mensajes en segundos."; -TOOLTIP_SWWM_PICKDURATION = "Duración de los mensajes de recogida de ítems en segundos."; TOOLTIP_SWWM_SHAREKEYS = "Cuando esto está activado, recoger una llave envía una copia a todos los otros jugadores."; -TOOLTIP_SWWM_AUTOUSEARMOR = "Cuando esto está activado, las copias extra de armadura se usarán automáticamente cuando sea necesario (las armaduras nuevas siempre se equipan automáticamente)."; -TOOLTIP_SWWM_AUTOUSEHEALTH = "Cuando esto está activado, los ítems de salud se usan automáticamente si pueden curar (incluyendo copias extra). Esto excluye los Refrescadores ya que cuentan como powerups, y siempre se activan automáticamente al recibir daño fatal."; -TOOLTIP_SWWM_AUTOUSEAMMO = "Cuando esto está activado, los fabricadores de munición se usan automáticamente al recoger. Esto excluye los fabricadores de Tier 4 ya que cuentan como powerups."; -TOOLTIP_SWWM_ENFORCEAUTOUSEARMOR = "Fuerza una opción específica de auto-uso de armadura para todos los jugadores, o respeta la opción de cada uno."; -TOOLTIP_SWWM_ENFORCEAUTOUSEHEALTH = "Fuerza una opción específica de auto-uso de salud para todos los jugadores, o respeta la opción de cada uno."; -TOOLTIP_SWWM_ENFORCEAUTOUSEAMMO = "Fuerza una opción específica de auto-uso de fabricadores para todos los jugadores, o respeta la opción de cada uno."; -TOOLTIP_SWWM_FLY6DOF = "Habilita el movimiento con seis ángulos de libertad al volar. Desactiva la opción si esto te causa incomodidad."; TOOLTIP_SWWM_TARGETER = "Muestra barras de vida de enemigos y jugadores. Desactiva la opción si prefieres usar otro mod para esto, por ejemplo Target Spy."; TOOLTIP_SWWM_TARGETTAGS = "Muestra nombres encima de las barras de vida."; TOOLTIP_SWWM_HEALTHNUMS = "Muestra números de daño/curación. Desactiva la opción si prefieres usar otro mod para esto, por ejemplo DamNums."; TOOLTIP_SWWM_SCORENUMS = "Muestra números de puntuación con cada baja."; -TOOLTIP_SWWM_SCOREBONUS = "Muestra textos de bonificación extra sobre los puntos (ej.: contadores de multikill)."; TOOLTIP_SWWM_POIS = "Muestra puntos de interés (tales como llaves y salidas) cuando tienes Omnivisión."; -TOOLTIP_SWWM_EARBUSTER = "Los sonidos de disparo del Wallbuster pueden a veces ser dolorosamente estridentes. Esta opción limitará la intensidad a un valor más soportable."; TOOLTIP_SWWM_SHADERS = "Usa shaders de postprocesado para cosas como potenciadores y la mira del Silver Bullet. Puedes desactivar esto si prefieres algo más ligero para la vista."; TOOLTIP_SWWM_REVIVE = "Permite al jugador volver a levantarse tras morir pulsando Fuego. Tiene un cooldown configurable."; TOOLTIP_SWWM_REVIVECOOLDOWN = "Tiempo en segundos tras reiniciar, durante el cual si mueres otra vez, no puedes volver a levantarte. Pon a 0 para permitir reinicios ilimitados. Alternativamente, puedes elegir que solo se permita un reinicio por mapa (forzado en dificultades expertas)."; TOOLTIP_SWWM_INTERART = "Si está activado, muestra fanart y renders oficiales aleatorios durante intermisiones. Hay opciones extra para mostrar sólo una categoría."; TOOLTIP_SWWM_BALLUSE = "Los proyectiles de Bola de Plomo pueden activar botones utilizables remotamente (excluyendo salidas). Potencialmente roto."; -TOOLTIP_SWWM_BOSSHEALTHBARS = "Muestra una barra de vida para bosses vanilla en la parte inferior de la pantalla. ¡Es justo como Dark Souls™!"; -TOOLTIP_SWWM_UPGRADEBOSSES = "Incrementa la salud de bosses vanilla para hacer que las peleas sean más \"justas\" con este mod, y no tan propensas a ganarse al instante."; -TOOLTIP_SWWM_EXTRAALERT = "Permite a los enemigos oír cosas como proyectiles y balas rebotando, entre otros. Debido a la naturaleza recursiva de la función A_AlertMonsters, esto puede tener un impacto MASIVO en el rendimiento en mapas muy complejos."; -TOOLTIP_SWWM_ACCDAMAGE = "El daño hecho a un objetivo en el mismo tic será agrupado en un único número, lo cual resultará en una pantalla más despejada en la mayoría de casos."; -TOOLTIP_SWWM_MAXTARGETDIST = "Limita la distancia máxima a la que se muestran las barras de salud de enemigos hostiles. Los objetivos no hostiles se muestran siempre a un cuarto de esta distancia."; -TOOLTIP_SWWM_MAXTARGETS = "Limita la cantidad de barras de salud a mostrar en pantalla. Ayuda a mantener la pantalla más despejada."; -TOOLTIP_SWWM_MAXDAMNUMS = "Limita la cantidad de números de daño/curación a mostrar en pantalla. Ayuda a mantener la pantalla más despejada."; -TOOLTIP_SWWM_MAXSCORENUMS = "Limita la cantidad de números de puntuación a mostrar en pantalla. Ayuda a mantener la pantalla más despejada."; -TOOLTIP_SWWM_BARSCALEREL = "Factor de escalado relativo para las barras de salud. Un factor de 0 es igual al escalado del HUD."; -TOOLTIP_SWWM_NUMSCALEREL = "Factor de escalado relativo para los números de daño/salud. Un factor de 0 es igual al escalado del HUD."; -TOOLTIP_SWWM_SCRSCALEREL = "Factor de escalado relativo para los números de puntuación. Un factor de 0 es igual al escalado del HUD."; -TOOLTIP_SWWM_POISCALEREL = "Factor de escalado relativo para los puntos de interés. Un factor de 0 es igual al escalado del HUD."; -TOOLTIP_SWWM_DETSCALEREL = "Factor de escalado relativo para los ítems detectados. Un factor de 0 es igual al escalado del HUD."; TOOLTIP_SWWM_BLOOD = "Activa efectos de sangre y vísceras personalizados, adaptados de Soundless Mound. Sinceramente, recomendaría usar Nashgore, es mejor."; TOOLTIP_SWWM_FUZZ = "Desactivar esto es recomendado si estás grabando o haciendo streaming, ya que este effecto puede dañar la calidad del vídeo."; -TOOLTIP_SWWM_CBTPAUSE = "El juego será pausado mientras el menú de recarga de Wallbuster está abierto (sólo en modo de un jugador)."; TOOLTIP_SWWM_CBTALL = "Permite a la Wallbuster y otras armas capaces de reventar geometría del mapa destruír casi cualquier cosa, no solo puertas y plataformas. Ten en cuenta que esto puede romper algunos mapas, razón de que haya esta opción."; TOOLTIP_SWWM_DOOMFALL = "Hace que los monstruos reciban daño por caída fuera de Hexen. Requiere reinicio de mapa si fue desactivado anteriormente."; -TOOLTIP_SWWM_CAPMCRANGE = "Por defecto las reacciones en cadena del Ynykron se propagarán hasta que no se puedan alcanzar más objetivos. Esta opción limita su extensión, haciéndolo al menos un poco más \"balanceado\"."; TOOLTIP_SWWM_RESETSCORE = "Cuando un cambio de mapa o script resetea tu inventario, tu puntuación también es reseteada a cero."; TOOLTIP_SWWM_NOTRACK = "Desactiva completamente el rastreo de combate (responsable de las barras de salud). Esto es principalmente útil en mapas con un número extremo de monstruos, donde los rastreos tienen un impacto inmenso en el rendimiento. Requiere reinicio de mapa."; -TOOLTIP_SWWM_YNYKRONALERT = "Por defecto el Ynykron alerta a todos los monstruos en el mapa. Esto puede causar problemas a veces (o destruir tus frames con números enormes de monstruos)."; -TOOLTIP_SWWM_MENUPAUSE = "En modo de un jugador, el Menú de Demolicionista por defecto pausa todo. Puedes desactivar esto si quieres una experiencia más Souls-like (o si quieres leer un poco mientras esperas activamente algún ascensor leeeeeeento o algún otro evento temporizado)."; +TOOLTIP_SWWM_MENUPAUSE = "Los menús del mod pausan el juego por defecto. Puedes desactivar esto si te apetece un desafío extra."; TOOLTIP_SWWM_FUNTAGS = "Reemplaza los nombres de monstruos vanilla por alternativas graciosas."; TOOLTIP_SWWM_OMNIBUST = "Permite que cualquier arma puede potencialmente reventar paredes. Esto está obviamente rotísimo."; TOOLTIP_SWWM_SUPERFUEL = "Tu combustible no se agota nunca."; TOOLTIP_SWWM_PARTYTIME = "Cuando algo muere, expulsa una nube de confetti."; -TOOLTIP_SWWM_SIMPLEFOG = "Reemplaza los efectos de teletransporte basados en partículas con simples sprites. Útil si causan problemas de rendimiento."; TOOLTIP_SWWM_BIGTAGS = "Por defecto los nombres de las barras de vida usan una fuente pequeña. Activando esta opción, se cambiará por una mayor."; TOOLTIP_SWWM_INTERMUSIC = "Al activar, las pantallas de intermisión usan la música original del IWAD o pack de mapas usado."; TOOLTIP_SWWM_MAXBLOOD = "Limita la cantidad máxima de efectos de sangre. Sobrepasar este límite causará que el exceso se desvanezca."; @@ -310,17 +236,14 @@ TOOLTIP_SWWM_MAXGIBS = "Limita la cantidad máxima de vísceras. Sobrepasar este TOOLTIP_SWWM_MAXCASINGS = "Limita la cantidad máxima de casquillos y cargadores usados. Sobrepasar este límite causará que el exceso se desvanezca."; TOOLTIP_SWWM_MAXDEBRIS = "Limita la cantidad máxima de escombros por explosiones y otros. Sobrepasar este límite causará que el exceso se desvanezca."; TOOLTIP_SWWM_ENEMYDROPS = "Por defecto, los enemigos solo dropean munición para una mejor progresión. En mapas con enemigos excesivos, se recomienda desactivar los drops por completo."; -TOOLTIP_SWWM_SHOTGIB = "Hay gente a la que no le gusta esto por alguna razón, así que aquí está como opción."; TOOLTIP_SWWM_COLLECTANIM = "Muestra animaciones especiales en primera persona al recoger coleccionables."; TOOLTIP_SWWM_SHADOWS = "Activa sombras redondas para varias entidades, combina con sombras de sprites para un mejor efecto. Requiere un reinicio de mapa."; TOOLTIP_SWWM_PRECISECROSSHAIR = "Proyecta la mira en el punto que el arma alcanzará, en vez de quedarse en el centro de la pantalla. (\"Siempre\" dibuja la mira aunque esté normalmente desactivada, útil si alternas regularmente con jugar mods en los que se recomienda desactivarla)"; TOOLTIP_SWWM_LDSPOIL = "[LegenDoom] Muestra siempre el sufijo de \"Legendario\" en las etiquetas de barra de vida, en lugar de despues de que el enemigo se haya transformado. Desactiva si prefieres no estropear la sorpresa."; -TOOLTIP_SWWM_CAMHUD = "Por defecto, cuando el jugador está mirando por una cámara, la mayor parte de elementos del HUD excluyendo mensajes son ocultados. Activa esto para mantener el HUD completo."; TOOLTIP_SWWM_UNCAPALERT = "Si se activa, todas las armas y proyectiles tendrán un rango de ruido ilimitado. Puede arreglar mapas que usan trampas de teletransporte estilo vanilla."; TOOLTIP_SWWM_COLLECTANIMKEY = "Muestra animaciones especiales en primera persona al recoger llaves."; TOOLTIP_SWWM_DAMAGETARGET = "Selecciona cuando deben mostrarse las barras de vida."; TOOLTIP_SWWM_STRICTUNTOUCHABLE = "Por defecto, el bonus \"Intocable\" permanece activo hasta que recibas daño directo. Si sientes que esto no es suficientemente estricto, también puedes hacer que termine si la armadura absorbe el daño, o, para mayor severidad, con CUALQUIER golpe, incluso siendo invulnerable."; -TOOLTIP_SWWM_SILENCEMAP = "Elige si quieres que la música se detenga cuando completas un mapa al 100%."; TOOLTIP_SWWM_SHADOWDIST = "Distancia máxima a la que mostrar sombras. Puede ayudar al rendimiento."; TOOLTIP_SWWM_SWAPWEAPONS = "Permite solo un arma por puesto (excluyendo Deep Impact). Desactiva si prefieres tirar el balance por la ventana."; TOOLTIP_SWWM_FORCESTATS = "Muestra estadísticas de mapa en el HUD incluso cuando el automapa no está abierto."; @@ -329,28 +252,18 @@ TOOLTIP_SWWM_PS_FULLRESET = "Vacía todo tu inventario, excluyendo coleccionable TOOLTIP_SWWM_PS_RESETAMMO = "Vacía toda la munición que llevas, excluyendo la que ya esté cargada en tus armas."; TOOLTIP_SWWM_PS_RESETITEMS = "Vacía todos los ítems que llevas que no sean armas o munición. Excluye la armadura equipada."; TOOLTIP_SWWM_PS_RESETHEALTH = "Resetea tu salud de vuelta al 100%, y quita toda la armadura equipada."; -TOOLTIP_SWWM_NUMCOLOR_SCR = "Selecciona el color para los numeros de puntos."; -TOOLTIP_SWWM_NUMCOLOR_BONUS = "Selecciona el color para las bonificaciones que pueden acompañar a los números de puntos."; -TOOLTIP_SWWM_NUMCOLOR_DMG = "Selecciona el color para los números de daño."; -TOOLTIP_SWWM_NUMCOLOR_HP = "Selecciona el color para los números de salud."; -TOOLTIP_SWWM_NUMCOLOR_AP = "Selecciona el color para los números de armadura."; TOOLTIP_SWWM_DRLASKILL = "[DRLA Monsters] Elige el nivel de dificultad para spawns de enemigos."; TOOLTIP_SWWM_ITEMSPARKLES = "Los ítems cercanos tendrán partículas alrededor, para mejor visibilidad."; TOOLTIP_SWWM_SINGLEFIRST = "Para armas que tienen variantes duales, activando esto selecionará siempre primero el arma singular."; TOOLTIP_SWWM_UNIQSTATS = "Elimina entradas duplicadas de mapa en la pestaña de estadísticas de misión, útil para despejar la lista al moverse por hubs."; TOOLTIP_SWWM_FILTERACHIEVEMENTS = "Filtra logros al 0% en el Menú de Demolicionista, si prefieres no estropear la sorpresa. La opción de 'Ofuscar' es la recomendada, ya que al menos dejará pistas de cosas que quedan por descubrir."; TOOLTIP_SWWM_PLAYTIME = "Tu tiempo de juego total con este mod cargado."; -TOOLTIP_SWWM_SELFLIGHT = "Emite luz azul desde la cara del jugador. Desactiva si causa problemas de rendimiento."; TOOLTIP_SWWM_USETOPICKUP = "Evita recoger ítems del mod al tocarlos, en su lugar requiriendo exclusivamente una acción de uso."; -TOOLTIP_SWWM_MELEEPICKUP = "Permite recoger ítems por medio de ataques a melé. Ten en cuenta que algunas armas tienen un rango de melé extendido, permitiéndote alcanzar cosas desde una mayor distancia."; TOOLTIP_SWWM_BUTTSFX = "Las nalgas de la Demolicionista emitiran un azote MUY SONORO al ejecutar exitosamente un golpe de culo."; -TOOLTIP_SWWM_ONDEMANDAMMO = "Solo coloca en el mapa munición para armas que estén actualmente disponibles (tanto en el inventario del jugador como en el mapa). Puede causar tiempos de carga largos en mapas grandes."; TOOLTIP_SWWM_BUMPSTRENGTH = "Controla lo intensa que es la sacudida del FOV por el retroceso de armas y otras acciones."; TOOLTIP_SWWM_ENGINE = "No toques esto."; TOOLTIP_SWWM_ITEMGLOWS = "Al activar, los ítems que se encuentren lejos del jugador mostrarán un ligero destello (requiere un reinicio del mapa para tener efecto completamente)."; TOOLTIP_SWWM_NOMAGDROP = "Por defecto, la Demolicionista será un poco consciente con el medio ambiente y no dejará cargadores usados por ahí. Activa si prefieres la basura adicional."; -TOOLTIP_SWWM_AUTOUSEBARRIER = "Cuando esto está activado, el revestimiento elemental será usado automáticamente si es necesario al estar en suelos dañinos."; -TOOLTIP_SWWM_ENFORCEAUTOUSEBARRIER = "Fuerza una opción específica de auto-uso de revestimiento para todos los jugadores, o respeta la opción de cada uno."; TOOLTIP_SWWM_NOMAPMSG = "Activa mensajes especiales animados de personajes en ciertos mapas (usualmente vanilla)."; TOOLTIP_SWWM_WEAPONTOOLTIPS = "Muestra un resumen de controles cuando se selecciona un arma por primera vez."; TOOLTIP_EVENT_SWWMRESETTOOLTIPS = "Resetea la ayuda de armas para que puedas volver a verla de nuevo."; @@ -361,12 +274,10 @@ TOOLTIP_SWWM_DEMOSLAYER = "Los enemigos que mates soltarán orbes de salud y arm TOOLTIP_SWWM_BEEPBOOP = "La Demolicionista hará ruiditos adorables cuando pulse cualquier línea utilizable. Esto puede que resulte cansino, así que es opcional."; TOOLTIP_SWWM_VOICEAMP = "A su volumen normal, las voces de la Demolicionista pueden ser ahogadas por el audio del juego. Con esto se le dá un nivel de amplificación extra para que sean más estridentes que otros sonidos."; TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Desvanece cualquier sangre, vísceras, escombros y casquillos activos."; -TOOLTIP_SWWM_NODEATHEXIT = "Esta opción invalida completamente los efectos de las salidas de muerte, si no te gusta perder todas tus cosas."; TOOLTIP_SWWM_EXTENDEDPICKUP = "Da a todos los ítems una \"hitbox virtual\" de tamaño vanilla que permite recogerlos a mayor distancia. Requiere reinicio de mapa si se cambia."; TOOLTIP_SWWM_VOICELOG = "Los comentarios de jugador subtitulados se guardarán en la pestaña de Mensajes del Menú de Demolicionista."; TOOLTIP_SWWM_SKIPSKILL = "Salta la confirmación de selección de dificultad, si te has cansado de verla todo el tiempo."; -TOOLTIP_SWWM_HUDTRIMAMMO = "Muestra solo la munición de las armas obtenidas en el HUD."; -TOOLTIP_SWWM_HUDMUGSHOT = "Muestra el rostro de la Demolicionista en el HUD, para un toque más clásico."; +TOOLTIP_SWWM_HUDALLAMMO = "Muestra todos los tipos de munición en el HUD, en lugar de solo los de las armas obtenidas."; TOOLTIP_SWWM_NOINTROEX = "Salta la secuencia de explosiones sobre la imagen de título original."; TOOLTIP_SWWM_TAGCOLOR = "Cambia el color de las marcas brillantes en varias partes del cuerpo del jugador."; TOOLTIP_SWWMACHIEVEMENTMENU = "Revisa tus logros."; diff --git a/language.version b/language.version index 123bc1fd8..bb91fc576 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r226 \cu(Thu 28 Jul 18:00:50 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r226 \cu(2022-07-28 18:00:50)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r227 \cu(Thu 28 Jul 21:01:08 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r227 \cu(2022-07-28 21:01:08)\c-"; diff --git a/menudef.txt b/menudef.txt index 80c147229..223b06e8a 100644 --- a/menudef.txt +++ b/menudef.txt @@ -123,68 +123,38 @@ OptionMenu "SWWMOptionMenu" Slider "$SWWM_VOICEAMP", "swwm_voiceamp", 1, 4, 1, 0 Option "$SWWM_VOICELOG", "swwm_voicelog", "YesNo" Option "$SWWM_BEEPBOOP", "swwm_beepboop", "YesNo" - IfGame(Heretic, Hexen) - { - Option "$SWWM_6DOF", "swwm_fly6dof", "YesNo" - } Option "$SWWM_REVIVE", "swwm_revive", "YesNo" ScaleSliderFix "$SWWM_REVIVECOOLDOWN", "swwm_revivecooldown", -1, 300, 30, "$SWWM_UNLIMITED", "$SWWM_ONERETRY" - Option "$SWWM_MENUPAUSE", "swwm_menupause", "YesNo" - Option "$SWWM_SKIPSKILL", "swwm_skipskill", "YesNo" - Option "$SWWM_PRECISECROSSHAIR", "swwm_precisecrosshair", "SWWMYesNoAlways" - Option "$SWWM_SELFLIGHT", "swwm_selflight", "YesNo" Submenu "$SWWM_ATITLE", "SWWMAchievementMenu" StaticText " " StaticText "$SWWM_OTITLE", 1 Option "$SWWM_SHADERS", "swwm_shaders", "YesNo" Slider "$SWWM_FLASH", "swwm_flashstrength", 0.0, 1.0, 0.1, 1 Slider "$SWWM_BUMP", "swwm_bumpstrength", 0.0, 1.0, 0.1, 1 - Option "$SWWM_CAMHUD", "swwm_camhud", "YesNo" + Option "$SWWM_PRECISECROSSHAIR", "swwm_precisecrosshair", "SWWMYesNoAlways" + Option "$SWWM_FUZZ", "swwm_fuzz", "YesNo" + StaticText " " + StaticText "$SWWM_UTITLE", 1 + Option "$SWWM_MENUPAUSE", "swwm_menupause", "YesNo" + Option "$SWWM_SKIPSKILL", "swwm_skipskill", "YesNo" Option "$SWWM_FORCESTATS", "swwm_forcestats", "SWWMForceStats" Option "$SWWM_UNIQSTATS", "swwm_uniqstats", "YesNo" Slider "$SWWM_HUDMARGIN", "swwm_hudmargin", 0, 20, 1, 0 - Option "$SWWM_HUDTRIMAMMO", "swwm_hudtrimammo", "YesNo" - Option "$SWWM_HUDMUGSHOT", "swwm_hudmugshot", "YesNo" + Option "$SWWM_HUDALLAMMO", "swwm_hudallammo", "YesNo" Option "$SWWM_MM_ENABLE", "swwm_mm_enable", "YesNo" Option "$SWWM_MM_MISSILES", "swwm_mm_missiles", "YesNo" Option "$SWWM_MM_COLORSET", "swwm_mm_colorset", "SWWMMinimapColorset" - Slider "$SWWM_MAXMSG", "swwm_maxshown", 1, 10, 1, 0 - Slider "$SWWM_MAXMSGBIG", "swwm_maxshownbig", 1, 20, 1, 0 - Slider "$SWWM_MAXPICK", "swwm_maxpickup", 1, 10, 1, 0 - Slider "$SWWM_CHATLEN", "swwm_chatduration", 1, 30, 1, 0 - Slider "$SWWM_MSGLEN", "swwm_msgduration", 1, 30, 1, 0 - Slider "$SWWM_PICKLEN", "swwm_pickduration", 1, 30, 1, 0 Option "$SWWM_TARGET", "swwm_targeter", "YesNo" Option "$SWWM_TARGETTAG", "swwm_targettags", "YesNo" Option "$SWWM_DAMAGETARGET", "swwm_damagetarget", "SWWMDamageTarget" Option "$SWWM_BIGTAGS", "swwm_bigtags", "YesNo" - Option "$SWWM_BOSSBAR", "swwm_bosshealthbars", "YesNo" Option "$SWWM_DAMNUMS", "swwm_healthnums", "YesNo" - Option "$SWWM_ACCDAMAGE", "swwm_accdamage", "YesNo" Option "$SWWM_SCORENUMS", "swwm_scorenums", "YesNo" - Option "$SWWM_SCOREBONUS", "swwm_scorebonus", "YesNo" IfGame(Doom, Heretic) { Option "$SWWM_POIS", "swwm_pois", "YesNo" } Option "$SWWM_NOMAPMSG", "swwm_nomapmsg", "NoYes" - ScaleSlider "$SWWM_MAXTARGETDIST", "swwm_maxtargetdist", 0, 6000, 100, "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_MAXTARGETS", "swwm_maxtargets", 0, 1000, 1, "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_MAXDAMNUMS", "swwm_maxdamnums", 0, 1000, 1, "$SWWM_UNLIMITED" - ScaleSlider "$SWWM_MAXSCORENUMS", "swwm_maxscorenums", 0, 1000, 1, "$SWWM_UNLIMITED" - Slider "$SWWM_BARSCALE", "swwm_barscalerel", -4, 4, 1, 0 - Slider "$SWWM_NUMSCALE", "swwm_numscalerel", -4, 4, 1, 0 - Slider "$SWWM_SCRSCALE", "swwm_scrscalerel", -4, 4, 1, 0 - IfGame(Doom, Heretic) - { - Slider "$SWWM_POISCALE", "swwm_poiscalerel", -4, 4, 1, 0 - } - Slider "$SWWM_DETSCALE", "swwm_detscalerel", -4, 4, 1, 0 - Option "$SWWM_NUMCOLOR_SCR", "swwm_numcolor_scr", "TextColors" - Option "$SWWM_NUMCOLOR_BONUS", "swwm_numcolor_bonus", "TextColors" - Option "$SWWM_NUMCOLOR_DMG", "swwm_numcolor_dmg", "TextColors" - Option "$SWWM_NUMCOLOR_HP", "swwm_numcolor_hp", "TextColors" - Option "$SWWM_NUMCOLOR_AP", "swwm_numcolor_ap", "TextColors" IfGame(Doom, Heretic) { Option "$SWWM_INTERART", "swwm_interart", "SWWMInterArt" @@ -192,11 +162,6 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_INTERMUSIC", "swwm_intermusic", "YesNo" } Option "$SWWM_NOINTROEX", "swwm_nointroex", "YesNo" - Option "$SWWM_FUZZ", "swwm_fuzz", "YesNo" - IfGame(Doom, Heretic) - { - Option "$SWWM_SILENCEMAP", "swwm_silencemap", "YesNo" - } Option "$SWWM_FILTERACHIEVEMENTS", "swwm_filterachievements", "SWWMFilterAchievements" StaticText " " StaticText "$SWWM_ETITLE", 1 @@ -227,12 +192,8 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_PS_RESETAMMO", "swwm_ps_resetammo", "SWWMPistolStart" Option "$SWWM_PS_RESETITEMS", "swwm_ps_resetitems", "SWWMPistolStart" Option "$SWWM_PS_RESETHEALTH", "swwm_ps_resethealth", "SWWMPistolStart" - Option "$SWWM_NODEATHEXIT", "swwm_nodeathexit", "YesNo" Option "$SWWM_ENEMYDROPS", "swwm_enemydrops", "SWWMEnemyDropType" - Option "$SWWM_ONDEMANDAMMO", "swwm_ondemandammo", "YesNo" Option "$SWWM_RESETSCORE", "swwm_resetscore", "YesNo" - Option "$SWWM_EXTRAALERT", "swwm_extraalert", "YesNo" - Option "$SWWM_BOSSENHANCE", "swwm_upgradebosses", "YesNo" IfGame(Doom, Heretic) { Option "$SWWM_DOOMFALL", "swwm_doomfall", "YesNo" @@ -240,27 +201,14 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_BALLUSE", "swwm_balluse", "YesNo" Option "$SWWM_CBTALL", "swwm_cbtall", "YesNo" Option "$SWWM_UNCAPALERT", "swwm_uncapalert", "YesNo" - Option "$SWWM_CAPMCRANGE", "swwm_capmcrange", "YesNo" Option "$SWWM_NOTRACK", "swwm_notrack", "YesNo" - Option "$SWWM_YNYKRONALERT", "swwm_ynykronalert", "YesNo" - Option "$SWWM_SIMPLEFOG", "swwm_simplefog", "YesNo" - Option "$SWWM_SHOTGIB", "swwm_shotgib", "YesNo" Option "$SWWM_STRICTUNTOUCHABLE", "swwm_strictuntouchable", "SWWMUntouchableStrictness" Option "$SWWM_SWAPWEAPONS", "swwm_swapweapons", "YesNo" StaticText " " StaticText "$SWWM_ITITLE", 1 Option "$SWWM_USETOPICKUP", "swwm_usetopickup", "YesNo" - Option "$SWWM_MELEEPICKUP", "swwm_meleepickup", "YesNo" Option "$SWWM_EXTENDEDPICKUP", "swwm_extendedpickup", "YesNo" - Option "$SWWM_ARMORUSE", "swwm_autousearmor", "YesNo" - Option "$SWWM_HEALTHUSE", "swwm_autousehealth", "YesNo" - IfGame(Doom) - { - Option "$SWWM_BARRIERUSE", "swwm_autousebarrier", "YesNo" - } Option "$SWWM_SINGLEFIRST", "swwm_singlefirst", "YesNo" - Option "$SWWM_EARBUSTER", "swwm_earbuster", "YesNo" - Option "$SWWM_BUSTERPAUSE", "swwm_cbtpause", "YesNo" Option "$SWWM_COLLECTANIM", "swwm_collectanim", "YesNo" Option "$SWWM_COLLECTANIMKEY", "swwm_collectanimkey", "YesNo" Option "$SWWM_WEAPONTOOLTIPS", "swwm_weapontooltips", "YesNo" diff --git a/zscript/handler/swwm_handler_damage.zsc b/zscript/handler/swwm_handler_damage.zsc index cc707a53c..62bf43758 100644 --- a/zscript/handler/swwm_handler_damage.zsc +++ b/zscript/handler/swwm_handler_damage.zsc @@ -63,20 +63,7 @@ extend Class SWWMHandler // damage numbers, combat tracking, etc. private void DoDamageHandling( WorldEvent e ) { - bool spawnme = true; - if ( swwm_accdamage ) - { - // find existing damage number (slow) - for ( SWWMScoreObj d=damnums; d; d=d.next ) - { - if ( (d.starttic < level.maptime) || (d.acc != e.Thing) ) continue; - if ( d.score-e.Damage > d.score ) d.score = int.min; - else d.score -= e.Damage; - spawnme = false; - break; - } - } - if ( spawnme ) SWWMScoreObj.SpawnFromHandler(self,-e.Damage,e.Thing.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+e.Thing.Height/2),ST_Damage,e.Thing); + SWWMScoreObj.SpawnFromHandler(self,-e.Damage,e.Thing.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+e.Thing.Height/2),ST_Damage); // stats if ( e.Thing.player ) { diff --git a/zscript/handler/swwm_handler_replacements.zsc b/zscript/handler/swwm_handler_replacements.zsc index a35e88814..10b187a78 100644 --- a/zscript/handler/swwm_handler_replacements.zsc +++ b/zscript/handler/swwm_handler_replacements.zsc @@ -628,56 +628,16 @@ extend Class SWWMHandler else if ( (e.Replacee is 'BFG9000') || (e.Replacee is 'Mace') ) e.Replacement = SWWMUtility.PickDoomSlot7(); else if ( e.Replacee is 'CWeaponPiece2' ) e.Replacement = SWWMUtility.PickSWWMSlot9(); else if ( e.Replacee is 'MWeaponPiece1' ) e.Replacement = SWWMUtility.PickSWWMSlot0(); - else if ( (e.Replacee is 'ShellBox') || (e.Replacee is 'CrossbowHefty') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMShellAmmoBig'; - else e.Replacement = SWWMShellAmmoBig.PickAmmo(true); - } - else if ( (e.Replacee is 'Shell') || (e.Replacee is 'CrossbowAmmo') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMShellAmmoSmall'; - else e.Replacement = SWWMShellAmmoSmall.PickAmmo(true); - } - else if ( e.Replacee is 'ClipBox' ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMClipAmmoBig'; - else e.Replacement = SWWMClipAmmoBig.PickAmmo(true); - } - else if ( (e.Replacee is 'Clip') || (e.Replacee is 'GoldWandAmmo') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMClipAmmoSmall'; - else e.Replacement = SWWMClipAmmoSmall.PickAmmo(true); - } - else if ( e.Replacee is 'BlasterHefty' ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMBlastAmmoBig'; - else e.Replacement = SWWMBlastAmmoBig.PickAmmo(true); - } - else if ( e.Replacee is 'BlasterAmmo' ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMBlastAmmoSmall'; - else e.Replacement = SWWMBlastAmmoSmall.PickAmmo(true); - } - else if ( (e.Replacee is 'RocketBox') || (e.Replacee is 'PhoenixRodHefty') || (e.Replacee is 'MaceHefty') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMRocketAmmoBig'; - else e.Replacement = SWWMRocketAmmoBig.PickAmmo(true); - } - else if ( (e.Replacee is 'RocketAmmo') || (e.Replacee is 'PhoenixRodAmmo') || (e.Replacee is 'MaceAmmo') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMRocketAmmoSmall'; - else e.Replacement = SWWMRocketAmmoSmall.PickAmmo(true); - } - else if ( (e.Replacee is 'CellPack') || (e.Replacee is 'SkullRodHefty') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMCellAmmoBig'; - else e.Replacement = SWWMCellAmmoBig.PickAmmo(true); - } - else if ( (e.Replacee is 'Cell') || (e.Replacee is 'SkullRodAmmo') ) - { - if ( swwm_ondemandammo ) e.Replacement = 'SWWMCellAmmoSmall'; - else e.Replacement = SWWMCellAmmoSmall.PickAmmo(true); - } + else if ( (e.Replacee is 'ShellBox') || (e.Replacee is 'CrossbowHefty') ) e.Replacement = 'SWWMShellAmmoBig'; + else if ( (e.Replacee is 'Shell') || (e.Replacee is 'CrossbowAmmo') ) e.Replacement = 'SWWMShellAmmoSmall'; + else if ( e.Replacee is 'ClipBox' ) e.Replacement = 'SWWMClipAmmoBig'; + else if ( (e.Replacee is 'Clip') || (e.Replacee is 'GoldWandAmmo') ) e.Replacement = 'SWWMClipAmmoSmall'; + else if ( e.Replacee is 'BlasterHefty' ) e.Replacement = 'SWWMBlastAmmoBig'; + else if ( e.Replacee is 'BlasterAmmo' ) e.Replacement = 'SWWMBlastAmmoSmall'; + else if ( (e.Replacee is 'RocketBox') || (e.Replacee is 'PhoenixRodHefty') || (e.Replacee is 'MaceHefty') ) e.Replacement = 'SWWMRocketAmmoBig'; + else if ( (e.Replacee is 'RocketAmmo') || (e.Replacee is 'PhoenixRodAmmo') || (e.Replacee is 'MaceAmmo') ) e.Replacement = 'SWWMRocketAmmoSmall'; + else if ( (e.Replacee is 'CellPack') || (e.Replacee is 'SkullRodHefty') ) e.Replacement = 'SWWMCellAmmoBig'; + else if ( (e.Replacee is 'Cell') || (e.Replacee is 'SkullRodAmmo') ) e.Replacement = 'SWWMCellAmmoSmall'; else if ( e.Replacee is 'Mana1' ) e.Replacement = 'FabricatorTier1'; else if ( e.Replacee is 'Mana2' ) e.Replacement = 'FabricatorTier2'; else if ( e.Replacee is 'Mana3' ) e.Replacement = 'FabricatorTier3'; diff --git a/zscript/handler/swwm_handler_vanillaboss.zsc b/zscript/handler/swwm_handler_vanillaboss.zsc index b2c0d419c..46b3d4023 100644 --- a/zscript/handler/swwm_handler_vanillaboss.zsc +++ b/zscript/handler/swwm_handler_vanillaboss.zsc @@ -149,14 +149,13 @@ extend Class SWWMHandler } private void VanillaBossSpawn( WorldEvent e, SWWMCombatTracker trk ) { - bool upgrademe = swwm_upgradebosses; if ( bossmap == -1 ) bossmap = WhichVanillaBossMap(); if ( bossmap == MAP_DE1M8 ) { if ( e.Thing is 'BaronOfHell' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 3; + e.Thing.StartHealth = e.Thing.Health *= 3; if ( trk ) trk.bBOSS = true; e.Thing.GiveInventory('BossMarker',1); } @@ -167,7 +166,7 @@ extend Class SWWMHandler if ( e.Thing is 'Cyberdemon' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5; + e.Thing.StartHealth = e.Thing.Health *= 5; if ( trk ) trk.bBOSS = true; e.Thing.GiveInventory('BossMarker',1); } @@ -178,7 +177,7 @@ extend Class SWWMHandler if ( e.Thing is 'Spidermastermind' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 6; + e.Thing.StartHealth = e.Thing.Health *= 6; if ( trk ) trk.bBOSS = true; e.Thing.GiveInventory('BossMarker',1); e.Thing.GiveInventory('EndgameBossMarker',1); @@ -190,7 +189,7 @@ extend Class SWWMHandler if ( e.Thing is 'Spidermastermind' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.StartHealth = e.Thing.Health *= 4; if ( trk ) trk.bBOSS = true; e.Thing.GiveInventory('BossMarker',1); } @@ -201,7 +200,7 @@ extend Class SWWMHandler if ( (e.Thing is 'Fatso') || (e.Thing is 'Arachnotron') ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; + e.Thing.StartHealth = e.Thing.Health *= 2; if ( trk ) trk.bBOSS = true; e.Thing.GiveInventory('BossMarker',1); } @@ -213,7 +212,7 @@ extend Class SWWMHandler { bossbrainactor = e.Thing; bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 40; // goodbye, instakills + e.Thing.StartHealth = e.Thing.Health *= 40; // goodbye, instakills if ( trk ) trk.bBOSS = true; e.Thing.GiveInventory('BossMarker',1); e.Thing.GiveInventory('EndgameBossMarker',1); @@ -230,7 +229,7 @@ extend Class SWWMHandler if ( e.Thing is 'Cyberdemon' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.StartHealth = e.Thing.Health *= 4; if ( trk ) trk.bBOSS = true; e.Thing.GiveInventory('BossMarker',1); } @@ -241,7 +240,7 @@ extend Class SWWMHandler if ( e.Thing is 'IronLich' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.StartHealth = e.Thing.Health *= 4; if ( trk ) trk.bBOSS = true; e.Thing.GiveInventory('BossMarker',1); } @@ -252,7 +251,7 @@ extend Class SWWMHandler if ( e.Thing is 'Minotaur' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 3; + e.Thing.StartHealth = e.Thing.Health *= 3; if ( trk ) trk.bBOSS = true; e.Thing.GiveInventory('BossMarker',1); } @@ -263,7 +262,7 @@ extend Class SWWMHandler if ( e.Thing is 'Sorcerer1' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; + e.Thing.StartHealth = e.Thing.Health *= 2; if ( trk ) trk.bBOSS = true; bosstag = "$BT_DSPARIL"; e.Thing.GiveInventory('BossMarker',1); @@ -275,7 +274,7 @@ extend Class SWWMHandler bossactors.Clear(); initialized = false; bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 8; + e.Thing.StartHealth = e.Thing.Health *= 8; if ( trk ) trk.bBOSS = true; bosstag = "$BT_DSPARIL2"; e.Thing.GiveInventory('BossMarker',1); @@ -288,7 +287,7 @@ extend Class SWWMHandler if ( e.Thing is 'ClericBoss' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; + e.Thing.StartHealth = e.Thing.Health *= 2; if ( trk ) trk.bBOSS = true; bosstag = "$BT_CLERIC"; e.Thing.GiveInventory('BossMarker',1); @@ -299,7 +298,7 @@ extend Class SWWMHandler if ( e.Thing is 'FighterBoss' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; + e.Thing.StartHealth = e.Thing.Health *= 2; if ( trk ) trk.bBOSS = true; bosstag = "$BT_FIGHTER"; e.Thing.GiveInventory('BossMarker',1); @@ -310,7 +309,7 @@ extend Class SWWMHandler if ( e.Thing is 'MageBoss' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2; + e.Thing.StartHealth = e.Thing.Health *= 2; if ( trk ) trk.bBOSS = true; bosstag = "$BT_MAGE"; e.Thing.GiveInventory('BossMarker',1); @@ -321,7 +320,7 @@ extend Class SWWMHandler if ( e.Thing is 'Dragon' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.StartHealth = e.Thing.Health *= 4; if ( trk ) trk.bBOSS = true; bosstag = "$BT_DRAGON"; e.Thing.GiveInventory('BossMarker',1); @@ -332,7 +331,7 @@ extend Class SWWMHandler if ( e.Thing is 'Heresiarch' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 8; + e.Thing.StartHealth = e.Thing.Health *= 8; if ( trk ) trk.bBOSS = true; bosstag = "$BT_HERESIARCH"; e.Thing.GiveInventory('BossMarker',1); @@ -343,7 +342,7 @@ extend Class SWWMHandler if ( e.Thing is 'Korax' ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 10; + e.Thing.StartHealth = e.Thing.Health *= 10; if ( trk ) trk.bBOSS = true; bosstag = "$BT_KORAX"; e.Thing.GiveInventory('BossMarker',1); @@ -355,7 +354,7 @@ extend Class SWWMHandler if ( (e.Thing is 'FighterBoss') || (e.Thing is 'ClericBoss') || (e.Thing is 'MageBoss') ) { bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4; + e.Thing.StartHealth = e.Thing.Health *= 4; if ( trk ) trk.bBOSS = true; bosstag = "$BT_DEATHKINGS"; initialized = true; // healthbar shows from the start @@ -379,7 +378,7 @@ extend Class SWWMHandler bossviewactor = null; initialized = false; bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5; + e.Thing.StartHealth = e.Thing.Health *= 5; if ( trk ) trk.bBOSS = true; bosstag = "$BT_ARCHANGELUS"; e.Thing.GiveInventory('BossMarker',1); @@ -392,7 +391,7 @@ extend Class SWWMHandler bossviewactor = null; initialized = false; bossactors.Push(e.Thing); - if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5; + e.Thing.StartHealth = e.Thing.Health *= 5; if ( trk ) trk.bBOSS = true; bosstag = "$BT_ARCHANGELUS"; e.Thing.GiveInventory('BossMarker',1); @@ -487,7 +486,6 @@ extend Class SWWMHandler ui void DrawBossBar( SWWMStatusBar bar ) { if ( !ui_initialized || (bossalpha <= 0.) ) return; - if ( !swwm_bosshealthbars ) return; if ( !mSmallFont ) mSmallFont = Font.GetFont('TewiFont'); if ( !bbar_f ) bbar_f = TexMan.CheckForTexture("graphics/HUD/BossHealthBarBox.png",TexMan.Type_Any); if ( !bbar_r ) bbar_r = TexMan.CheckForTexture("graphics/HUD/BossHealthBar.png",TexMan.Type_Any); diff --git a/zscript/handler/swwm_handler_worldtick.zsc b/zscript/handler/swwm_handler_worldtick.zsc index 7f14fe35e..e991bdf05 100644 --- a/zscript/handler/swwm_handler_worldtick.zsc +++ b/zscript/handler/swwm_handler_worldtick.zsc @@ -153,29 +153,23 @@ extend Class SWWMHandler if ( (level.total_secrets <= 0) && (level.total_items <= 0) && (level.total_monsters <= 0) ) return; if ( mapclear ) { - if ( swwm_silencemap ) + if ( (musplaying.name != "music/nomusic.ogg") && (musplaying.name != "music/solitary.ogg") ) { - if ( (musplaying.name != "music/nomusic.ogg") && (musplaying.name != "music/solitary.ogg") ) - { - lastmus = musplaying.name; - lastorder = musplaying.baseorder; - lastloop = musplaying.loop; - S_ChangeMusic((startmus>0)?"music/nomusic.ogg":"music/solitary.ogg",force:true); - } - if ( startmus > 0 ) startmus--; - else if ( startmus == 0 ) - { - startmus = -1; - S_ChangeMusic("music/solitary.ogg",force:true); - } + lastmus = musplaying.name; + lastorder = musplaying.baseorder; + lastloop = musplaying.loop; + S_ChangeMusic((startmus>0)?"music/nomusic.ogg":"music/solitary.ogg",force:true); + } + if ( startmus > 0 ) startmus--; + else if ( startmus == 0 ) + { + startmus = -1; + S_ChangeMusic("music/solitary.ogg",force:true); } if ( (level.found_secrets < level.total_secrets) || (level.found_items < level.total_items) || (level.killed_monsters < level.total_monsters) ) { - if ( swwm_silencemap ) - { - restartmus = 25; - S_ChangeMusic("music/nomusic.ogg",force:true); - } + restartmus = 25; + S_ChangeMusic("music/nomusic.ogg",force:true); S_StartSound("recordscratch",CHAN_VOICE,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); mapclear = false; if ( mapclearagain > 1 ) Console.Printf(StringTable.Localize("$SWWM_NOTCLEARAGAIN")); @@ -192,11 +186,8 @@ extend Class SWWMHandler lastmus = musplaying.name; lastorder = musplaying.baseorder; lastloop = musplaying.loop; - if ( swwm_silencemap ) - { - S_ChangeMusic("music/nomusic.ogg",force:true); - startmus = 1050; - } + S_ChangeMusic("music/nomusic.ogg",force:true); + startmus = 1050; for ( int i=0; i PRINT_HIGH) && (level.totaltime < (MainQueue[i].tic+35*swwm_chatduration)) ) continue; + if ( (MainQueue[i].type <= PRINT_HIGH) && (level.totaltime < (MainQueue[i].tic+GameTicRate*MSGDURATION)) ) continue; + else if ( (MainQueue[i].type > PRINT_HIGH) && (level.totaltime < (MainQueue[i].tic+GameTicRate*CHATDURATION)) ) continue; MainQueue.Delete(i); i--; } @@ -1217,8 +1216,8 @@ Class SWWMStatusBar : BaseStatusBar // ignore local player if ( trk.mytarget == CPlayer.mo ) continue; if ( trk.mytarget is 'PlayerGone' ) continue; // ignore "gone" players - int mtime = 35; - if ( level.allmap && (trk.lasthealth > 0) ) mtime += 105; + int mtime = GameTicRate; + if ( level.allmap && (trk.lasthealth > 0) ) mtime += GameTicRate*3; if ( level.maptime > trk.updated+mtime ) continue; // ignore trackers clearly outside of player view Vector3 tdir = level.Vec3Diff(viewpos,trk.pos); @@ -1234,21 +1233,12 @@ Class SWWMStatusBar : BaseStatusBar trackers.Resize(i); // sort by distance (give priority to players) qsort_trackers(trackers,0,trackers.Size()-1); - // cap if limited (must cap after sorting, though, otherwise it'll look weird) - if ( maxtargetnum && (trackers.Size() > maxtargetnum) ) - { - int endo = trackers.Size()-maxtargetnum; - // we gotta push the frontmost bars to the start, due to the inverted draw order - for ( int i=maxtargetnum-1; i>=0; i-- ) - trackers[i] = trackers[endo+i]; - trackers.Resize(maxtargetnum); - } } else trackers.Clear(); // update floating scores, adding the scorenums first, then the damnums int total_sz = 0; - if ( swwm_scorenums ) total_sz += maxscorenum?min(maxscorenum,hnd.scorenums_cnt):hnd.scorenums_cnt; - if ( swwm_healthnums ) total_sz += maxdamnum?min(maxdamnum,hnd.damnums_cnt):hnd.damnums_cnt; + if ( swwm_scorenums ) total_sz += hnd.scorenums_cnt; + if ( swwm_healthnums ) total_sz += hnd.damnums_cnt; if ( scoreobjs.Size() != total_sz ) scoreobjs.Resize(total_sz); int i = 0; @@ -1294,7 +1284,7 @@ Class SWWMStatusBar : BaseStatusBar i = 0; for ( SWWMItemSense s=demo.itemsense; s; s=s.next ) { - if ( !level.allmap && (level.maptime > s.updated+35) ) continue; + if ( !level.allmap && (level.maptime > s.updated+GameTicRate) ) continue; // ignore points clearly outside of player view Vector3 tdir = level.Vec3Diff(viewpos,s.pos); if ( viewvec dot tdir < 0 ) continue; @@ -1623,9 +1613,9 @@ Class SWWMStatusBar : BaseStatusBar else tag = String.Format("\cy%s\c-",StringTable.Localize("$SWWM_NEXIT")); } } - Screen.DrawText(mTinyFont,Font.CR_WHITE,(vpos.x-hsi*mTinyFont.StringWidth(tag)/2.)/hsi,(vpos.y-hsi*mTinyFont.GetHeight()/2.)/hsi,tag,DTA_VirtualWidthF,ssi.x,DTA_VirtualHeightF,ssi.y,DTA_KeepRatio,true); + Screen.DrawText(mTinyFont,Font.CR_WHITE,(vpos.x-hs2*mTinyFont.StringWidth(tag)/2.)/hs2,(vpos.y-hs2*mTinyFont.GetHeight()/2.)/hs2,tag,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); tag = String.Format("\cu(%s\cu)\c-",FormatDist(tdir.length())); - Screen.DrawText(mTinyFont,Font.CR_WHITE,(vpos.x-hsi*mTinyFont.StringWidth(tag)/2.)/hsi,(vpos.y+hsi*mTinyFont.GetHeight()/2.)/hsi,tag,DTA_VirtualWidthF,ssi.x,DTA_VirtualHeightF,ssi.y,DTA_KeepRatio,true); + Screen.DrawText(mTinyFont,Font.CR_WHITE,(vpos.x-hs2*mTinyFont.StringWidth(tag)/2.)/hs2,(vpos.y+hs2*mTinyFont.GetHeight()/2.)/hs2,tag,DTA_VirtualWidthF,ss2.x,DTA_VirtualHeightF,ss2.y,DTA_KeepRatio,true); } } // sensed items @@ -1640,17 +1630,17 @@ Class SWWMStatusBar : BaseStatusBar Vector3 ndc = SWWMUtility.ProjectPoint(projdata,ViewPos+tdir); if ( ndc.z >= 1. ) continue; Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); - int mtime = level.allmap?70:35; - double alph = clamp(((s.updated+mtime)-(level.maptime+fractic))/35.,0.,1.); + int mtime = level.allmap?(GameTicRate*2):GameTicRate; + double alph = clamp(((s.updated+mtime)-(level.maptime+fractic))/double(GameTicRate),0.,1.); alph *= clamp(1.5-1.5*(tdir.length()/(level.allmap?1200.:800.)),0.,1.); tag = s.tag; - Screen.DrawText(mTinyFont,s.vipitem?Font.CR_PURPLE:s.scoreitem?Font.CR_GOLD:Font.CR_GREEN,(vpos.x-hsd*mTinyFont.StringWidth(tag)/2.)/hsd,(vpos.y-hsd*mTinyFont.GetHeight()/2.)/hsd,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(mTinyFont,s.vipitem?Font.CR_PURPLE:s.scoreitem?Font.CR_GOLD:Font.CR_GREEN,(vpos.x-hs1*mTinyFont.StringWidth(tag)/2.)/hs1,(vpos.y-hs1*mTinyFont.GetHeight()/2.)/hs1,tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); tag = String.Format("\cu(%s\cu)\c-",FormatDist(tdir.length())); - Screen.DrawText(mTinyFont,Font.CR_WHITE,(vpos.x-hsd*mTinyFont.StringWidth(tag)/2.)/hsd,(vpos.y+hsd*mTinyFont.GetHeight()/2.)/hsd,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(mTinyFont,Font.CR_WHITE,(vpos.x-hs1*mTinyFont.StringWidth(tag)/2.)/hs1,(vpos.y+hs1*mTinyFont.GetHeight()/2.)/hs1,tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); if ( s.item is 'SWWMRespawnTimer' ) { tag = String.Format(StringTable.Localize("$SWWM_TRESPAWN"),s.item.special2/GameTicRate); - Screen.DrawText(mTinyFont,Font.CR_WHITE,(vpos.x-hsd*mTinyFont.StringWidth(tag)/2.)/hsd,(vpos.y+hsd*mTinyFont.GetHeight()*2)/hsd,tag,DTA_VirtualWidthF,ssd.x,DTA_VirtualHeightF,ssd.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(mTinyFont,Font.CR_WHITE,(vpos.x-hs1*mTinyFont.StringWidth(tag)/2.)/hs1,(vpos.y+hs1*mTinyFont.GetHeight()*2)/hs1,tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); } } } @@ -1677,12 +1667,12 @@ Class SWWMStatusBar : BaseStatusBar } if ( targ.bFRIENDLY ) tag = "\cg♥\c- "..tag.." \cg♥\c-"; } - int mtime = 35; - if ( level.allmap && (targ.lasthealth > 0) ) mtime += 105; - double alph = clamp(((targ.updated+mtime)-(level.maptime+fractic))/35.,0.,1.); + int mtime = GameTicRate; + if ( level.allmap && (targ.lasthealth > 0) ) mtime += GameTicRate*3; + double alph = clamp(((targ.updated+mtime)-(level.maptime+fractic))/double(GameTicRate),0.,1.); Vector2 barsiz = TexMan.GetScaledSize(EnemyBTex); - barsiz.x *= hsb; - barsiz.y *= hsb; + barsiz.x *= hs1; + barsiz.y *= hs1; Vector2 barpos = vpos-(barsiz/2.); barpos.y -= 16.; Font fnt = swwm_bigtags?mSmallFont:mTinyFont; @@ -1694,37 +1684,37 @@ Class SWWMStatusBar : BaseStatusBar if ( col == -1 ) col = Font.CR_WHITE; } if ( swwm_targettags || targ.myplayer && (tag != "") ) - Screen.DrawText(fnt,col,(barpos.x+barsiz.x/2.-(fnt.StringWidth(tag)*hsb)/2.)/hsb,(barpos.y-fnt.GetHeight()*hsb)/hsb,tag,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph); - Screen.DrawTexture(EnemyBTex,false,barpos.x/hsb,barpos.y/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(fnt,col,(barpos.x+barsiz.x/2.-(fnt.StringWidth(tag)*hs1)/2.)/hs1,(barpos.y-fnt.GetHeight()*hs1)/hs1,tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawTexture(EnemyBTex,false,barpos.x/hs1,barpos.y/hs1,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); double ht = clamp(targ.intp.GetValue(),0,targ.maxhealth*100); double hw = (min(ht,targ.maxhealth)*50.)/targ.maxhealth; if ( targ.mytarget && (targ.mytarget.bInvulnerable || (targ.myplayer && (targ.myplayer.cheats&(CF_GODMODE|CF_GODMODE2))) || targ.mytarget.FindInventory("InvinciballPower")) ) { - Screen.DrawTexture(EnemyHTex[4],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + Screen.DrawTexture(EnemyHTex[4],false,(barpos.x+2*hs1)/hs1,(barpos.y+2*hs1)/hs1,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); } else { - Screen.DrawTexture(EnemyHTex[0],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + Screen.DrawTexture(EnemyHTex[0],false,(barpos.x+2*hs1)/hs1,(barpos.y+2*hs1)/hs1,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); if ( ht > targ.maxhealth ) { hw = (min(ht-targ.maxhealth,targ.maxhealth)*50.)/targ.maxhealth; - Screen.DrawTexture(EnemyHTex[1],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + Screen.DrawTexture(EnemyHTex[1],false,(barpos.x+2*hs1)/hs1,(barpos.y+2*hs1)/hs1,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); } if ( ht > targ.maxhealth*2 ) { hw = (min(ht-targ.maxhealth*2,targ.maxhealth*3)*50.)/(targ.maxhealth*3); - Screen.DrawTexture(EnemyHTex[2],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + Screen.DrawTexture(EnemyHTex[2],false,(barpos.x+2*hs1)/hs1,(barpos.y+2*hs1)/hs1,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); } if ( ht > targ.maxhealth*5 ) { hw = (min(ht-targ.maxhealth*5,targ.maxhealth*5)*50.)/(targ.maxhealth*5); - Screen.DrawTexture(EnemyHTex[3],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); + Screen.DrawTexture(EnemyHTex[3],false,(barpos.x+2*hs1)/hs1,(barpos.y+2*hs1)/hs1,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph,DTA_WindowRightF,hw); } } if ( targ.mytarget && targ.mytarget.FindInventory("DivineSpriteEffect") ) { double falph = clamp((ht-targ.maxhealth*10)/(targ.maxhealth*60.),0.,1.); - Screen.DrawTexture(EnemyHTex[5],false,(barpos.x+2*hsb)/hsb,(barpos.y+2*hsb)/hsb,DTA_VirtualWidthF,ssb.x,DTA_VirtualHeightF,ssb.y,DTA_KeepRatio,true,DTA_Alpha,alph*falph,DTA_LegacyRenderStyle,STYLE_Add); + Screen.DrawTexture(EnemyHTex[5],false,(barpos.x+2*hs1)/hs1,(barpos.y+2*hs1)/hs1,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph*falph,DTA_LegacyRenderStyle,STYLE_Add); } } // floating kill scores and others @@ -1736,7 +1726,7 @@ Class SWWMStatusBar : BaseStatusBar if ( ndc.z >= 1. ) continue; Vector2 vpos = SWWMUtility.NDCToViewport(projdata,ndc); tag = String.Format("%+d",snum.score); - double alph = clamp((snum.lifespan+fractic)/35.,0.,1.); + double alph = clamp((snum.lifespan+fractic)/double(GameTicRate),0.,1.); Vector2 fo = (0,0); bool isscore = false; if ( snum.damnum ) @@ -1764,18 +1754,17 @@ Class SWWMStatusBar : BaseStatusBar fo.y = snum.initialspan-(snum.lifespan-fractic); isscore = true; } - double hs0 = isscore?hss:hsn; - Vector2 ss0 = isscore?sss:ssn; + double hs0 = isscore?hs1:hs; + Vector2 ss0 = isscore?ss1:ss; Screen.DrawText(mTinyFont,snum.tcolor,(vpos.x-hs0*(fo.x+mTinyFont.StringWidth(tag)/2.))/hs0,(vpos.y-hs0*(fo.y+(mTinyFont.GetHeight()/2.)))/hs0,tag,DTA_VirtualWidthF,ss0.x,DTA_VirtualHeightF,ss0.y,DTA_KeepRatio,true,DTA_Alpha,alph); // extra strings (if available) - if ( !swwm_scorebonus ) continue; fo.y += mTinyFont.GetHeight(); for ( int i=0; i 0 ) tag.AppendFormat(" x%d",snum.xscore[i]); - Screen.DrawText(mTinyFont,snum.xtcolor[i],(vpos.x-hss*(fo.x+mTinyFont.StringWidth(tag)/2.))/hss,(vpos.y-hss*(fo.y+(mTinyFont.GetHeight()/2.)))/hss,tag,DTA_VirtualWidthF,sss.x,DTA_VirtualHeightF,sss.y,DTA_KeepRatio,true,DTA_Alpha,alph); + Screen.DrawText(mTinyFont,snum.xtcolor[i],(vpos.x-hs1*(fo.x+mTinyFont.StringWidth(tag)/2.))/hs1,(vpos.y-hs1*(fo.y+(mTinyFont.GetHeight()/2.)))/hs1,tag,DTA_VirtualWidthF,ss1.x,DTA_VirtualHeightF,ss1.y,DTA_KeepRatio,true,DTA_Alpha,alph); fo.y += mTinyFont.GetHeight(); } } @@ -2285,8 +2274,8 @@ Class SWWMStatusBar : BaseStatusBar else if ( t.shootable ) col = mm_thingcolor_shootable; plainactor = true; } - int mtime = 35; - if ( level.allmap && !t.expired && t.target ) mtime += 105; + int mtime = GameTicRate; + if ( level.allmap && !t.expired && t.target ) mtime += GameTicRate*3; Vector2 rv = pos-cpos; bool isportal = false; Sector sec = level.PointInSector(pos); @@ -2360,7 +2349,7 @@ Class SWWMStatusBar : BaseStatusBar } if ( drawn ) { - double alph = clamp(((t.lastupdate+mtime)-level.maptime)/35.,0.,1.); + double alph = clamp(((t.lastupdate+mtime)-level.maptime)/double(GameTicRate),0.,1.); if ( t.isbeam ) alph *= t.target?(t.target.alpha/t.target.default.alpha):0.; double theta = clamp(5.*FrameTime,0.,1.); t.smoothalpha = SWWMUtility.Lerp(t.smoothalpha,alph,theta); @@ -2616,14 +2605,12 @@ Class SWWMStatusBar : BaseStatusBar return true; } - private void DrawInventory( bool drawmug = false ) + private void DrawInventory() { - int invy = drawmug?61:56; + int invy = 61; // active items (armor / powerups) double xx = margin+2; - double yy = ss.y-(margin+invy); - if ( drawmug ) yy -= 9; - if ( CPlayer.mo.InvSel && !isInventoryBarVisible() && !drawmug ) yy -= 34; + double yy = ss.y-(margin+invy+9); bool drewarmor = false; for ( Inventory i=CPlayer.mo.Inv; i; i=i.Inv ) { @@ -2632,14 +2619,12 @@ Class SWWMStatusBar : BaseStatusBar yy -= 34; drewarmor = true; } - yy = ss.y-(margin+invy); - if ( drawmug ) yy -= 9; + yy = ss.y-(margin+invy+9); if ( drewarmor ) { xx += 36; - if ( drawmug && CPlayer.mo.InvSel && !isInventoryBarVisible() ) yy -= 34; + if ( CPlayer.mo.InvSel && !isInventoryBarVisible() ) yy -= 34; } - else if ( CPlayer.mo.InvSel && !isInventoryBarVisible() && !drawmug ) yy -= 34; for ( Inventory i=CPlayer.mo.Inv; i; i=i.Inv ) { if ( (i is 'SWWMLamp') && SWWMLamp(i).bActivated ) @@ -2691,8 +2676,8 @@ Class SWWMStatusBar : BaseStatusBar DrawInvIcon(next[1],xx+70,yy+2,1./3.); return; } - Screen.DrawTexture(InventoryTex,false,margin+(drawmug?36:0),ss.y-(margin+invy+2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - DrawInvIcon(CPlayer.mo.InvSel,margin+2+(drawmug?36:0),ss.y-(margin+invy),selected:true); + Screen.DrawTexture(InventoryTex,false,margin+36,ss.y-(margin+invy+2),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + DrawInvIcon(CPlayer.mo.InvSel,margin+38,ss.y-(margin+invy),selected:true); } private void DrawWeapons() @@ -2765,7 +2750,7 @@ Class SWWMStatusBar : BaseStatusBar xx = ss.x-(margin+54); yy = ss.y-(margin+14); bool bDrewAmmo = false; - bool checkowned = swwm_hudtrimammo; + bool checkowned = !swwm_hudallammo; Array OwnedWeapons; if ( checkowned ) for ( Inventory i=CPlayer.mo.inv; i; i=i.inv ) { @@ -2961,7 +2946,7 @@ Class SWWMStatusBar : BaseStatusBar rss = int(MSTimeF())*128; let demo = Demolitionist(CPlayer.mo); if ( !demo ) return; - double paintime = clamp((demo.lastdamagetimer-(gametic+Fractic))/35.,0.,1.); + double paintime = clamp((demo.lastdamagetimer-(gametic+Fractic))/double(GameTicRate),0.,1.); double noiz = min(demo.lastdamage*.5*paintime,3.); Vector2 shake = (RandomShiver(),RandomShiver())*noiz; if ( !CPlayer.mo.FindInventory("GhostPower") ) @@ -2985,16 +2970,11 @@ Class SWWMStatusBar : BaseStatusBar if ( CPlayer.mo.FindInventory("BarrierPower") ) Screen.DrawTexture(FaceTex[14],false,margin+shake.x,ss.y-(margin+32)+shake.y,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,.5,DTA_LegacyRenderStyle,STYLE_Add); } - private void DrawStatus( bool drawmug = false ) + private void DrawStatus() { - int ox = 0; - int oy = 0; - if ( drawmug ) - { - DrawMugshot(); - ox = 36; - oy = 5; - } + DrawMugshot(); + int ox = 36; + int oy = 5; Screen.DrawTexture(StatusTex,false,margin+ox,ss.y-(margin+22+oy),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); String str; double ht = clamp(HealthInter.GetValue(fractic),0,10000); @@ -3101,7 +3081,7 @@ Class SWWMStatusBar : BaseStatusBar } if ( PickupQueue.Size() <= 0 ) return; // reverse order since they're drawn bottom to top - int mend = max(0,PickupQueue.Size()-swwm_maxpickup); + int mend = max(0,PickupQueue.Size()-MAXPICKUP); yy = ss.y-(margin+50); // shift up if boss healthbar is present if ( hnd && (hnd.bossalpha > 0.) ) yy -= int(25*clamp(hnd.bossalpha*2.,0.,1.)); @@ -3110,7 +3090,7 @@ Class SWWMStatusBar : BaseStatusBar for ( int i=PickupQueue.Size()-1; i>=mend; i-- ) { PickupQueue[i].UpdateText(int(ss.x*.75)); - double curtime = (PickupQueue[i].tic+GameTicRate*swwm_pickduration)-(level.totaltime+fractic); + double curtime = (PickupQueue[i].tic+GameTicRate*PICKDURATION)-(level.totaltime+fractic); double alph = clamp(curtime/20.,0.,1.); let l = PickupQueue[i].l; int maxlen = 0; @@ -3163,7 +3143,7 @@ Class SWWMStatusBar : BaseStatusBar } } if ( MainQueue.Size() <= 0 ) return; - int mstart = max(0,MainQueue.Size()-((chatopen>=gametic)?swwm_maxshownbig:swwm_maxshown)); + int mstart = max(0,MainQueue.Size()-((chatopen>=gametic)?MAXSHOWNBIG:MAXSHOWN)); xx = margin; yy = margin; bool smol = (ss.x<640); @@ -3178,8 +3158,8 @@ Class SWWMStatusBar : BaseStatusBar MainQueue[i].UpdateText(); let l = smol?MainQueue[i].ls:MainQueue[i].l; double curtime = MainQueue[i].tic-(level.totaltime+fractic); - if ( MainQueue[i].type < PRINT_CHAT ) curtime += GameTicRate*swwm_msgduration; - else curtime += GameTicRate*swwm_chatduration; + if ( MainQueue[i].type < PRINT_CHAT ) curtime += GameTicRate*MSGDURATION; + else curtime += GameTicRate*CHATDURATION; double alph = clamp(curtime/20.,0.,1.); for ( int j=0; j ST_SCORE) && !swwm_healthnums ) return null; let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); if ( !hnd ) return null; - return SpawnInternal(hnd,score,pos,type,acc,tcolor); + return SpawnInternal(hnd,score,pos,type,tcolor); } - static SWWMScoreObj SpawnFromHandler( SWWMHandler hnd, int score, Vector3 pos, int type = ST_Score, Actor acc = null, int tcolor = -1 ) + static SWWMScoreObj SpawnFromHandler( SWWMHandler hnd, int score, Vector3 pos, int type = ST_Score, int tcolor = -1 ) { // early checks if ( (type == ST_SCORE) && !swwm_scorenums ) return null; else if ( (type > ST_SCORE) && !swwm_healthnums ) return null; - return SpawnInternal(hnd,score,pos,type,acc,tcolor); + return SpawnInternal(hnd,score,pos,type,tcolor); } - private static SWWMScoreObj SpawnInternal( SWWMHandler hnd, int score, Vector3 pos, int type = ST_Score, Actor acc = null, int tcolor = -1 ) + private static SWWMScoreObj SpawnInternal( SWWMHandler hnd, int score, Vector3 pos, int type = ST_Score, int tcolor = -1 ) { let o = new("SWWMScoreObj"); o.score = score; @@ -52,23 +52,22 @@ Class SWWMScoreObj play else switch ( type ) { case ST_Score: - o.tcolor = swwm_numcolor_scr; + o.tcolor = Font.CR_GOLD; break; case ST_Damage: - o.tcolor = swwm_numcolor_dmg; + o.tcolor = Font.CR_RED; break; case ST_Health: - o.tcolor = swwm_numcolor_hp; + o.tcolor = Font.CR_GREEN; break; case ST_Armor: - o.tcolor = swwm_numcolor_ap; + o.tcolor = Font.CR_BLUE; break; } o.starttic = level.maptime; o.seed = Random[ScoreBits](); o.seed2 = Random[ScoreBits](); o.damnum = (type > ST_Score); - o.acc = acc; if ( o.damnum ) { o.next = hnd.damnums; @@ -88,7 +87,7 @@ Class SWWMScoreObj play { self.xscore.Push(xscore); self.xstr.Push(xstr); - self.xtcolor.Push((xtcolor==int.min)?swwm_numcolor_bonus:xtcolor); + self.xtcolor.Push((xtcolor==int.min)?Font.CR_FIRE:xtcolor); } bool Tick() @@ -264,7 +263,7 @@ Class SWWMCombatTracker play bool legged, mutated; int tcnt; double height; - int mxdist, dbar; + int dbar; bool bBOSS, bFRIENDLY; bool firsthit; bool bUpdateMorph; @@ -422,20 +421,20 @@ Class SWWMCombatTracker play if ( mytarget.player && (mytarget.player.mo == mytarget) ) { if ( mytarget.IsFriend(players[consoleplayer].mo) ) updated = level.maptime+35; - else if ( ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < mxdist)) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) + else if ( players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime; } // friendlies within a set distance - else if ( mytarget.bFRIENDLY && ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < mxdist)) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime+35; + else if ( mytarget.bFRIENDLY && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime+35; // enemies within a set distance that have us as target - else if ( mytarget.target && (mytarget.target.Health > 0) && (mytarget.target.player == players[consoleplayer]) && ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < mxdist)) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime+70; + else if ( mytarget.target && (mytarget.target.Health > 0) && (mytarget.target.player == players[consoleplayer]) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime+70; // any visible enemies within one quarter of the set distance - else if ( ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < (mxdist/4))) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime; + else if ( players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime; } else if ( (mytarget is 'BossBrain') || (mytarget is 'SWWMHangingKeen') ) { // special stuff, only if visible - if ( ((mxdist <= 0) || (mytarget.Vec3To(players[consoleplayer].Camera).length() < (mxdist/4))) && players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime; + if ( players[consoleplayer].Camera.CheckSight(mytarget,SF_IGNOREVISIBILITY|SF_IGNOREWATERBOUNDARY) ) updated = level.maptime; } return false; } diff --git a/zscript/items/swwm_ammospawn.zsc b/zscript/items/swwm_ammospawn.zsc index 95494d856..08ddd9a5f 100644 --- a/zscript/items/swwm_ammospawn.zsc +++ b/zscript/items/swwm_ammospawn.zsc @@ -47,9 +47,9 @@ Class SWWMShellAmmoSmall : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) + if ( Random[Replacements](0,1) && (SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05Ammo3'; switch( Random[Replacements](0,9) ) { @@ -73,9 +73,9 @@ Class SWWMShellAmmoBig : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) + if ( Random[Replacements](0,1) && (SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BigAmmo'; switch( Random[Replacements](0,14) ) { @@ -105,16 +105,16 @@ Class SWWMClipAmmoSmall : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { if ( !Random[Replacements](0,4) ) { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('HeavyMahsheenGun') ) return Random[Replacements](0,2)?'SheenAmmo3':'SheenSmallAmmo'; - if ( notondemand || SWWMUtility.ItemExists('Eviscerator') ) + if ( SWWMUtility.ItemExists('Eviscerator') ) return 'EvisceratorShell'; } - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) + if ( Random[Replacements](0,1) && (SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) return Random[Replacements](0,2)?'SMW05Ammo':'SMW05Ammo2'; return Random[Replacements](0,1)?'RedShell':'GreenShell'; } @@ -123,9 +123,9 @@ Class SWWMClipAmmoBig : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('HeavyMahsheenGun') ) return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenBigAmmo'; return Random[Replacements](0,5)?'EvisceratorShell':Random[Replacements](0,2)?'EvisceratorShell2':'EvisceratorShell3'; } @@ -134,9 +134,9 @@ Class SWWMBlastAmmoSmall : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('HeavyMahsheenGun') ) return Random[Replacements](0,2)?'SheenAmmo3':'SheenSmallAmmo'; return 'EvisceratorShell'; } @@ -145,9 +145,9 @@ Class SWWMBlastAmmoBig : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('HeavyMahsheenGun') ) return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenBigAmmo'; return Random[Replacements](0,2)?'EvisceratorShell':Random[Replacements](0,1)?'EvisceratorShell2':'EvisceratorShell3'; } @@ -156,9 +156,9 @@ Class SWWMRocketAmmoSmall : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) return 'QuadravolAmmo'; + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('Quadravol') ) return 'QuadravolAmmo'; return Random[Replacements](0,2)?'HellblazerMissiles':'HellblazerCrackshots'; } } @@ -166,9 +166,9 @@ Class SWWMRocketAmmoBig : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('Quadravol') ) return Random[Replacements](0,4)?'QuadravolAmmo2':'QuadravolAmmo3'; switch ( Random[Replacements](0,11) ) { @@ -195,19 +195,19 @@ Class SWWMCellAmmoSmall : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { if ( !Random[Replacements](0,2) ) { if ( !Random[Replacements](0,3) ) { - if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return 'MisterGAmmo'; - if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return 'CandyGunBullets'; + if ( !Random[Replacements](0,2) && SWWMUtility.ItemExists('MisterRifle') ) return 'MisterGAmmo'; + if ( SWWMUtility.ItemExists('CandyGun') ) return 'CandyGunBullets'; } - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RayKhom')) ) return 'RayBolt2'; - if ( notondemand || SWWMUtility.ItemExists('SilverBullet') ) return Random[Replacements](0,2)?'SilverBullets':'SilverBullets2'; + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('RayKhom') ) return 'RayBolt2'; + if ( SWWMUtility.ItemExists('SilverBullet') ) return Random[Replacements](0,2)?'SilverBullets':'SilverBullets2'; } - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) return Random[Replacements](0,2)?'SparksterBAmmo':'SparksterRAmmo'; + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('ModernSparkster') ) return Random[Replacements](0,2)?'SparksterBAmmo':'SparksterRAmmo'; return 'SparkUnit'; } } @@ -215,27 +215,27 @@ Class SWWMCellAmmoBig : SWWMAmmoSpawner { Mixin SWWMOndemandAmmoSpawner; - static Class PickAmmo( bool notondemand = false ) + static Class PickAmmo() { if ( !Random[Replacements](0,3) ) { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RafanKos')) && SWWMUtility.CheckNeedsItem('UltimateAmmo',true) && !SWWMUtility.ItemExists('UltimateAmmo',worldonly:true) && !SWWMUtility.ItemExists('RafanKos',worldonly:true) ) + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('RafanKos') && SWWMUtility.CheckNeedsItem('UltimateAmmo',true) && !SWWMUtility.ItemExists('UltimateAmmo',worldonly:true) && !SWWMUtility.ItemExists('RafanKos',worldonly:true) ) return 'UltimateAmmo'; - if ( (notondemand || SWWMUtility.ItemExists('Ynykron')) && SWWMUtility.CheckNeedsItem('YnykronAmmo',true) && !SWWMUtility.ItemExists('YnykronAmmo',worldonly:true) && !SWWMUtility.ItemExists('Ynykron',worldonly:true) ) + if ( (SWWMUtility.ItemExists('Ynykron')) && SWWMUtility.CheckNeedsItem('YnykronAmmo',true) && !SWWMUtility.ItemExists('YnykronAmmo',worldonly:true) && !SWWMUtility.ItemExists('Ynykron',worldonly:true) ) return 'YnykronAmmo'; } if ( Random[Replacements](0,1) ) { - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RayKhom')) ) return Random[Replacements](0,2)?'RayBolt5':'RayAmmo'; - if ( notondemand || SWWMUtility.ItemExists('MisterRifle') ) return Random[Replacements](0,2)?'MisterRound5':'MisterAmmo'; + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('RayKhom') ) return Random[Replacements](0,2)?'RayBolt5':'RayAmmo'; + if ( SWWMUtility.ItemExists('MisterRifle') ) return Random[Replacements](0,2)?'MisterRound5':'MisterAmmo'; } - if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('SilverBullet')) ) + if ( !Random[Replacements](0,2) && SWWMUtility.ItemExists('SilverBullet') ) { if ( Random[Replacements](0,3) ) return Random[Replacements](0,2)?'SilverBullets_2':'SilverBullets2_2'; return Random[Replacements](0,2)?'SilverBulletAmmo':'SilverBulletAmmo2'; } - if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return Random[Replacements](0,3)?'CandyGunBullets3':'CandyGunAmmo'; - if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) + if ( SWWMUtility.ItemExists('CandyGun') ) return Random[Replacements](0,3)?'CandyGunBullets3':'CandyGunAmmo'; + if ( Random[Replacements](0,1) && SWWMUtility.ItemExists('ModernSparkster') ) { if ( Random[Replacements](0,1) ) return Random[Replacements](0,2)?'SparksterBAmmo2':'SparksterBAmmo3'; return Random[Replacements](0,2)?'SparksterRAmmo2':'SparksterRAmmo3'; diff --git a/zscript/items/swwm_basearmor.zsc b/zscript/items/swwm_basearmor.zsc index 0b5735084..fc265c1dd 100644 --- a/zscript/items/swwm_basearmor.zsc +++ b/zscript/items/swwm_basearmor.zsc @@ -92,15 +92,13 @@ Class SWWMArmor : Armor abstract } if ( !bNODRAIN ) amount -= saved; damage = newdamage; - bool shouldautouse = CVar.GetCVar('swwm_autousearmor',Owner.player).GetBool(); - if ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) && shouldautouse ) + if ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) ) { if ( GetDefaultByType(parent).UseSound ) Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP,.6); int tgive = 0; while ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) ) { - if ( swwm_accdamage ) tgive += default.Amount; - else SWWMScoreObj.Spawn(default.Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); + SWWMScoreObj.Spawn(default.Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); Amount += default.Amount; Owner.TakeInventory(parent,1); // absorb the extra damage too @@ -113,7 +111,6 @@ Class SWWMArmor : Armor abstract amount -= saved; damage = newdamage; } - if ( swwm_accdamage ) SWWMScoreObj.Spawn(tgive,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); } else if ( amount <= 0 ) { diff --git a/zscript/items/swwm_basehealth.zsc b/zscript/items/swwm_basehealth.zsc index 9ba62e6b2..5576e0f27 100644 --- a/zscript/items/swwm_basehealth.zsc +++ b/zscript/items/swwm_basehealth.zsc @@ -100,8 +100,6 @@ Class SWWMHealth : Inventory abstract return; // this damage type is ignored by the player, so it does not affect us if ( damageType == 'EndLevel' ) return; // don't trigger on endlevel damage - bool shouldautouse = CVar.GetCVar('swwm_autousehealth',Owner.player).GetBool(); - if ( !shouldautouse && !bBIGPOWERUP ) return; // powerup health is always auto-used if ( (Owner.Health-damage <= (GetDefaultByType(giveme).MaxAmount-GetDefaultByType(giveme).Amount)) ) { newdamage = damage; @@ -121,8 +119,7 @@ Class SWWMHealth : Inventory abstract bool morethanonce = false; while ( (Amount > 0) && (newdamage > 0) ) { - if ( swwm_accdamage ) tgive += GetDefaultByType(giveme).Amount; - else SWWMScoreObj.Spawn(GetDefaultByType(giveme).Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); + SWWMScoreObj.Spawn(GetDefaultByType(giveme).Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); newdamage = newdamage-GetDefaultByType(giveme).Amount; if ( newdamage < 0 ) Owner.GiveBody(-newdamage,GetDefaultByType(giveme).MaxAmount); newdamage = max(0,newdamage); @@ -131,7 +128,6 @@ Class SWWMHealth : Inventory abstract morethanonce = true; Amount--; } - if ( swwm_accdamage ) SWWMScoreObj.Spawn(tgive,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); } else newdamage = damage; } diff --git a/zscript/items/swwm_baseitem.zsc b/zscript/items/swwm_baseitem.zsc index 473672a95..d579e76e2 100644 --- a/zscript/items/swwm_baseitem.zsc +++ b/zscript/items/swwm_baseitem.zsc @@ -98,7 +98,7 @@ Mixin Class SWWMUseToPickup // can't pick up if ( !bSPECIAL ) return false; // no use through melee - if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch && !swwm_meleepickup ) + if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch ) return false; Vector3 itempos = Vec3Offset(0,0,Height/2), userpos = user.Vec2OffsetZ(0,0,user.player.viewz); diff --git a/zscript/items/swwm_powerups.zsc b/zscript/items/swwm_powerups.zsc index 9b2645cc1..c1cf19374 100644 --- a/zscript/items/swwm_powerups.zsc +++ b/zscript/items/swwm_powerups.zsc @@ -45,14 +45,9 @@ Class GrilledCheeseSandwich : Inventory SWWMScoreObj.Spawn(1000,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Health); if ( Owner is 'Demolitionist' ) { - if ( swwm_accdamage ) - SWWMScoreObj.Spawn(600,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); - else - { - SWWMScoreObj.Spawn(200,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); - SWWMScoreObj.Spawn(150,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); - SWWMScoreObj.Spawn(250,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); - } + SWWMScoreObj.Spawn(200,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); + SWWMScoreObj.Spawn(150,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); + SWWMScoreObj.Spawn(250,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); let n = Owner.FindInventory("ArmorNugget"); if ( !n ) Owner.GiveInventory("ArmorNugget",GetDefaultByType("ArmorNugget").MaxAmount); else n.Amount = n.MaxAmount; @@ -67,14 +62,6 @@ Class GrilledCheeseSandwich : Inventory SWWMLoreLibrary.Add(Owner.player,"WarArmor"); Demolitionist(Owner).lastbump *= 1.2; } - else - { - SWWMScoreObj.Spawn(200,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),ST_Armor); - let n = Owner.FindInventory("ArmorNugget"); - if ( !n ) Owner.GiveInventory("ArmorNugget",GetDefaultByType("ArmorNugget").MaxAmount); - else n.Amount = n.MaxAmount; - SWWMLoreLibrary.Add(Owner.player,"Nugget"); - } let f = Spawn("SWWMItemFog",Owner.Vec3Offset(0,0,Owner.Height/2)); f.bAMBUSH = true; if ( !extrasafe ) return; @@ -2260,8 +2247,7 @@ Class EBarrier : Inventory else terrainwait++; if ( terrainwait <= 20 ) return; terrainwait = 0; - bool shouldautouse = CVar.GetCVar('swwm_autousebarrier',Owner.player).GetBool(); - if ( shouldautouse ) Owner.UseInventory(self); + Owner.UseInventory(self); } Default diff --git a/zscript/swwm_common_fx.zsc b/zscript/swwm_common_fx.zsc index e0e1446aa..396fc4db5 100644 --- a/zscript/swwm_common_fx.zsc +++ b/zscript/swwm_common_fx.zsc @@ -977,7 +977,6 @@ Class SWWMTeleportFog : Actor Super.PostBeginPlay(); A_StartSound("misc/teleport",CHAN_VOICE); Spawn("TeleLight",pos); - if ( swwm_simplefog ) SetStateLabel("Simple"); } override void Tick() { @@ -1024,9 +1023,6 @@ Class SWWMTeleportFog : Actor A_FadeOut(.07); } Wait; - Simple: - SPEX ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright; - Stop; } } diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index 8aa1f0c60..89c2fba94 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -599,11 +599,7 @@ Class Demolitionist : PlayerPawn vel += dashdir*dashboost*clamp(dashfuel/20.,0.,1.); player.vel *= 0.; if ( dashboost < .2 ) dashboost = 0.; - else - { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:800); - if ( !(player.cmd.buttons&BT_USER2) ) dashboost *= .1; - } + else if ( !(player.cmd.buttons&BT_USER2) ) dashboost *= .1; double fueluse = (dashfuel-max(0.,dashfuel-dashboost))/60.; SWWMUtility.AchievementProgressIncDouble("fuel",fueluse,player); mystats.fuelusage += fueluse; @@ -623,7 +619,6 @@ Class Demolitionist : PlayerPawn if ( dashboost < .2 ) dashboost = 0.; else { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:800); if ( player.cmd.buttons&BT_JUMP ) dashboost = min(5.,dashboost*1.01); else dashboost *= .4; last_boost = level.maptime+1; @@ -1013,14 +1008,10 @@ Class Demolitionist : PlayerPawn int sgn = (diffy>0)?1:-1; diffy = abs(diffy)**.5*sgn; } - // don't do inertial sway when in 6dof mode, causes issues - if ( !swwm_fly6dof || !(bFly && !bFlyCheat && !(player.cheats&CF_NOCLIP2)) ) - { - cur.x += diffang; - cur.y -= diffpitch; - cur.x += diffx*4.; - cur.y += diffy*4.; - } + cur.x += diffang; + cur.y -= diffpitch; + cur.x += diffx*4.; + cur.y += diffy*4.; return cur*SWWMUtility.Lerp(oldlagready,lagready,ticfrac); } override void PlayerThink() @@ -1276,7 +1267,6 @@ Class Demolitionist : PlayerPawn if ( lastvelz < -10 ) { A_StartSound("demolitionist/runstop",CHAN_FOOTSTEP,CHANF_OVERLAP); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:200); } if ( (lastvelz < -gruntspeed) && (swwm_mutevoice < 4) && (health > 0) ) { @@ -1992,24 +1982,10 @@ Class Demolitionist : PlayerPawn else guideangle += .2*player.cmd.yaw*(360./65536.); guidepitch -= .2*player.cmd.pitch*(360./65536.); if ( player.centering ) guidepitch = clamp(deltaangle(pitch,0),-3.,3.); - if ( player.centering || !swwm_fly6dof ) guideroll = clamp(deltaangle(roll,0),-3.,3.); - if ( swwm_fly6dof ) - { - swwm_GM_Quaternion orient = swwm_GM_Quaternion.createFromAngles(angle,pitch,roll); - swwm_GM_Quaternion angles = swwm_GM_Quaternion.createFromAngles(guideangle,guidepitch,guideroll); - orient = orient.multiplyQuat(angles); - double npitch, nangle, nroll; - [nangle, npitch, nroll] = orient.toAngles(); - A_SetAngle(nangle,SPF_INTERPOLATE); - A_SetPitch(npitch,SPF_INTERPOLATE); - A_SetRoll(nroll,SPF_INTERPOLATE); - } - else - { - A_SetAngle(angle+guideangle,SPF_INTERPOLATE); - A_SetPitch(clamp(pitch+guidepitch,player.MinPitch,player.MaxPitch),SPF_INTERPOLATE); - A_SetRoll(roll+guideroll,SPF_INTERPOLATE); - } + guideroll = clamp(deltaangle(roll,0),-3.,3.); + A_SetAngle(angle+guideangle,SPF_INTERPOLATE); + A_SetPitch(clamp(pitch+guidepitch,player.MinPitch,player.MaxPitch),SPF_INTERPOLATE); + A_SetRoll(roll+guideroll,SPF_INTERPOLATE); if ( (abs(roll) <= 1./65536.) && (abs(pitch) <= 1./65536.) ) { guideroll = guidepitch = roll = pitch = 0.; @@ -2329,7 +2305,6 @@ Class Demolitionist : PlayerPawn } if ( walljump || wallclimb ) { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:100); last_kick = level.maptime+1; SWWMUtility.AchievementProgressInc("jump",1,player); } @@ -2354,7 +2329,6 @@ Class Demolitionist : PlayerPawn else { A_StartSound(walljump?"demolitionist/kick":"demolitionist/runstart",CHAN_FOOTSTEP,CHANF_OVERLAP); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:100); dashboost = 0.; double bpitch = clamp((vel.length()-10)/5.,0.,20.); double newp = min(90.,pitch+bpitch); @@ -2877,7 +2851,6 @@ Class Demolitionist : PlayerPawn int loudlv = swwm_voiceamp; if ( lastdamage > 70 ) { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:1200); A_QuakeEx(3,3,3,9,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D); A_StartSound("demolitionist/hipain",CHAN_VOICE); lastbump *= 1.04; @@ -2891,7 +2864,6 @@ Class Demolitionist : PlayerPawn } else if ( lastdamage > 30 ) { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:600); A_QuakeEx(2,2,2,6,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D); A_StartSound("demolitionist/pain",CHAN_VOICE); lastbump *= 1.02; @@ -2905,7 +2877,6 @@ Class Demolitionist : PlayerPawn } else if ( lastdamage > 0 ) { - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:200); A_QuakeEx(1,1,1,3,0,8,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D); A_StartSound("demolitionist/lopain",CHAN_VOICE); lastbump *= 1.01; @@ -3115,7 +3086,6 @@ Class Demolitionist : PlayerPawn b.A_CheckTerrain(); } vel.xy += (RotateVector(NormalizedMove(),angle)/3600.)*TweakSpeed(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:(200*vol)); } else if ( run == 1 ) { @@ -3126,7 +3096,6 @@ Class Demolitionist : PlayerPawn b.A_CheckTerrain(); } vel.xy += (RotateVector(NormalizedMove(),angle)/4800.)*TweakSpeed(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:(100*vol)); } else { @@ -3137,7 +3106,6 @@ Class Demolitionist : PlayerPawn b.A_CheckTerrain(); } vel.xy += (RotateVector(NormalizedMove(),angle)/6400.)*TweakSpeed(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:(50*vol)); } } override bool Used( Actor user ) @@ -3231,7 +3199,7 @@ Class Demolitionist : PlayerPawn // clean up attached actors if ( selflight ) selflight.Destroy(); // disable death exits - if ( player && (player.playerstate == PST_DEAD) && swwm_nodeathexit ) + if ( player && (player.playerstate == PST_DEAD) ) { player.cheats &= ~(CF_FROZEN|CF_TOTALLYFROZEN); player.Resurrect(); diff --git a/zscript/swwm_player_fx.zsc b/zscript/swwm_player_fx.zsc index af38720dc..1f682afe3 100644 --- a/zscript/swwm_player_fx.zsc +++ b/zscript/swwm_player_fx.zsc @@ -513,12 +513,6 @@ Class DemolitionistSelfLight : Thinker Actor target; transient CVar tagcolor; - bool activelight() - { - // active all the time except when invisible - if ( target.bINVISIBLE || (target.alpha <= double.epsilon) ) return false; - return true; - } override void Tick() { if ( !target || !target.player || (target.player.mo != target) || !(target is 'Demolitionist') || (Demolitionist(target).selflight != self) ) @@ -546,19 +540,20 @@ Class DemolitionistSelfLight : Thinker }; int idx = tagcolor.GetInt(); if ( (idx < 0) || (idx >= litecolor.Size()) ) idx = 0; - bool doselflight = swwm_selflight; - bool curactive = doselflight&&activelight(); + bool curactive = !(target.bINVISIBLE || (target.alpha <= double.epsilon)); // setting the pitch to a value outside [-90,90] makes it auto-update to the actor's own pitch // this is undocumented and it's very great and nice and fine that such a thing had to be found out purely by chance // how very wonderful /s if ( curactive && !oldactive ) + { target.A_AttachLight('DemoSelfLight',DynamicLight.PointLight,Color(112,144,176),200,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE|DynamicLight.LF_SPOT,(5,0,target.player?(target.player.viewz-target.pos.z):(target.height*.93)),0,15,60,180); + target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,litecolor[idx],80,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE,(0,0,target.height/2)); + } else if ( !curactive && oldactive ) + { target.A_AttachLight('DemoSelfLight',DynamicLight.PointLight,0,0,0); + target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,0,0,0); + } oldactive = curactive; - bool curglow = doselflight&&(!(target.bINVISIBLE||(target.alpha <= double.epsilon))); - if ( curglow && !oldglow ) target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,litecolor[idx],80,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE,(0,0,target.height/2)); - else if ( !curglow && oldglow ) target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,0,0,0); - oldglow = curglow; } } diff --git a/zscript/utility/swwm_utility.zsc b/zscript/utility/swwm_utility.zsc index dba648973..726314ee5 100644 --- a/zscript/utility/swwm_utility.zsc +++ b/zscript/utility/swwm_utility.zsc @@ -2161,43 +2161,36 @@ Class SWWMUtility return 'ExplodiumGun'; if ( Random[Replacements](0,1) && !CheckNeedsItem('PlasmaBlast') && CheckNeedsItem('PlasmaBlast',true) ) return 'PlasmaBlast'; - if ( swwm_slot2spawn ) return PickPair('PlasmaBlast','ExplodiumGun'); return PickPair('ExplodiumGun','PlasmaBlast'); } // shotgun spawn static Class PickSWWMSlot3() { - if ( swwm_slot3spawn ) return PickPair('PuntzerBeta','Spreadgun'); return PickPair('Spreadgun','PuntzerBeta'); } // super shotgun spawn static Class PickSWWMSlot4() { - if ( swwm_slot4spawn ) PickPair('PuntzerGamma','Wallbuster'); return PickPair('Wallbuster','PuntzerGamma'); } // chaingun spawn static Class PickSWWMSlot5() { - if ( swwm_slot5spawn ) return PickPair('HeavyMahSheenGun','Eviscerator'); return PickPair('Eviscerator','HeavyMahSheenGun'); } // rocket launcher spawn static Class PickSWWMSlot6() { - if ( swwm_slot6spawn ) return PickPair('Quadravol','Hellblazer'); return PickPair('Hellblazer','Quadravol'); } // first plasma rifle spawn static Class PickSWWMSlot7() { - if ( swwm_slot7spawn ) return PickPair('ModernSparkster','Sparkster'); return PickPair('Sparkster','ModernSparkster'); } // second plasma rifle spawn static Class PickSWWMSlot8() { - if ( swwm_slot8spawn ) return PickPair('RayKhom','SilverBullet'); return PickPair('SilverBullet','RayKhom'); } // first bfg spawn @@ -2206,27 +2199,20 @@ Class SWWMUtility // 33% chance to still drop another candy gun if it's not at max capacity if ( !Random[Replacements](0,2) && ItemExists('CandyGun') && CheckNeedsItem('CandyGunSpares',true) ) return 'CandyGun'; - if ( swwm_slot9spawn ) return PickPair('MisterRifle','CandyGun'); return PickPair('CandyGun','MisterRifle'); } // second bfg spawn (each weapon can only exist once) static Class PickSWWMSlot0( bool fallback = true ) { - Class a = 'Ynykron', b = 'RafanKos'; - if ( swwm_slot0spawn ) + if ( ItemExists('Ynykron',mapstart:true) ) { - a = 'RafanKos'; - b = 'Ynykron'; - } - if ( ItemExists(a,mapstart:true) ) - { - if ( ItemExists(b,mapstart:true) ) + if ( ItemExists('RafanKos',mapstart:true) ) return fallback?PickSWWMSlot9():null; - return b; + return 'RafanKos'; } - if ( ItemExists(b,mapstart:true) ) - return a; - return Random[Replacements](0,1)?a:b; + if ( ItemExists('RafanKos',mapstart:true) ) + return 'Ynykron'; + return Random[Replacements](0,1)?'Ynykron':'RafanKos'; } // either plasma rifle spawn static Class PickDoomSlot6() diff --git a/zscript/weapons/swwm_baseweapon.zsc b/zscript/weapons/swwm_baseweapon.zsc index 1d8754c1a..92e0494ea 100644 --- a/zscript/weapons/swwm_baseweapon.zsc +++ b/zscript/weapons/swwm_baseweapon.zsc @@ -92,7 +92,7 @@ Class SWWMWeapon : Weapon abstract // can't pick up if ( !bSPECIAL ) return false; // no use through melee - if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch && !swwm_meleepickup ) + if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch ) return false; Vector3 itempos = Vec3Offset(0,0,Height/2), userpos = user.Vec2OffsetZ(0,0,user.player.viewz); @@ -616,7 +616,7 @@ Class SWWMDualWeaponGiver : Inventory // can't pick up if ( !bSPECIAL ) return false; // no use through melee - if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch && !swwm_meleepickup ) + if ( (user.player.ReadyWeapon is 'SWWMWeapon') && SWWMWeapon(user.player.ReadyWeapon).wallponch ) return false; Vector3 itempos = Vec3Offset(0,0,Height/2), userpos = user.Vec2OffsetZ(0,0,user.player.viewz); diff --git a/zscript/weapons/swwm_blazeit_fx.zsc b/zscript/weapons/swwm_blazeit_fx.zsc index b7f65029a..ff5a7cc4e 100644 --- a/zscript/weapons/swwm_blazeit_fx.zsc +++ b/zscript/weapons/swwm_blazeit_fx.zsc @@ -805,7 +805,6 @@ Mixin Class HellblazerGrenade ExplodeMissile(); return; } - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:300); A_StartSound("hellblazer/bounce",CHAN_ITEM); rollvel = FRandom[Hellblazer](-16,16); anglevel = FRandom[Hellblazer](-16,16); diff --git a/zscript/weapons/swwm_cbt.zsc b/zscript/weapons/swwm_cbt.zsc index ea126ee3e..926c94b03 100644 --- a/zscript/weapons/swwm_cbt.zsc +++ b/zscript/weapons/swwm_cbt.zsc @@ -235,7 +235,7 @@ Class Wallbuster : SWWMWeapon { int realdmg = dmg?dmg:t.HitList[i].HitDamage; let p = SWWMPuff.Setup(t.HitList[i].HitLocation,t.HitList[i].x,invoker,self,t.HitList[i].HitActor); - SWWMDamageAccumulator.Accumulate(t.HitList[i].HitActor,realdmg,p,self,'shot',!large&&!swwm_shotgib,DMG_INFLICTOR_IS_PUFF); + SWWMDamageAccumulator.Accumulate(t.HitList[i].HitActor,realdmg,p,self,'shot',false,DMG_INFLICTOR_IS_PUFF); SWWMUtility.DoKnockback(t.HitList[i].HitActor,t.HitList[i].x+(0,0,0.025),mm*FRandom[Wallbuster](0.4,1.2)); if ( t.HitList[i].HitActor.bNOBLOOD || t.HitList[i].HitActor.bINVULNERABLE || t.HitList[i].HitActor.bDORMANT ) { @@ -347,8 +347,7 @@ Class Wallbuster : SWWMWeapon which = j; break; } - double rfact = swwm_earbuster?.85:.6; - A_StartSound(sounds[which],CHAN_WEAPON,CHANF_OVERLAP,1./(howmany**rfact),.6-howmany*.004,1.-howmany*.015); + A_StartSound(sounds[which],CHAN_WEAPON,CHANF_OVERLAP,1./(howmany**.65),.6-howmany*.004,1.-howmany*.015); if ( which == 0 ) redflashstr = max(120,redflashstr+10); else if ( which == 1 ) redflashstr = max(90,redflashstr+8); else if ( which == 2 ) diff --git a/zscript/weapons/swwm_cbt_fx.zsc b/zscript/weapons/swwm_cbt_fx.zsc index 3bb7c4633..8277bdc2d 100644 --- a/zscript/weapons/swwm_cbt_fx.zsc +++ b/zscript/weapons/swwm_cbt_fx.zsc @@ -388,9 +388,7 @@ Class BusterWall : Thinker bust.SpawnDebris(true); // damnums Vector3 bcenter = (bust.boundsmin+bust.boundsmax)*.5; - if ( swwm_accdamage ) - SWWMScoreObj.Spawn(-bust.accdamage,level.Vec3Offset(bcenter,(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8))),ST_Damage); - else for ( int i=0; i 0) && (players[consoleplayer].ReadyWeapon is 'Wallbuster') && (gamestate == GS_LEVEL) ) return; MenuEvent(MKEY_BACK,false); diff --git a/zscript/weapons/swwm_danmaku_fx.zsc b/zscript/weapons/swwm_danmaku_fx.zsc index e585dfaf5..ef09b844d 100644 --- a/zscript/weapons/swwm_danmaku_fx.zsc +++ b/zscript/weapons/swwm_danmaku_fx.zsc @@ -299,7 +299,6 @@ Class EvisceratorChunk : Actor pitchvel = FRandom[Eviscerator](50,100)*RandomPick[Eviscerator](-1,1)*(vel.length()/speed); rollvel = FRandom[Eviscerator](50,100)*RandomPick[Eviscerator](-1,1)*(vel.length()/speed); A_StartSound("eviscerator/hit",CHAN_WEAPON,CHANF_OVERLAP,.3); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:300); if ( vel.length() < 3 ) { A_Stop(); @@ -375,7 +374,7 @@ Class EvisceratorChunk : Actor A_HandleBounce(); lasthit = victim; } - if ( swwm_extraalert || !Random[Eviscerator](0,3) ) A_AlertMonsters(swwm_uncapalert?0:900); + if ( !Random[Eviscerator](0,3) ) A_AlertMonsters(swwm_uncapalert?0:900); return 1; } States diff --git a/zscript/weapons/swwm_deathlydeathcannon.zsc b/zscript/weapons/swwm_deathlydeathcannon.zsc index b37bf093b..bbc806814 100644 --- a/zscript/weapons/swwm_deathlydeathcannon.zsc +++ b/zscript/weapons/swwm_deathlydeathcannon.zsc @@ -77,18 +77,14 @@ Class Ynykron : SWWMWeapon A_SWWMFlash(); A_StopSound(CHAN_WEAPONEXTRA2); A_StartSound(invoker.inverted?"ynykron/altfire":"ynykron/fire",CHAN_WEAPON,CHANF_OVERLAP,1.,.2); - if ( !swwm_ynykronalert ) + // global alert + int ns = level.Sectors.Size(); + for ( int i=0; i 2) ) return; let bt = BlockThingsIterator.Create(self,rad+200); Array candidates; candidates.Clear(); diff --git a/zscript/weapons/swwm_shot.zsc b/zscript/weapons/swwm_shot.zsc index 768b9d3d6..0db3fd811 100644 --- a/zscript/weapons/swwm_shot.zsc +++ b/zscript/weapons/swwm_shot.zsc @@ -303,7 +303,7 @@ Class Spreadgun : SWWMWeapon { int realdmg = dmg?dmg:t.HitList[i].HitDamage; let p = SWWMPuff.Setup(t.HitList[i].HitLocation,t.HitList[i].x,invoker,self,t.HitList[i].HitActor); - SWWMDamageAccumulator.Accumulate(t.HitList[i].HitActor,realdmg,p,self,'shot',!large&&!swwm_shotgib,DMG_INFLICTOR_IS_PUFF); + SWWMDamageAccumulator.Accumulate(t.HitList[i].HitActor,realdmg,p,self,'shot',false,DMG_INFLICTOR_IS_PUFF); SWWMUtility.DoKnockback(t.HitList[i].HitActor,t.HitList[i].x+(0,0,0.025),mm*FRandom[Spreadgun](0.4,1.2)); if ( t.HitList[i].HitActor.bNOBLOOD || t.HitList[i].HitActor.bDORMANT || t.HitList[i].HitActor.bINVULNERABLE ) { diff --git a/zscript/weapons/swwm_shot_fx.zsc b/zscript/weapons/swwm_shot_fx.zsc index 39cddc3f6..a0c600173 100644 --- a/zscript/weapons/swwm_shot_fx.zsc +++ b/zscript/weapons/swwm_shot_fx.zsc @@ -38,7 +38,6 @@ Class SpreadImpact : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:200); A_StartSound("spreadgun/pellet",CHAN_VOICE,CHANF_DEFAULT,.4,4.); A_SprayDecal("TinyPock",-20); int numpt = Random[Spreadgun](2,4)-special1; @@ -84,7 +83,6 @@ Class SlugImpact : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:500); A_StartSound("spreadgun/slug",CHAN_VOICE,CHANF_DEFAULT,1.,2.); A_SprayDecal("Pock",-20); int numpt = Random[Spreadgun](5,10)-special1; @@ -516,7 +514,6 @@ Class BallImpact : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - if ( swwm_extraalert ) A_AlertMonsters(swwm_uncapalert?0:500); A_QuakeEx(3,3,3,12,0,200,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:100,rollIntensity:.3); A_StartSound("spreadgun/ball",CHAN_VOICE); A_SprayDecal("WallCrack",-20);