Releases: FreeSlave/halflife-featureful
Half-Life Featureful SDK 2024-07-24
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
Rain and snow weather effects
Added rain and snow effects similar to ones used in Counter Strike and Condition Zero, but toggleable and configurable.
Use the following entities to spawn rain and snow:
- env_rain - global or localized rain.
- env_snow - global or localized snow.
- func_rainvolume - brush entity for localized rain.
- func_snowvolume - brush entity for localized snow.
Both global rain and global snow can be present on the map.
The new demo map weather_demo has been added to the sample mod for rain and snow demonstration.
Other entities
- The special value
*player
is supported in most places where the*locus
is supported to allow refer to the player. In singleplayer it will always find the player. In multiplayer it acts like*locus
, but allow only players. - Added
Don't reset trigger counter on deactivation
spawnflag fortrigger_timer
(can be useful when trigger number limit is set). - Added
Pass caller as activator
spawnflag fortrigger_relay
. - Added
Ignore Hold Time
spawnflag fortrigger_camera
. - Added
Stop by player input
parameter fortrigger_camera
. - Added
Target when turned off
parameter fortrigger_camera
. - Added
Calc Position
as an option to calculate value fromcalc_position
(this allows to calculate the value of onecalc_position
based on the othercalc_position
). - Added
Calc Velocity
as an option to calculate value fromcalc_subvelocity
(this allows to calculate the value of onecalc_subvelocity
based on othercalc_
entities).
Console commands
- Now you can set the use-type sent via the
fire
command. Usefire on <targetname>
oroff <targetname>
to sendOn
andOff
input. Usefire set <targetname> <value>
to send the numeric input (e.g. forgame_counter
). - The
entities_count
command now supports the argument - the classname - to report the number of entities having the specified classname. - Add
give_intentory
andremove_inventory
commands to give and remove player inventory items. This can be used for debugging purposes. The first argument is the item name. The second (optional) argument is the number of items of this type to give or remove.
Half-Life Featureful SDK 2024-07-15
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
Fast recruiting
New commands recruit_followers
and disband_followers
allow players to recruit all nearby friendly NPCs or call off everyone who is following the player by pressing one button. This is similar to fast recruiting of ally soldiers in Field Intensity.
The list of monsters affected by these commands is controlled by features/followers.json file.
Feature changes
- New feature in featureful_server.cfg:
vortigaunt_armor_charge
. Enable to allow friendly vortigaunts to give armor to the player (similar to HL2, experimental feature). The amount of armor is configured bysk_vortigaunt_armor_charge
skill value. The vortigaunt must have the free energy to perform charging. hud_color
command is no longer available by default. Sethud_color.configurable
feature in featureful_client.cfg to true to enable the HUD color configuration by user.- Add
hud_scale.default
andhud_scale.configurable
features to featureful_client.cfg. - Removed
hud_autoscale_by_default
feature in featureful_client.cfg. Sethud_scale.default
to 0 to enable autoscale by default.
Entities
game_player_settings
game_player_settings
now can set the player's armor to 0 (set=0
as value), add and substruct armor by a provided value.game_player_settings
now can add and substruct the player's health.- Spawnflags of
game_player_settings
are deprecated now. Weapons are now configured via parameters instead. It allows to remove specific weapons as well. game_player_settings
can now remove the specified amount of ammo (use a negative value).
trigger_changevalue
- Added
Treat new value as
parameter fortrigger_changealue
which allows to tell how the new value is treated. - Added
Action
parameter fortrigger_changevalue
.
Calc entities
- Added
Scale factor
parameter forcalc_ratio
. - Added more transformations for
calc_ratio
(from later versions of SoHL). - Added
calc_numfromvec
- calculate a single numeric value from the vector. - Added
calc_vecfromnums
- calculate the vector from three numeric values. - Added
Max
andMin
parameters forcalc_eval_number
. - The result of
calc_eval_number
is now getting stored only if evaulation has succeeded.Trigger after operation
is now called only if evaulation has succeeded. AddedTrigger on calculation fail
parameter. - Added
Report as vector
parameter forcalc_eval_number
. - Added
Mod
,Find Max
andFind Min
operators forcalc_eval_number
. - Added
Third operand
parameter forcalc_eval_number
- it allows to do computations on 3 parameters using the same entity.
Other entities
- Added
Armor Damage
andDo Armor Damage
spawnflags fortrigger_hurt_remote
(compatibility with Sven Co-op). - Added
Player Invulnerable
spawnflag fortrigger_camera
(compatibility with Sven Co-op). - Added
Position
andDirection
parameters forparticle_shooter
. - Added
Direction
parameter forenv_smoker
. - Added
Landmark
parameter fortrigger_teleport
(compatibility with Spirit of Half-Life). - Added new entity
item_pickup
. It can give a specified inventory item to the player on pickup (as an alternative toplayer_inventory
). item_security
icon is no longer shown in history of picked up items on the security card pickup unless the HUD sprite is set explicitly in the entity parameters. In general it's advised to useitem_pickup
instead.- Added
Forward activator
fortrigger_timer
. - Added
Trigger on arrival
forinfo_teleport_destination
(compatibility with Sven Co-op).
Bugfixes
trigger_hurt_remote
doesn't push the player anymore (it was unintended effect).- Fixed
Entity to play from
parameter ofambient_generic
not working properly sometimes. - Fixed
env_smoker
not emitting the correct number of smokes after the repeated activation. - Inventory items HUD icons are no longer shown again when reloading the game.
Player inventory changes
- The name length of player inventory items is no longer limited by 23 characters.
- Inventory items are removed upon player's death.
Console commands
- Added
calc_position
andcalc_velocity
commands to get the position and velocity reported by the specified entity.
FGD changes
- Added ZHLT properties to brush model entities (like
func_wall
, etc.). Note that you still need to include zhlt.fgd in order to have access to compiler-specific entities likefunc_detail
. - Added
Glow Shell
as render fx option in fgd. - Improved descriptions of some
calc_
entities.
Changes to the demo map
- Added examples of relative teleport and seamless teleport.
- Added an elaborate example showing the usage of
trigger_changevalue
and somecalc_
entities.
Half-Life Featureful SDK 2024-06-05
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
Player inventory items
A simple player inventory system has been implemented.
Configurable armor strength
The global armor strength for the mod now can be configured via sk_plr_armor_strength
skill value. Default armor strength in Half-Life is 2 i.e. one armor point has the same value as 2 health points when player takes damage.
The armor strength can also be changed dynamically via game_player_settings
.
Entities
- Added
player_deployweapon
- make a player deploy the specified weapon (if player has it). - Added
Do Save
andPlayer can't use
spawnflags forcycler_sprite
. - Added
player_inventory
to do operations on the player's inventory items. - Added
player_hasinventory
to test if player has a specified inventory item. player_calc_ratio
now can count inventory items as well (ifCalc Param Type
is set toInventory item count
and theInventory item name
is specified).
Bugfixes
- Fixed
particle_shooter
save-restore.
Half-Life Featureful SDK 2024-05-24
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!
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
Warpball templates
Warpball templates for monstermakers are now defined in the templates/warpball.json file. The old entity-based approach is still working but now is considered deprecated.
Configuring save titles
The save titles (the ones shown in the Load game menu) are now configurable via external file save_titles.txt (in original Half-Life they're hardcoded in the engine).
Entities
- Added
player_capabilities
- allows to disable/enable player's capabilities such as jumping, crouching, attacking and using (+use
). - Added
player_speed
- allows to change the maximum player speed. trigger_configure_monster
now can dynamically change the monster's blood color.- Add
Ignored by classify
parameter for monsters. E.g. one may set barney to be ignored by Alien prey class (which headcrabs belong to), so headcrabs won't see barney as an enemy while barney will still shoot them.
New configurable features
dying_monsters_block_player
- whether monsters block player movement while in dying animation. This is standard Half-Life behavior which becomes problematic when the dying animation is too long (e.g. bullsquid's one). This is standard Half-Life behavior which becomes problematic when the dying animation is too long (e.g. bullsquid's one).player_maxhealth
andplayer_maxarmor
to set the default maximum values for health and armor used in the mod. Alternative way is to setmaxhealth
andmaxarmor
in the map .cfg file.game_player_settings
now also is capable of changing the maximum health and armor values.
Bugfixes
- Fixed monsters sometimes not finding the nearest node when they're on stairs. This is a bug from original Half-Life. Whether the fix is applied depends on the value of
findnearestnodefix
cvar (set to 1 by default, which means the fix is enabled).
Codebase changes
ALLOC_STRING
called on the same data won't request the string allocation again. Instead it will reuse the cached value if such string has been already allocated on the map.UnpackRGB
is now shared between client and server code. AddedPackRGB
.
Half-Life Featureful SDK 2024-05-13
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!
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
Configuring the ammo amounts in ammo and weapon entities
The new features/ammo_amounts.cfg file allows you to customize the ammo provided in ammo_
and weapon_
entities by default.
This is an experimental feature.
Changes to the sample mod
- The new demo map is included in the sample mod - flyers_demo - for demonstration and testing of the osprey and apache.
- Previously missing models/blkop_tailgibs.mdl has been added to the resources.
New features in featureful_server.cfg
door_rotating_starts_open_fix
- when enabled, fix the bug with func_door_rotating becoming unresponsive after the first use if it hasStarts Open
spawnflag. This feature is currently left disabled by default just in case some existing map relies on this behavior.warpball_at_monster_center
- if enabled, when env_warpball is used as a template effect for monstermaker, create the effect at the monster's body center by default, instead of monster's origin (which is usually at the monster's feet). The feature is enabled by default. If you want the old behavior, set thewarpball_at_monster_center
to false in your features in featureful_server.cfg.
Entities
- The values of the parameter
Warp at monster's...
ofmonstermaker
now have a different meaning. Any positive value means to create a warpball effect in the center of the monster's body. Any negative value means to create effect at the origin. And 0 (default) means to create at the position depending on thewarpball_at_monster_center
feature. env_warpball
now can define a second sprite that will be played along with the first one. sprites/xflare1.spr is provided as default second sprite in the fgd. You need to manually set the second sprite on existing maps if you want warpballs to create two sprites.- Added
Smoke position
parameter forenv_smoker
. - Added
Instant
spawnflag formulti_manager
,multi_trigger
andmulti_sequence
. By default targets with 0 delay will be triggered only on the next frame after themulti_manager
has been triggered. With this flag such targets will be called instantly. - You now can provide custom keyvalues for the monster spawned via
monstermaker
. In the editor toggle SmartEdit (like you do withmulti_manager
) and add keyvalues you want to forward to the monster prepending the key names with#
symbol. This allows to set some parameters that can't be set viamonstermaker
otherwise (e.g.bodystate
ofmonster_barney
).
Bugfixes
- Fixed opfor grunts coming from osprey without weapons.
- Fixed osprey and apache sounds not stopping if they were replaced with a sound replacement system.
- Fixed flocking flyers sounds not being replaceable with a sound replacement system.
Codebase changes
- Added
GetWeaponData
andSetWeaponData
functions for weapons to tidy and deduplicate some prediction code. ALLOC_STRING
is now a function instead of the macro.
Repository changes
- The features/ directory is no longer included in the automated builds. This is to avoid situations when someone wants to try the latest version and rewrites their features/ directory with the default one by accident.
Half-Life Featureful SDK 2024-05-01
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!
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
Per-monster sound replacement
Now monsters have a Sound Replacement File
parameter. These files define sound replacements for the monster entity. See example in sound/female_pain.txt.
This feature is quite experimental and needs more testing.
The demo map update
The demo map was extended a bit to include demonstration of more entities and features.
Captions changes
- Number of captions is virtually unlimited now (as opposed to maximum 256 in the previous releases). Note that you're still limited by the number of sentences depending on the engine (2048 on the modern GoldSource).
- The length of the caption is virtually unlimited (as opposed to maximum 599 characters in the previous releases).
- Added support for the forced caption duration (the hold time). See example in sound/captions.txt.
- Added more HL sentences to the sample sound/captions.txt.
New features in featureful_server.cfg
gauss_fidget
- allows to enable/disable the Tau-cannon fidget idle animation.medic_drop_healthkit
- whether medic grunts drop healthkits upon dying.
Monsters
- New monster
monster_civilian
- generic friendly npc with scientist-like behavior. Doesn't have the healing ability. Suitable for making civilian npcs like construction workers or unarmed npcs from Condition Zero Deleted Scenes. - Commented out
monster_gus
andmonster_gus_dead
in the fgd. This monster was from Cleaner's Adventures and wasn't enabled in the game code anyway. - Customizable
Fly Speed
,Turn Rate
andCheck Distance
formonster_flyer_flock
. - Added
Alert friends
andFriends can alert me
parameters for talk monsters. - Monsters with Tolerance level set to Absolute are now not alerted by friends death by default (it still can be forced via
Friends can alert me
parameter).
Entities
- New entity
player_hasweapon
- check if player has a specific weapon. Can be used as Master. - New entity
player_hasitem
- check if player has a specified item (suit, flashlight or longjump). Can be used as Master. - New entity
trigger_skill_test
- fire a trigger depending on the current difficulty. - New flag
Fade sprite
forenv_smoker
to automatically fade smoke sprites (by default the entity relies on fading in the sprite animation). - New parameter
Scale unit type
forenv_smoker
(historically the entity used tenths of the scale, i.e. 10 meant scale 1). - New entity
player_calc_ratio
- calculate the absolute or fractional value of player's health, armor or ammo amount. trigger_compare
has a new way to fire a target depending on the condition. Now you can define test type and triggers for pass and fail. The old triggers work independently from the new ones, but it's not recommended to use both approaches at the same time.trigger_compare
now can be used as a master. The state depends on the evaluation of the chosen condition.- The parameter
Fire On Equal To
oftrigger_compare
now uses a different internal key name. The old key is still supported, but considered deprecated. - New entity
env_extinguisher
to produce a fire extintinguisher effect. Ported from Field Intensity. - New parameter
Starting frame
forenv_model
. The negative value allows randomizing the starting frame. momentary_door
now has an associted Calc Ratio value (like in Spirit of Half-Life).
Bugfixes
- Fixed player being able to pick up the same ammo item multiple times when the pickup policy allows picking up by pressing
+use
button. Thanks b0rdie for reporting. - Fixed not being able to set custom model and custom model scale for
monster_flyer_flock
. Thanks 23-down for reporting. - Fixed setting
Gun State
parameter with some custom Barney models. Thanks 23-down for reporting. - Now if
sk_rgrunt_explode
skill is not defined, the hand grenade damage is used as a fallback.
Client input changes
- Windows version now uses SDL2 to handle mouse and joystick input when running on the engine version post 2013 update (when SDL2 was added to the engine). The old non-SDL2 input handling is still supported when running on the older versions.
Codebase changes:
ARRAYSIZE
is now a template constexpr function instead of the macro.- The virtual function
IsTriggered
now returnsbool
instead ofBOOL
.
Half-Life Featureful SDK 2024-03-14
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!
Changelog
Ammo changes
- The max ammo carry per each ammo type can be configured via
features/maxammo.cfg
file (example included). - Increased the max ammo the player can potentially carry - now it supports showing up to 4 digits in HUD.
ParticleMan implementation
ParticleMan is an additional library made by Valve that is used to spawn particle effects in Counter Strike and Day of Defeat. While Valve's ParticleMan is a separate closed-source library, it can be reimplemented in the client.
- The ParticleMan reimplementation by @SamVanheer added to the SDK.
- Added a new client command
test_particles
to spawn test particles with ParticleMan.
Entities
- New entity
particle_shooter
- create particles with ParticleMan. Designed after the entity from Day of Defeat. - Buttons are now allowed to play scripted_sentences.
- New parameter
Delay Before Reset
fortrigger_relay
which allows to ignore consequent calls totrigger_relay
until the specified time has passed since the last call. - New suffixes for
multi_manager
delays values: forward and reverse to forward or forward-reverse the use type the multi_manager has been called with to its targets. E.g. if multi_manager was triggered with On use type, all targets which have#forward
suffix in the delay value will be triggered with On. All targets which have#reverse
suffix in the delay will be triggered with Off in this case.
Cvar changes
- The client cvar
cl_satchelcontrol
has been renamed to_satctrl
and set to 0 by default (classic satchel control behavior). - New client cvar
_grenphys
added to let user control whether they want the anniversary hand grenade physics or not. - Note: weird cvar names is the result of user info buffer being limited to 256 bytes.
- New cvar
cl_pmanstats
to show ParticleMan stats.
Other changes
- Added previously missing
func_vehicle
to fgd.
Codebase changes
- The minimum required C++ version now is C++11, instead of C++98.
- Ammo types registration is now separated from weapon precaching.
Half-Life Featureful SDK 2024-02-13
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!
Changelog
Half-Life Anniversary changes
Some Half-Life Anniversary changes were merged from hlsdk-portable. Thanks @nekonomicon
- Improved handgrenade throw physics.
- Improved spawn spot randomization in multiplayer.
- Fix gauss sound on level transition.
- Added HL anniversary fix for pushable acceleration
func_vehicle
implementation- Fixed snark throwing when player is on the edge.
- Applied new satchel controls.
More changes related to HL anniversary will be merged in the next version.
Cvar changes
- New client cvar
cl_satchelcontrol
to control the preferred control scheme. 0 is for legacy, 1 is for anniversary. - Changed how
pushablemode
cvar works. Now 0 means anniversary mode (default), -1 means legacy mode and 1 means XashXT mode. The special value 2 (which meant the SoHL mode) has been removed.
Configurable features
gargantua_larger_size
- when enabled, make Gargantua's size equal to one from Opposing Force. This fixes the problem with some projectiles (e.g. shockroach and hornetgun ones) not properly hitting the monster.
Other changes and fixes
- Shock trooper and voltigores now have a 'hate' relationship to the player instead of just 'dislike'.
- Picking up items by
+use
(when thepickup_policy
value is not 0) is no longer allowed through the walls. - Fixed a bug when colorable crosshair didn't restore properly after using a
func_tank
. - The number of sentences limit on server were increased to 4096. Note that the maximum number of sentences still depends on the engine. It's 4096 for Xash3D, 2048 for HL anniversary and 1536 for HL pre-anniversary.
Half-Life Featureful SDK 2024-01-12
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!
Changelog
Support for subtitles
Mods can use sound/captions.txt and sound/captions_profiles.txt files to define captions.
Sample files defining captions for some sentences on the first two maps of "Anomalous Materials" chapter are packed with the mod sample.
HUD scaling
Added hud_scale
client cvar to control HUD scaling. 1 means the original scale. 0 means autoscale depending on the screen resolution. Note that support for high definition sprites from the anniversary patch will be added later.
Configurable Weapon Layout
Weapon layout can be configured in features/hud_weapon_layout.cfg file. The format is described in the sample file.
Entities
trigger_configure_monster
can configure more monster's parameters: Free Roaming, Gib Policy and Size For Grapple.- Added dead turret entities:
monster_miniturret_dead
,monster_sentry_dead
andmonster_turret_dead
- Added
Custom amount
parameter for ammo entities. - Added
Custom Initial Ammo
parameter for weapons. - Added
Delay after blocked
parameter for monstermaker. If not zero, this is used instead of spawn delay before trying to to spawn the monster again, if the spawn was blocked before. - Added
Don't fire look target
fortrigger_camera
. - Added
scripted_following
entity and theFollowage policy
parameter for following monster (Experimental).
Bugfixes
- Fixed HUD not showing after 'fullupdate' command.
- Fixed repeatable
scripted_sequence
with Walk or Run move type not properly working after it got interrupted and triggered again (Half-Life bug). Thanks @Aynekko for reporting. - Fixed
scripted_sequence
being unresponsive when it has Idle Animation and Turn to Face move type (Half-Life bug).
Configurable features
- Color values in hexadecimal form can be prefixed with
#
symbol instead of0x
. hud_autoscale_by_default
- whetherhud_scale
value is 0 by default (meaning autoscale).crosshair_colorable
feature and corresponding cvar. Allows crosshair color to depend on the chosen HUD color. Requires a sprite with white crosshairs to apply colors properly. Experimental feature, not enabled by default.
Half-Life Featureful SDK 2023-12-11
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!
Changelog
- The glow shell effect (applied by the shockroach projectiles) now wears off over time from osprey and apache.
- Fixed Desert Eagle not ejecting a shell upon firing.
- Fixed the Half-Life path finding bug when the fleeing monster couldn't choose a spot as a cover because the enemy couldn't build a path to this spot.
- Don't report missing
HG_HOSTILE
andST_HOSTILE
sentences (as they're optional) - The entity with
game_playerdie
targetname is now triggered upon the player's death in singleplayer as well. - The pain indicator sprite color doesn't blend with the HUD color anymore. This prevents pain sprite rendering green or other weird colors depending on the HUD color.