Skip to content

Half-Life Featureful SDK 2025-01-14

Latest
Compare
Choose a tag to compare
@FreeSlave FreeSlave released this 14 Jan 18:20

The mod sample is included in the archive, with the test map and assets

The provided FGD has an extended format used by J.A.C.K. and won't work with Valve Hammer Editor!

This release also includes the custom FGD provided by the community with assets like entity-specific icons and models that might help the level designer.

Note: zhlt entities are not included in the FGD. You must add zhlt.fgd to your game profile configuration in the map editor.

If you already have a mod in development based on Half-Life Featureful read this article to get the idea how to apply the new SDK version for your project.

Changelog

JSON configs reloading

  • In the developer mode (when developer cvar is 1 or higher) the .json configuration files are reloaded automatically on the save-restore or level transition. This allows for easier testing that doesn't require the full game restart.

Bugfixes

  • Fixed a bug that prevented usage of temporary func_wall_toggle hack in node graph generation (used in Blue Shift, e.g. on the map ba_tram2). Thanks @Alex-98X for reporting.
  • Monsters can open named doors again (like in vanilla Half-Life). The ability of monsters to open named doors was disabled in previous versions in order to fight the exploit that allowed to open doors that were missing the Monsters can't spawnflag by pushing npcs to them on some Half-Life maps. However some maps legitimately rely on this behavior (e.g. ba_security2 in Blue Shift), so we're returning to the vanilla behavior by default. Thanks @Alex-98X for reporting.
  • Fixed corpses blocking npc path finding when the corpse lies at the top of the stairs and the npc is going up the stairs (original Half-Life bug).
  • Added an attempt to fight the engine bug when the brush entities wrongfully get player as their blocker while the player stands on the corpse nearby (example: if player stands on the barney's dead body near the fan on the c1a2 map in Half-Life, the player will be killed by a fan even though he doesn't touch the fan). Added corpse_player_collision_fix server feature and cvar that controls whether the fix is applied.

New entity parameters

  • Continue moving if blocker is crushed parameter for doors - allows to configure the behavior per door instance. Previously it was only available to configure globally via doors_blocked_recheck feature.
  • If locked, play locked sound on use parameter for doors - allows to enable playing the locked sounds for usable doors when the door is locked by a master. In Half-Life usable doors don't play the locked sounds.
  • Track position updates spawnflag for env_dlight - makes the dynamic light update the position when the calculated Position is changing.
  • Position is Locus Entity spawnflag for env_dlight - makes treating the Position parameter as Locus Entity instead of Locus Position. The resulting light position is the entity origin. When Track position updates is ticked using the entity as a reference point may produce better results (smooth movement of the dynamic light), at the expense of not letting to set the arbitrary position.
  • Disallow changelevel and autosave spawnflag for player_loadsaved. When played_loadsaved is active, the presence of this spawnflag ensures that the player won't trigger changelevel or autosave. The usable changelevels become unusable and touchable trigger_changelevel entities become solid.

New featureful_server.cfg features

  • monsters_open_named_doors - when monsters can open doors with a targetname unless Monsters can't is set on the door (true by default).
  • corpse_player_collision_fix - when player stands on the monster's dead body, the nearby brush entities like func_door, func_rotating and func_train might get "blocked" by the player. This is an engine bug. Set this feature to true to enable the game library side fix.
  • hev_dead_requires_suit - whether the suit is required to play HEV_DEAD sentence group (the beeping alarm when player dies). In Half-Life it plays even if player doesn't have a suit.

New soundscripts

  • Added Player.Death and Player.DeathUnderwater soundscripts (empty by default). When defined, the Player.Death will play on player's death (along with HEV_DEAD sentence). Player.DeathUnderwater will play if player dies underwater.

The demo maps changes

  • Added the examples of attachable env_dlight to the featureful_demo map.
  • The blocked_demo map is now bundled with a sample mod. It demonstrates some issues with entities being blocked by others in Half-Life and ways to fix these issues.