Purpose: this engine adaptation created specially for ESHQ mod for Half-Life part 1. Modification based on old (from 2015) version of engine and may contain old bugs. But some new features may be useful for developers with the same aims.
Main features: main changes touch client and server libraries, not engine core and menu.
1. We have fixed some known bugs: non-rotating func_rotating; crashes at killed scientists sentences and bullsquids; invalid behaviour of start-opened 'door_rotating'; some other bugs.
2. We have added entity 'trigger_sound' in addition to 'env_sound'. It works as well as 'trigger_multiple' (with hardcoded 'wait' value - 1 s). We cannot understand, why there was no brush entities to set sound effect. Spherical 'env_sound' has very weird and unpredictable behaviour. And it is difficult to apply it in cases like long narrow building entrances (f.e., partially opened gates, see below). This situation really needs two brushes - before and after the gate - to trigger sound effects.
Application example: map #30 (here and below - numbering for ESHQ mod), road to highway 90, tunnel entrance. One trigger before gate and one after it (there are two different triggers on the picture).
Features: best doors and entrances shapes matching, fully controllable behaviour. Just set type of room.
3. We have returned green blood to some monsters. This feature has been implemented but not activated in client library. This feature also added to 'env_blood' and 'monster_generic'. In case of 'monster_generic' color of blood also determines type of gibs.
Application example: map #31, 'Base 2', samples room.
Features: more flexible monsters differentiation.
4. We have removed from our maps 'cycler_sprite' entity and added 'Non-solid' flag to 'cycler'. Our 'cycler' now have 'Material' field (crowbar and bullets hits sounds depend on it) and two fields that define collision box endpoints (looks like 'Color' setup). 'cycler' and 'env_sprite' entities can also accept 'body', 'skin' and 'sequence' settings and can shoot their targets.
Application example: map #2, hotel rooms.
Features: flexible models inclusion.
5. Our doors (momentary, rotating and simple) have different fields for 'Just opened' and 'Just closed' sounds. We are planning to split 'Opening' sound to 'Opening' and 'Closing'. But now it's not necessary. Also we planning to make non-linear speed modes for doors moving.
Also we have fixed some bugs (basically, around 'Starts open' flag) and have expanded list of sounds (not only replaced exist ones). Finally, our doors are not playing 'locked' sounds when opened.
Application example: map #1, openable wooden doors; map #2, vault metal door that closes after going through (for locked sound).
Features: flexible door behaviour.
6. Our 'monster_turret' and 'monster_apache' can trigger something on death.
Application example: map #20, near from metal fortress.
Features: turrets and apaches may be fully included in scenario sequences.
7. Our ambient_generic (and all entities that can sound) has more accurate sound radius. Now you can use 'env_spark' without risk of noise from everywhere.
8. We have added entity 'item_key' in addition to 'item_security'. It can look like a keycard or like a bunch of keys. Also we want to add 'item_generic' (with changeable model) for collectable objects.
Application example: map #33, old hospital.
Features: plausible triggers for doors.
9. We have added 'game_player_set_health' entity. It sets absolute value of health and armour. Applicable when you need to create effect of immediate but controllable damage.
Application example: map #18, after crush; map #26, full health; map #35, falling; etc.
Features: full control for health / armour level; simple healing / damage application.
10. Our grunts, barneys, scientists and zombies got 'burned' state: we can add burned corpses to the map. Also zombie got 'dead' animation.
Application example: map #8, ESSL, burned desk.
Features: more corpses' types available.
11. Our 'monster_rat' can run and can be smashed (as well as 'monster_cockroach', but with red blood, of course).
Application example: map #4, metro tunnel.
Features: it's funny.
12. We have added 'Don't reset view angle/speed' flag to 'trigger_teleport' entity. It is useful in case of map space expanding: you can make teleportation almost imperceptible and use it for visual expanding map sizes in single file.
Application example: map #12, metro tunnel; map #39, elevators shafts.
Features: expanding visible map size without changing level.
13. Our weapon_fastswitch is really fast (as it is in HL2). Just press slot button again for next weapon selection.
Features: it's really quick.
14. Our 'game_end' entity works correctly (ends the game). And 'player_loadsaved' can kill player. So you don't need 'trigger_hurt' or some other 'frozing' method when the player's corpse tries to run.
Application example: map #2, underground cave.
Features: correct game ending; frozing player when he fall off or something like this.
- We have returned human-like gibs and red blood to zombie. We think that zombie is more like a scientist than a bullsquid.
- Breakables can spawn crowbars (why it was not so?) and gauss gun clips.
- Our 'func_illusionary' triggers its textures when get called (as well as 'func_wall' or 'func_button').
- Our gman has 'Killable' flag and two skins.
- Our .357 and crossbow got correct reload sounds.
- Wood, glass, snow, tile and rubber textures got own sounds for player steps and weapons hits.
We work on engine's improvement and with known engine's issues. Hope that our work will be helpful. If you found bugs or have some advices about functionality, please, remind us. Thanks!