Releases: FreeSlave/halflife-featureful
Half-Life Featureful SDK 2024-12-19
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
New animation events
Introduced more animation events:
- 1012 - expects a sound path. Plays the sound on the voice channel with normal attenuation. Opposing Force compatible.
- 1013 - expects a sound path. Plays the sound on the weapon channel with normal attenuation. Opposing Force compatible.
- 1014 - expects a soundscript name. Plays the soundscript according to its parameters.
NPC changes
- Female assassins now check for potential friendly fire before shooting and throwing grenades.
- Made voltigore and voltigore's projectile behave closer to the Opposing Force implementation.
- Removed precaching of some unused NPC sounds in order to reduce the number of precached resources a bit.
- Xen plants now have configurable models.
Weapon changes
- Increased the maximum number of weapons from 32 to 64 (actually 63 as the first one is used as no weapon). The new weapons themselves will be added in future updates.
- Dropping the last weapon is now allowed in multiplayer.
- If previously thrown satchels were crashed by the door and player still have some satchels in the inventory, the satchel view model will be drawn automatically instead of the radio view model.
New soundscripts and visuals
- Added visuals for the voltigore's beam effects and the bolt projectile.
- Added soundcripts for flashlight and NVG:
Player.FlashlightOn
,Player.FlashlightOff
,Player.NVGOn
andPlayer.NVGOff
. Note that soundscripts for NVG supersede thenvg_sound_on
andnvg_sound_off
entries in the features/featureful_server.cfg. The latter features are now deprecated and will be removed in future. - Added
XenLight.Glow
visual for thexen_plantlight
. If the visual is missing color, alpha or renderfx, these parameters for the glow sprite are still taken from thexen_plantlight
itself (compatibility with default behavior).
New properties for entity templates
sound_replacement
- an alternative to sound list files. Now sound replacemnet can be defined for the entity template. The old sound replacement system will probably be deprecated and removed in future in favor of templated approach.precached_sounds
- the array of sound paths to precache for the entity with this template. This is useful if you use a custom model with custom sound events and want to tell the game code which sounds should be precached.precached_soundscripts
- the array of soundscript names to precache for the entity with this template. This is useful if you use a the new 1014 animation event in the model and want to tell the game code which soundscripts should be precached.autoprecache_sounds
- an option to automatically precache sounds defined in the animation events of the entity model. Events 1004, 1008, 1011, 1012 and 1013 are considered for sound autoprecaching. This is an alternative to otherwise manualprecached_sounds
.autoprecache_soundscripts
- an option to automatically precache soundscripts defined in the animation events of the entity model (event 1014). This is an alternative to otherwise manualprecached_soundscripts
.
Bugfixes
- Fixed animation events sometimes playing again after the attack animation ends (observable on gonome and pitdrone attacks). As this is an experimental fix, it's controlled by
anim_attack_reset_fix
cvar for now. - Fixed gonome playing melee sounds on the wrong channel.
- Fixed redifinitions of soundscripts and visuals in entity templates being processed incorrectly if the entity template is named after the entity classname (e.g.
monster_gonome
). - Fixed flybees not finishing their death schedule if they fall into water.
Disabling standard Half-Life weapons
Now it's possible to remove the standard Half-Life weapons from the mod. This is configured via features/featureful_weapons.cfg. Disabling the standard Half-Life weapons can help to reduce the number of precached resources (as player weapons are always getting precached). E.g. if your mod campaign doesn't feature the hornetgun and gluon gun (egon) you can add the following lines:
-egon
-hornetgun
Console command changes
- Now
dump_precached_sounds
anddump_precached_models
can take arguments which are processed as path prefixes for filtering. Examples:dump_precached_sounds items/
will show all precached sounds from the items/ directory.dump_precached_models models/w_
will show all precached models starting withw_
.dump_precached_models sprites/
will show all precached sprites.
impulse 103
now also reports the current sequence name and illumination value of the monster.
Sample mod changes
- The
flyers_demo
map has been updated to include ichthyosaur and leeches. delta.lst
has been updated for the increased max weapons limit.
Some models distributed with the sample mod got few changes:
- massn.mdl - set the head hitgroup for the head hitbox (the original Opposing Force model didn't set the proper hitgroup for the assassin's head).
- strooper.mdl - replaced
shocktrooper/shock_trooper_attack
withshocktrooper/shock_trooper_attack.wav
in thefrontkick
animation event (the event data in the original Opposing Force model was missing the.wav
extension). - voltigore.mdl - removed
voltigore/voltigore_die2
andvoltigore/voltigore_die3
sound events from death sequences (the event data in the original Opposing Force model was missing the.wav
extension). The death sound is played via theVoltigore.Die
soundscript independent of the sequence. - zombie_soldier.mdl - set appropriate hitgroups for the hitboxes (the original Opposing Force model had all hitgroups set to 0, i.e. generic).
Codebase changes
This version introduces pretty big changes to the codebase. So if you maintain a fork of Featureful SDK it's better if you read this.
- Removed
m_iId
data member from theCBasePlayerWeapon
class. Now weapons must define theWeaponId()
override. - The weapon bits now should be accessed via the
m_WeaponBits
instead ofpev->weapons
. The helper functionsHasWeaponBit
,SetWeaponBit
andClearWeaponBit
have been added - they accept the weapon id as a parameter. - Matching the actual C++ data type with field type in the save-data is now enforced at compile time.
- Completely got rid off
BOOL
typedef andTRUE
andFALSE
definitions for non-Windows systems. All instances ofBOOL
in the game library code are replaced with standardbool
.TRUE
andFALSE
are replaced withtrue
andfalse
. TheFIELD_BOOLEAN
now expects the data variable to bebool
. As some virtual functions usedBOOL
either in return type or in the arguments, their interface now has been changed to usebool
. This should be taken into account if you forked the Featureful SDK and override some of the virtual functions:CBaseEntity
functions:IsAlive
,IsAllowedToSpeak
,IsBSPModel
,IsInWorld
,IsNetClient
,IsPlayer
,OnControls
,PlayScriptedSentence
,ReflectGauss
.CBaseToggle
functions:IsAllowedToSpeak
,PlayScriptedSentence
CBaseMonster
functions:CanPlaySentence
,CanPlaySequence
,CheckEnemy
,CheckRangeAttack1
,CheckRangeAttack2
,CheckMeleeAttack1
,CheckMeleeAttack2
,FCanCheckAttacks
,FInViewCone
,FVisible
,HasTarget
,IsMoving
,ShouldFadeOnDeath
,StopFollowing
CBasePlayerWeapon
functions:CanDeploy
,CanHolster
,Deploy
,IsUseable
,PlayEmptySound
,ShouldWeaponIdle
,UseDecrement
CItem
functions:MyTouch
- Following globals changed from
BOOL
/int
tobool
:g_fGameOver
gDisplayTitle
gInitHUD
gTouchDisabled
Half-Life Featureful SDK 2024-12-08
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
Configurable materials system
Now new texture material types can be added and predefined ones can be customized. This includes configuring of the footstep and hit sounds, wallpuff color and some other parameters. The sample mod includes the features/materials_example.json demonstrating the addition of the new material type.
Read wiki page on Materials.
Removed features
- Removed the compatibility with the old
trigger_compare
entity interaface (specifically the support for thetarget
parameter) that has been deprecated 7 months ago.
Player changes
- When exiting
noclip
the sound of emerging from water is not played anymore.
Changes to soundscripts and visuals
- The
decay
parameter now can be configured via visuals for dynamic lights and entity lights. - Added configurable visuals for the torch effect used by the HECU engineer.
- Added configurable visuals for floater's effects.
- Added soundscripts for soda cans. Now you can configure the 'drink' sound played on soda pickup.
- Added soundscripts for
item_airtank
. - Added sounscripts for
env_extinguisher
. - Added the soundcript for the player spray.
- Added soundscript for the spark sound that is played along with spark effect when player hits the computer material.
- Added configurable visuals for Nihilanth and its projectiles.
Bugfixes
- Fixed the game crash when using a custom model for the HECU engineer which doesn't have the 4th attachment. Thanks White Liquid for reporting.
- Fixed gonome's guts projectile being invisible. Thanks gameaddict117o7 for reporting.
Half-Life Featureful SDK 2024-11-26
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
Bugfixes
- Fix playing and stopping some sounds.
New soundscripts
- Added soundscripts for health and suit chargers (both brush-based and model-based).
- Added soundscript for
func_pushable
when it's moving. - Added some soundscripts related to player being underwater and emerging from water.
Codebase changes
- Added symbolic constants for water levels and used them instead of "magic" numbers.
Repository changes
- The libraries for Linux are now built in the latest Scout Steam Runtime container.
Half-Life Featureful SDK 2024-11-21
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
New visuals and soundscripts
- Added visuals and soundscripts for the Displacer Ball projectile. Now the look and the sounds of the Displacer Ball are configurable.
Changes to entities
- Added
No camera punch
spawnflag forenv_beam
andenv_laser
to disable player's camera "punching" when the beam deals damage to the player (trigger_hurt
andtrigger_hurt_remote
already have the spawnflag with the same name). Thanks paperboy for suggestion. - Added
Start Sprite
parameter forenv_laser
. - The footstep sounds of
monster_human_assassin
now have longer delays between them if assassin is walking. In original Half-Life assassins play footstep sounds with same frequency independent of whether they run or walk.
Bugfixes
- Fixed Pitworm's eye blast soundscript not being precached (thanks @Alex-98X for reporting).
- Fixed
trigger_xen_return
not choosing the rightinfo_earth_target
(thanks @Alex-98X for reporting). - Fixed some mistakes in JSON schemas.
Sample mode changes
- Floater and Flybee monsters are now enabled by default. The skill values for them have been added to the skill.cfg shipped with the sample mod.
Repository changes
- Automated tests for some functions and data structures now run along with the autobuild. The number of tests will grow with each release to cover as much code as possible.
Half-Life Featureful SDK 2024-10-31
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
Notice (please read)
When updating to this version you'll need to fix the templates/warpball.json file in your mod. The line "sound2": "debris/beamstart7.wav"
should be "sound": "debris/beamstart7.wav"
in the "xen"
template definition. If you didn't do any changes to the file comparing to the one from the sample mod you may simply copy the corresponding file from the sample mod.
Introducing Object Hint system
The Object Hint system allows to mark usable objects (similar to PS2 version of Half-Life) or important items (e.g. inventory items put on the map with item_pickup
). Read the wiki article for more information.
Entity changes
- Items, ammo and weapon entities now can have a Master to prevent them from being picked up by the player.
- Dead ally monsters are no longer considered as valid targets for player's Use command.
Other changes
- The schemas for JSON config files are now more strict and don't allow for unknown properties. This is done to exclude the mistakes/typos related to the property names spelling. This helped to find a mistake in the previously distributed version of templates/warpball.json file.
Sample mod changes
- Fixed templates/warpball.json file.
- Removed
hud_color.enabled_by_default
entry from features/featureful_client.cfg. It wasn't a real option and it did nothing. - The file templates/followers.json has been deleted. It was a mistake and the expected filepath for this config is features/followers.json (already exists in the mod).
Notable codebase and repo changes
- Moved
CBaseButton
andCMultisource
class declarations from dlls/cbase.h to dlls/buttons.cpp. - Ninja generator is used instead of Unix Makefiles in the github actions for Linux to improve the build times.
Half-Life Featureful SDK 2024-10-18
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
Introducing Entity Templates
A new concept called Entity Templates allows to define custom defaults for some entities (currently mostly monsters).
Read the wiki article on entity templates
delta.lst included
delta.lst is now included in the sample mod. Thanks @down23 for pointing out this overlooked mistake.
This version fixes potential problems with attachments (sprites, beams) on maps with large numbers of entities. It's recommended to add this file to your mod folder.
Visuals
Added configurable visuals for pitdrone, shock trooper, shock beam (the shockrifle projectile), spore (sporelauncher projectile) and apache.
Bugfixes
- Fixed crash when using
trigger_teleport
with the random destination, but no destination exists. - Fixed crash when
game_score
is called without an activator (original Half-Life bug). - Fixed missing precache when spawning dead monsters (e.g.
monster_barney_dead
, etc.). - Fixed
env_beam
incorrect beam direction on save-restore when theenv_beam
is set to be its own Start Entity (original Half-Life bug). Thanks @down23 for reporting. - Fixed monsters not spawning gibs if the monster is set to
Don't Bleed
but normally has blood. - Fixed the pitdrone spike scale (was half of its size).
Other changes
impulse 103
now also reports the monster's entity template, the gib model, the bounding box, the the grapple target type and render properties.- Removed precaching of some unused resources.
- The map flyers_demo has been updated to include flying monsters. Note that you need to enable
floater
andflybee
monsters in order to have them on that map. - The female civilian NPC is now made via Entity Template instead of manually set parameters in the entity parameters and sound replacement file.
Codebase and repository changes
- Linux artifacts are now built with Ninja instead of Make (to speed up the autobuild).
- Added build instructions using
podman
. Thanks @L-P
Half-Life Featureful SDK 2024-09-26
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
Introducing Visuals
A new concept called Visuals allows to change the render parameters of some effects without changing the code. Visuals can be edited in the templates/visuals.json file. For example, you can change the color of vortigaunt's beams or the sprite used by a bullsquid's spit projectile.
Currently the list of supported entities is incomplete but it will grow with each release.
Read the wiki article on visuals
Entity changes
- The target of
env_blowercannon
now can be!activator
. - New spawnflag
Don't delay first fire
forenv_blowercannon
.
Bugfixes
- Prevent
game_zone_player
from transitioning across levels which led to the engine error (original Half-Life bug). - Prevent
trigger_look
from transitioning across levels which led to the engine error. - Vortigaunts don't play the powerup effect again after the attack anymore (it was a result of animation event being attached to the first frame of the animation). The solution is code-level and doesn't require the model editing.
- Fixed ally vortigaunt being able to launch two charge tokens at the player.
Soundscripts
- Added ZapTrap.Detect and ZapTrap.Launch soundscripts for
env_energy_ball_trap
.
Other changes
- The JSON parsing errors are now shown on the screen (if the
developer
mode is enabled) instead of the console. This will increase the developer's awareness about the problems. - Some JSON type definitions are now shared between schemas to make handling of types more universal.
- Fixed
pitch
property definition in JSON schema for templates/warpball.json.
Half-Life Featureful SDK 2024-09-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!
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
New monsters added
monster_floater
An alien creature cut from Half-Life with no clearly defined canonical behavior. The current implementation is taken from Field Intensity - floaters are suicidal flyers who come to enemies and explode. Take the model from Field Intensity to enable glowing sprites attached to the floater (with the standard model from Half-Life the glowing sprites won't spawn).
The sounds used by floaters can be configured via soundscripts.
It also requires some skill variables to be defined in skill.cfg.
The monster is not enabled by default and must be enabled in features/featureful_monsters.cfg.
monster_flybee
The fast moving flying creature with range attacks. Ported from Half-Life Invasion.
By default it uses ichthyosaur sounds. The sounds can be configured via soundscripts.
The monster is not enabled by default and must be enabled in features/featureful_monsters.cfg.
monster_panthereye
An alien creature cut from Half-Life. The current implementation is quite simple - just running and doing claw attacks. The model is included in the sample mod, with ACTs set correctly on sequences and added events for the melee attack.
The sounds used by panthereyes can be configured via soundscripts.
The monster is not enabled by default and must be enabled in features/featureful_monsters.cfg.
monster_robocop
A boss robot ported from Poke646. Note: the resources (the model and sounds) for this NPC are not included in the sample mod. You can take them from Poke646.
Requires some skill variables to be defined in skill.cfg.
The monster is not enabled by default and must be enabled in features/featureful_monsters.cfg.
Thanks to @malortie and @nekonomicon for reverse-engineering Poke646.
Bugfixes
- Fixed robogrunts damage reduction not being applied against some attacks.
Half-Life Featureful SDK 2024-09-07
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
Introducing Soundscripts
Now instead of referring to .wav files NPCs and some items are using soundscripts similar to ones from Source. This allows to redefine what set of sounds and with what properties the entity will play in certain situations without changing the code. Soundscripts can be edited in the sound/soundscripts.json file. For example, you can change the list of zombie's pain sounds and its properties (volume, pitch and attenuation).
Read the wiki article on soundscripts
Bugfixes
- Fixed a bug with
env_smoker
save-restore that caused the game crash on save. - Fixed a bug with a gonome gut projectile save-restore.
- Fixed
motion_manager
being able to remove auxiliary entities of anothermotion_manager
with the same name (Thanks Sparks for reporting). - Fixed JSON errors not being reported on client console.
Entities
- New entity
ambient_extraspeaker
that allows to play sounds on the entity without occupying its own audio channels. This can be used on the player for a narrator voice - the audio will follow the client sounding like it's playing in the player's head. - Added
Obey TriggerMode
andStart On
spawnflags formotion_manager
.
File formats
- A number range in some .json files now can be defined via two-element array.
- A color in templates/warpball.json now can be defined via three-element array.
Half-Life Featureful SDK 2024-08-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
HUD
- Added
hud_armor_near_health
cvar to control whether the suit armor must be rendered right after the health (like in HL 25 anniversary). - Added support for high resolution sprites like in HL 25 anniversary (thanks @a1batross).
Entities
player_capabilities
now can toggle player step sounds.- Added
Desired skin color
parameter for human grunts. - Added
env_energy_ball_trap
entity - an environment hazard from Field Intensity. - Configurable sprite, duration, scale and number of streaks for
env_spark
. - Configurable volume for
env_spark
(thanks to paperboy and eisbaer for proposing the change).
Features
- New server feature
env_spark_transit
to control whetherenv_spark
entities transit on changelevel. Made it false by default (in original Half-Life env_sparks do transit on changelevel). wall_puff1
,wall_puff2
etc. were moved from featureful_server.cfg to featureful_client.cfg. Wall puff sprites are no longer precached on the server side and are purely used on client side.- New server feature
weapon_p_models
to control whether the weaponp_
models must be precached. This can be disabled to lower the number of precached models on server if in your mod the player is never shown with weapons (e.g. on camera).
Bugfixes
- Fixed save-restore of
multisource
and some other entities that use arrays of EHANDLEs. - Fixed
func_breakable
taking damage from some attacks even if it has aOnly Trigger
spawnflag (original Half-Life bug). - Fixed drawing ammo icons in history when the icon has a non-standard size.
- Grunts spawned from osprey don't inherit the osprey's Pitch and Roll anymore.
- Fixed zombies sometimes standing for a couple of seconds while chasing the enemy (original Half-Life bug).
- Fixed
func_ladder
acting like water when turned off (thanks to paperboy and eisbaer for finding the bug and proposing the patch). - Fixed human grunt medic using incorrect bodygroups with some custom models.
Commands
New server commands have been added to aid debugging in developer mode:
dump_ammo_types
anddump_ammo_types_client
to report the registered ammo types.dump_precached_models
anddump_precached_sounds
to track the number of precached models and sounds.dump_sound_replacements
to report the used sound replacements on the map.
Other changes
- Increased the maximum number of materials in materials.txt from 512 to 1024.
Repo and codebase changes
- pm_shared code was translated from C to C++.
- Deduplicated Vector class definitions between client and server libraries.
- Fixed building with waf.