Aliens
- Fixed eggs being less gooey than intended.
- Fixed aliens not glowing on low or medium shader quality.
Campaigns
- Jacob's Rest: Deima Surface Bridge: Minor geometry fixes near the end of the mission.
- Nam Humanum: Platform XVII: Added some details. Fixed a few drone spawn locations with incorrect animations.
- Tilarus-5: Forgotten Factory: Prevented aliens from blocking the movement of the elevator.
- Deathmatch (all missions): Added tags to overview files for new mission chooser.
- Bonus Missions (all missions): Added tags to overview files for new mission chooser.
Translations
- Updated Chinese translation.
- Updated French translation.
Misc
- The mission selection screen has been totally revamped. Feedback and bug reports are highly appreciated.
- Reverted changes to ASW_ActivatePrimary and ASW_ActivateSecondary. These commands are also now available for binding in the keyboard menu.
- Merged cl_chatcolor_r, cl_chatcolor_g, and cl_chatcolor_b into one convar.
- Added cl_chatcolor, cl_interp, asw_marine_death_cam_slowdown, and rd_override_allow_rotate_camera to Advanced Settings.
- Fixed net_graph server tick rate rounding down instead of towards the nearest whole number.
- Fixed lobby retry counter showing a number 1 higher than the actual retry count.
- Updated workshop uploader to understand tags in mission overview files.
- Possible fix for first person spectating showing the wrong camera position and angle.
- Improved first person aiming for weapons that target a position like the grenade launcher and throwable items.
- Removed per-difficulty leaderboards for challenges that only allow one difficulty.
- Tree sway is now enabled by default.
- Controller input is enabled by default (this only affects new players who have not changed any settings before; enable or disable controller input on the controller options menu).
- Added two new settings, "Aim to Movement" and "Auto Attack" to the controller options menu.
- The end-of-mission stats screen now supports more than 8 players for deathmatch mode.
- Added a score history to the end-of-mission stats screen for missions that use points.
- Reduced network traffic when an alien spawns or a gun is fired.
- Added "aim to movement" and "auto attack" to the controller settings menu for classic twin stick gameplay.
- Added a MissionChooser VScript object. See below for details.
- Addons can now be loaded while connected to a game as long as the mission is not in progress.
- Dedicated servers can now load collections in addition to individual addons.
- Joining a game during slow motion now sets the appropriate timescale.
- Added estimated ping times to lobbies.
The following notes were missed in the original version of today's release post:
- Server owners can set allowed game types for the new mission chooser using sv_gametypes.
- Marine gibs now last effectively forever in co-op and 15 seconds in deathmatch (up from 10 seconds globally). Disabling marine gibs now spawns a corpse instead of nothing.
Mapping
- CustomCreditsFile will now be used from mission overview files if no campaign is active. This value is the name of a file containing credits keyvalues data, without the .txt suffix. It defaults to scripts/asw_credits, which is the Valve credits file for Alien Swarm. As always, make sure the credits filename is unique as the game will load the file from any addon that contains a file with that name.
- Campaigns and mission overviews can now be tagged by adding a "tag" keyvalue to their file. To add multiple tags, simply add another line with "tag" and then a different tag name. Tags are case-insensitive, but it is recommended to write them in lower case for consistency. Mappers should avoid adding tags that aren't understood by the game as they may do unexpected things in the future. No tags are currently understood by the game for campaigns, but for missions the following tags are supported:
- deathmatch - this mission will be listed under the Deathmatch tag on the workshop and be visible in the mission chooser under the Deathmatch tab. Deathmatch maps should contain an asw_deathmatch_mode entity.
- endless - lists the mission as Endless on the workshop and in the mission chooser. Endless maps are new in this update, and intended to be used with the points tag. Missions with this tag should either be impossible to complete successfully ("survive as long as you can") or have an optional method of succeeding the mission ("press this button if you can't fight anymore").
- bonus - lists the mission as Bonus on the workshop and in the mission chooser. Bonus maps are a replacement for single-mission campaigns (which will still work, but are discouraged) and can be used for standalone missions, survival or holdout maps with an objective, and so on. If your map fits into additional community-defined categories such as survival, holdout, or training, manually adding tags when uploading the addon is recommended. We are considering making some of these tags clickable on the workshop sidebar for added visibilty.
- points - marks your mission as a "points mission" (rather than a "time mission"). When the mission starts, the score will be 0, and you can award points at your discretion using the AddPoints input on asw_gamerules. The score for a mission is limited to 2^31-1, or 2147483647, but there are currently no other restrictions or guidelines on how points should be used. The meaning of points is specific to each map. Use the TotalPoints output from asw_gamerules if you want to display the points in your map.
- upload_on_failure - allow leaderboard uploads even on mission failure. Recommended for use with points, but can be used without if you're doing something unusual. If your mission can be successfully completed, it is recommended to award bonus points on mission completion.
- deathmatch - this mission will be listed under the Deathmatch tag on the workshop and be visible in the mission chooser under the Deathmatch tab. Deathmatch maps should contain an asw_deathmatch_mode entity.
- The new mission chooser prominently features campaign maps and campaign and mission descriptions. Mappers who have previously published their maps should check how they look in the new UI and consider publishing an update if it can be improved.
- The method the stats website uses to determine preview images has been updated to support multiple mission types per addon. If you have the same number of preview images on the workshop for each mission in your addon (1 is recommended), the first image from each set will be shown for campaign missions, bonus missions, endless missions, and deathmatch missions, in that order. (Deathmatch missions are not currently shown on the stats website, but may be in the future.) For example, if your addon is a 5 mission campaign with 1 bonus mission, you should have 6 preview images, one for each map in that order.
- Added ModifyDifficulty input and MissionDifficulty output to asw_gamerules.
- Missions where marines race each other can now send the input MarineFinishedMission to asw_gamerules in order to override that marine's completion time for the leaderboards.
- Re-enabling a tech marine requirement while all tech marines are dead now fails the mission.
- rd_weapon_generic_object's mapper-defined name can now be a translation key.
- Fixed cl_leveloverview X coordinate being off by 128 times the scale.
- Fixed several unused default particle effects having missing textures.
- Models that support flex can now be used in prop_dynamic without flickering.
MissionChooser VScript object
This new global object provides access to 12 functions in this release:- int CountChallenges() - Returns the number of installed challenges.
- int CountCampaigns() - Returns the number of installed campaigns.
- int CountMissions() - Returns the number of installed missions.
- ChallengeDataTable GetChallenge(int index) - Creates a table containing challenge data for a challenge by index.
- ChallengeDataTable GetChallengeByName(string name) - Creates a table containing challenge data for a challenge by name.
- ChallengeDataTable GetCurrentChallenge() - Creates a table containing challenge data for a the current challenge.
- CampaignDataTable GetCampaign(int index) - Creates a table containing campaign data for a campaign by index.
- CampaignDataTable GetCampaignByName(string name) - Creates a table containing campaign data for a campaign by name.
- CampaignDataTable GetCurrentCampaign() - Creates a table containing campaign data for the current campaign.
- MissionDataTable GetMission(int index) - Creates a table containing mission overview data for a mission by index.
- MissionDataTable GetMissionByName(string name) - Creates a table containing mission overview data for a mission by name.
- MissionDataTable GetCurrentMission() - Creates a table containing mission overview data for the current mission.
ChallengeDataTable
This is a table containing the following fields:- string id - the filename of this challenge, without the .txt extension.
- string workshop - the workshop item ID for the addon that provides this challenge, as a decimal string.
- boolean has_script - true if the file scripts/vscripts/challenge_id.nut exists, otherwise false.
- string name - the display name of this challenge - may be a translation key.
- string icon - the material name for this challenge's icon.
- string description - the description for this challenge - may be a translation key.
- string author - the author of this challenge.
- table convars - convars this challenge forces; field names vary by challenge, all field values are strings.
CampaignDataTable
This is a table containing the following fields:- string id - the filename of this campaign, without the .txt extension.
- string workshop - the workshop item ID for the addon that provides this campaign, as a decimal string.
- string name - the display name of this campaign - may be a translation key.
- string description - the description for this campaign - may be a translation key.
- string credits - the file path of this campaign's credits file, without the .txt extension.
- string icon - the material name for this campaign's icon.
- string material - the material name for this campaign's map (base layer).
- string material1 - the material name for this campaign's map (lowest overlay layer).
- string material2 - the material name for this campaign's map (middle overlay layer).
- string material3 - the material name for this campaign's map (highest overlay layer).
- int x - the position of this campaign on the galactic map - not currently used anywhere ingame.
- int y - the position of this campaign on the galactic map - not currently used anywhere ingame.
- int search_light_x_1, search_light_x_2, search_light_x_3, search_light_x_4
- int search_light_y_1, search_light_y_2, search_light_y_3, search_light_y_4
- int search_light_angle_1, search_light_angle_2, search_light_angle_3, search_light_angle_4
- array missions - array of CampaignMissionDataTable. the first entry in the array is the dummy mission.
- array tags - array of string. no tags are currently used by the game for campaigns.
CampaignMissionDataTable
This is a table containing the following fields:- int index - the position of this object in the missions array.
- string map - the map name for this mission, without the .bsp extension.
- string name - the display name of this mission - may be a translation key.
- string location_description - the location description for this mission - may be a translation key. location descriptions appear on the campaign transition screen as tooltips on missions.
- string short_briefing - the short briefing for this mission - may be a translation key. short briefings are shown on the campaign transition screen.
- string threat_string - the threat string for this mission - not currently used anywhere ingame.
- int x - the position of this mission on the campaign map.
- int y - the position of this mission on the campaign map.
- int difficulty_modifier - the difficulty modifier for this mission. see the developer site for an explanation of what this does.
- boolean always_visible - whether the mission is visible before it is reached.
- boolean needs_more_than_one_marine - whether this mission requires at least two marines to play.
- array links - array of int. the indices of the missions this mission links to on the campaign map.
MissionDataTable
This is a table containing the following fields:- string id - the filename of this mission, without the .txt extension.
- string workshop - the workshop item ID for the addon that provides this mission, as a decimal string.
- int pos_x - the X offset of the mission overview map.
- int pos_y - the Y offset of the mission overview map.
- float scale - the scale factor of the mission overview map.
- string name - the display name of this mission - may be a translation key.
- string description - the description for this mission - may be a translation key.
- string icon - the material name for this mission's icon.
- string credits - the file path of this mission's credits file, without the .txt extension. for missions in a campaign, use the campaign's credits file instead.
- string material - the material name for this mission's map (minimap).
- string briefing_material - the material name for this mission's map (during briefing).
- string author - the author of this mission.
- string website - the website for this mission.
- string version - the version number of this mission.
- array vertical_sections - array of MissionVerticalSectionTable.
- array tags - array of string. see above for a list of mission tags added in this update.
MissionVerticalSectionTable
This is a table containing the following fields:- string material - the material name for this mission's map (minimap).
- float altitude_min - the minimum coordinate for the marines' feet for this to be shown.
- float altitude_max - the maximum coordinate for the marines' feet for this to be shown.
Changed files in this update