Change log/5.02

From Sven Co-op
Jump to navigation Jump to search

1 Code

1.1 Game library

  • Added check to prevent invalid sound names in the media player playlist file from causing a negative array index to be used.
  • Added new CVAR "sv_log_player_deaths" that controls whether player deaths are logged. (On by default)(
  • Converted more file loading operations to use SteamPipe via the engine file system.
  • Fixed "multi_manager" causing stack corruption when using the trigger type feature.
  • Fixed "trigger_changemodel" trying to change the player's model if it was already overridden to the given model.
  • Fixed "trigger_transition" having the wrong name.
  • Fixed a file handle leak when loading the maps for voting.
  • Fixed a freeze when the sound/model replacement code tries to open a file that is really a directory.
  • Fixed a memory leak and garbage value read in "trigger_condition".
  • Fixed a string null termination using the wrong index when getting the machine IP address.
  • Fixed alerts on the client not outputting warnings and errors when developer is set to 1 or higher.
  • Fixed excessive thread consumption (particularly on Linux hosts) when retrieving donor information fails.
  • Fixed player's next decal spray time resetting on death or suicide, or when the player has killed another player.
  • Fixed players disappearing from the score board when various values become not a number or infinite.
  • Fixed server administrators list sometimes becoming corrupted when parsed.
  • Fixed to the KeyValues parser so it can now parse empty blocks correctly.
  • Fixed to the KeyValues parser that caused it to parse }{ as one token, instead of as 2 tokens.
  • Fixed voting menu not always listing all players.
  • Game libraries are now built with Microsoft Visual C++ 2015 (instead of Microsoft Visual C++ 2010) on the Windows XP compatible platform tool kit.
  • Improved reliability of Linux hosts retrieving donor information from the on-line database.
  • Made CVAR "sv_log_monster_kills" affect monsters killing players.
  • Observer mode no longer strips player weapons and items when exiting it.
  • Partially fixed Linux hosts not returning the correct IP address for the machine when requested, so a loopback address will be ignored if a non-loopback address is available. (This is still dependent on the hosts configuration of the system having one machine host name entry pointing to a real NIC's address.)
  • Re-factored all "trigger_random" entities into a single entity, and fixed various unsafe operations. (The old entities, i.e. "trigger_random_time", can still be used but will be mapped to "trigger_random" with the timer enabled)
  • Re-factored func_breakable and door attack vector code so it no longer duplicates code or leaks memory.
  • Removed all references to the memory debugging code, since it no longer works in VC++ 2015.
  • Renamed CVAR "sv_player_log_frequency" to "sv_log_player_frequency".
  • The log classes will now only open a log if the output isn't empty.
  • The media player no longer reloads the playlist twice when the reload playlist button is pressed.
  • When a player is killed the game rules now correctly checks if an entity is a player, instead of checking if the class is CLASS_PLAYER.

1.2 Engine

  • Core: Changed hard-default value of various CVAR's:
    • cl_cmdrate: 200
    • cl_logocolor: "Ltblue"
    • cl_updaterate: 60
    • name: "New Player"
    • rate: 50000
  • Core: Custom entities defined by the game DLL (and scripts) can now be spawned by engine functions.
  • Core: Disabled reading the network rate setting from the Windows registry.
  • Core: Increased maximum GL textures to 6144 from 4800.
  • Linux server launcher: Fixed incorrect auto-update application ID.

1.3 Sound

  • Disabled FMOD Ex's FMOD_INIT_ENABLE_PROFILE flag.
  • Fixed a bug that caused materials with the maximum allowed name length to overwrite the material type for it.
  • Fixed client not loading custom materials for foot steps.
  • Fixed incorrect origin of impact sounds.
  • Fixed two potential crashes when reading CVAR's.
  • New CVAR "s_mute_unfocused" (on by default) to determine if FMOD should mute all sound output while the game window is not in focus.
  • Sound replacement now uses a more optimal memory allocation approach.
  • Sounds loaded at runtime will now also get OGG compression.

1.4 Non-playable characters

  • [Osprey] Added default case to a switch so Ospreys can never drop a null entity by accident.
  • [Scientist] Fixed being able to control/guide enemy scientists.

1.5 Equipment

  • [Displacer] Fixed bug where the displacer's tertiary fire would never play client side effects.
  • [Displacer] Reworked how the displacer's tertiary fire works so the delay between shots still applies.
  • [Inventory] Fixed a crash on map change when a player is holding a map inventory item.
  • [Inventory] Fixed entity sometimes causing an infinite loop (and stack overflow) when the collect limit has been reached and the item/entity is being deleted.
  • [Inventory] Fixed the inventory dialog causing a crash after being respawned by a map entity (trigger_respawn).
  • [Uzi] Added entity "ammo_uziclip" to supply 9mm rounds at the Uzi's clip size, and used when players drop ammo while wielding an Uzi (or two).

1.6 AngelScript

  • Added "pev" as a member variable to all custom entities.
  • Added a space between 2 words in the Angelscript description string.
  • Added additional checks to NetworkMessage to prevent the wrong message from sending messages begun by another.
  • Added CEntityFuncs::CreateGib.
  • Fixed text menus being removed on map change. (Scripts are now responsible for cleaning them up.)
  • Added CEntityFuncs::PrecacheMaterialSounds.
  • Added CGib to the API.
  • Added checks to prevent server administrators from being kicked or banned by scripts.
  • Added constant to indicate the size of the buffer used to contain the result of a ClientConnect rejection.
  • Added CPlayerFuncs::CreateBot and BotDisconnect.
  • Added CServer: a singleton class that keeps track of server wide state.
  • Added date to the Angelscript log opened message.
  • Added m_szAnimExtension variable to CBasePlayer.
  • Added overloads to CAdminControl that allow plug-ins to slay/kill/kick/ban players without having to specify an administrator.
  • Added PrecacheGeneric method to CGame.
  • Added PrescheduleThink to ScriptBaseMonsterEntity.
  • Added return statement in null pointer test.
  • Added string debugging features to CAutoString and CHashStringPool.
  • Changed how per-module globals are handled: they now use global accessor functions instead of manually declared and initialized globals, allowing them to be used during global variable initialization. (Removed the old method completely.)
  • Clearing the scheduler's timer list now removes all references to other objects held by each timer, so as to avoid memory leaks due to circular references.
  • Fixed g_AdminControl.SetReservedSlots and GetReservedSlots crashing the game.
  • Fixed incorrect use of a bitwise AND operation being used to determine whether or not to call map scripts (code was intended for client side scripting).
  • Fixed scripts failing to load on Linux in particular locations.
  • Fixed typo in Angelscript documentation. (Console command)
  • NetworkMessage is now a scoped reference type to prevent copy construction from creating an invalid message.
  • Reloading plug-ins no longer calls MapInit on them.
  • Removed all references to the memory debugging code, since it no longer works in VC++ 2015.
  • Removed CEngineFuncs::CreateFakeClient.
  • Removed CEntityFuncs::TeamsMatch.
  • Removed fUpdateClient from KeyValueBuffer::SetValue.
  • Removed m_szTeamName from CBasePlayer.
  • Renamed a variable to prevent variable shadowing.
  • Replaced the game's string pool with a more efficient one.
  • The Angelscript log now outputs to the console after logging instead of before to ensure consistent output.
  • The log classes will now only open a log if the output isn't empty.
  • Updated Angelscript's module builder to use SteamPipe.
  • Updated CAutoString so it compares with empty strings properly.
  • Updated UTIL_FindAbstractResourcePath to use SteamPipe.
  • Updated worldspawn to precache required files using SteamPipe.

2 Maps

2.1 Black Mesa: Special Tactics Sector

  • Fixed include path for AmmoMod not going up one directory.
  • Prevented players from changing model to a different team colour than they are.

2.2 Dead Simple Neo

  • Made final cut scene skippable with a vote.
  • Prettified objective screens.

2.3 Half-Life

  • [HL C11 A1] Added "weapon_hornetgun" to the equipment configuration as of this map, when players first find it.
  • [HL C14] Fixed players being trapped in a black box at the start. (Mostly.)

2.4 Momma Mesa

  • Updated display name of the author as per author's request.

2.5 Richard Boderman

  • Map has been removed. This map will be available with the 4.0 map pack instead.

2.6 Single player campaign portal

  • Added a few lines to the map information to tell players that some areas might be sealed by the administrator or because the conversion is not installed.

2.7 Toonrun

  • [Part 1] Fixed non-solid wall at Catapultator (TM) area.

3 Models

3.1 Player

  • Removed model Junction Punch. (It will be available in the optional player model pack)
  • Removed model Seini. (Missing polygons)
  • Removed various models that could cause copyright controversy.

4 Scripts

  • [Entity Manager] Removed command "!addfakeclient".
  • [HL C11 A3] Fixed map not using up retries when the map restarts using survival mode.
  • [Survival] Added checks to prevent negative time intervals from being set.
  • [Survival] Fixed survival persistence not carrying over.
  • [Survival] Script now registers the hooks for "ClientPutInServer", "ClientDisconnect" and "PlayerKilled" itself, eliminating the need to do so manually.
  • [Survival] Script now tracks its state more thoroughly.
  • [Survival] Script now updates the time until activation so players are more aware of it. The delay between updates is configurable.
  • [Vehicle] Fix vehicles decelerating in the air and getting stuck.

5 Other

5.1 FGD

  • "trigger_random_time" and "trigger_random_unique" have now been absorbed into "trigger_random".

5.2 SDK

  • We will be including internal test maps along with their sources for new features for teaching purposes. These can be found in the "examples" folder within the "mapping" folder of the SDK.
    • [displacer] How to use displacer targets.
    • [item_inventory] Example uses of "item_inventory" as shown in Adam's demonstration video.

5.3 UI

  • Advanced player settings are now ordered by group, with a few extra settings added.