Compare commits

...

42 commits

Author SHA1 Message Date
8fdf536f50 workflows/pk4.yaml: seems actor_id is empty and may be causing issues, so let's not use it for now.
Some checks failed
pk4 / build (push) Has been cancelled
2025-02-24 18:14:11 -08:00
e4367dfae8 workflows/pk4.yaml: check vars for override setting
Some checks failed
pk4 / build (push) Failing after 1m33s
2025-02-24 17:46:17 -08:00
d7001178df workflows/pk4.yaml: fix typo...
Some checks failed
pk4 / build (push) Failing after 1m36s
2025-02-24 17:17:02 -08:00
4dd99b21c5 workflows/pk4.yaml: Remove branches requirement for now
Some checks failed
pk4 / build (push) Failing after 1m15s
2025-02-24 17:15:07 -08:00
0405598a0b workflows/pk4.yaml: change the tag name 2025-02-24 17:13:39 -08:00
b0b370c9e1 HLWeaponSelect: deprecate use of .IsWeapon method 2025-02-22 01:30:38 -08:00
fcc78e5ad3 rules/deathmatch: move precache into dedicated callback
All checks were successful
pk4 / build (push) Successful in 1m48s
2025-02-11 22:20:06 -08:00
a7f8f6db8c add src/files.dat
Some checks failed
pk4 / build (push) Has been cancelled
2025-02-11 02:54:55 -08:00
d1950055f8 pk3.yaml: upload build log as artifact
Some checks failed
pk4 / build (push) Failing after 1m44s
2025-02-11 02:47:15 -08:00
90f3494b06 pk3.yaml handle releases
Some checks failed
pk4 / build (push) Failing after 1m20s
2025-02-11 02:38:20 -08:00
eb8940f9b9 pk3.yaml: add zip dependency
All checks were successful
pk4 / build (push) Successful in 1m28s
2025-02-11 02:21:33 -08:00
eb4bda6d55 deathmatch: weapon_ and ammo_ pickups have a slightly shorter respawn time
Some checks failed
pk4 / build (push) Failing after 56s
2025-02-11 02:13:49 -08:00
12456174db Merge pull request 'deathmatch: override item respawn time' (#20) from eukara/valve:Develop into Develop
Reviewed-on: #20
2025-02-11 09:59:36 +00:00
cfebb870a2 deathmatch: override item respawn time 2025-02-11 01:44:58 -08:00
3924d63fcc Get rid of the .pk3dir, use alternative building method 2025-02-01 03:07:37 -08:00
d3e22907b5 monster_human_grunt: add initial set of schedules 2025-01-14 03:28:43 -08:00
6bfda4d419 Compatibility fixes against upstream Nuclide.
Hard-code some known water textures to use `defaultwarp` shader.
2025-01-02 19:40:21 -08:00
f56b72d9b0 Use Half-Life Source and Half-Life 2 names for PropData 2024-12-07 04:20:42 -08:00
25727015d7 Update progs.src to include game rules. 2024-11-08 23:24:27 -08:00
22d2c4b36b NPCs are now using HL:S sound shader names 2024-11-05 20:38:37 -08:00
cc74146a59 Fix gamerules against latest Nuclide, lay out some more typeInfo 2024-11-05 20:33:46 -08:00
01923a51af Giving some push to the weapons, more Source sound support 2024-11-03 01:59:46 -07:00
e04510fa50 Small decl tweaks to the Snark. 2024-11-02 02:57:20 -07:00
bac98f2f4e Fix Battery
More accurate weapons, Hivehand, Grenade, Satchel, Gauss
Make Snark work with new ACT def system
Some formatting
2024-11-02 02:49:26 -07:00
3dea668df8 Some fixes for the cut entities 2024-11-01 21:24:50 -07:00
7dea893064 More cut entity stubs 2024-11-01 21:03:44 -07:00
d6aab4b1be Tripmine: This looks better 2024-11-01 20:31:52 -07:00
aaf15ea8cf More updates to cut monsters. 2024-11-01 20:29:45 -07:00
844f53d648 Add back some of the cut monsters, especially with some new community documentation on them 2024-11-01 19:30:19 -07:00
e9c0ab3fc8 Add invasion mode for testing AI, which has been expanded upon 2024-10-31 03:53:02 -07:00
4cf759db42 Rename a bunch of soundDefs, move gamerules into their own progs using multiprogs 2024-10-16 22:58:21 -07:00
b983d70cb4 More decl work 2024-09-17 12:48:09 -07:00
35bbae956b
Code fixups against latest Nuclide. Move gamerules into their own module. 2024-09-03 12:21:03 -07:00
4dba3af403
Merge pmove.qc into player.qc 2024-08-16 19:36:31 -07:00
ed877bf2bb
* add HLWeapoNSelect class 2024-08-14 16:12:30 -07:00
34d7d48967
More and more changes against Develop Nuclide. 2024-08-11 13:36:25 -07:00
3906dadddc
HLSprite_Init: TFC weapons start with 'tf_weapon' so we gotta search for those too 2024-07-26 17:16:50 -07:00
f52e61dbd0
weapon_{shotgun,rpg}: add punchangle
HLWeapon: draw ammo2 icon
2024-07-26 14:51:01 -07:00
9027d19fa7
Fix textmenu actions being ifdef'd out for now 2024-07-24 19:10:28 -07:00
c2e9c9007b
Add missing prototype for HUD_SlotSelect. Which will be removed anyway. 2024-07-24 09:16:08 -07:00
5a1728cf84
Rebase against latest Develop, move more components from the old platform/ dir oriented towards FHL 2024-07-23 18:03:22 -07:00
2b300e45b0
Move platform files over, rebuild weapons against Nuclide 2024-06-22 00:29:51 -07:00
1809 changed files with 17088 additions and 10563 deletions

BIN
.dir.tiff Normal file

Binary file not shown.

View file

@ -0,0 +1,49 @@
name: pk4
on: [ push, pull_request, workflow_dispatch ]
jobs:
build:
runs-on: docker
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
repository: vera/nuclide
ref: Develop
- uses: actions/checkout@v3
with:
fetch-depth: 1
ref: Develop
path: "./${{ github.event.repository.name }}"
- name: apt install zip
run: |
apt update
apt install -y \
zip
- name: assemble pk4
run: make dist-pak NAME=bin GAME=${{ github.event.repository.name }}
- uses: actions/upload-artifact@v3
with:
name: build-log
path: ./build/bin-content.log
- uses: actions/forgejo-release@v2
with:
url: https://code.idtech.space
repo: "${{ github.repository }}"
tag: "${{ github.run_id }}"
sha: "${{ github.sha }}"
direction: upload
release-dir: ./build/bin-content/${{ github.event.repository.name }}/
token: ${{ secrets.TOKEN }}
title: "Development Build"
release-notes: "Auto-generated development build, override ${{ github.event.repository.name }}/package_${{ github.event.repository.name }}.pk4."
prerelease: true
override: ${{ vars.OVERRIDE || "false" }}
release-notes-assistant: true

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
*.dat
*.lno
*.bsp
*.mdl

View file

@ -1,6 +1,6 @@
ISC License
Copyright (c) 2016-2021, Marco "eukara" Hladik <marco@icculus.org>
Copyright (c) 2016-2025, Marco "eukara" Hladik <marco@icculus.org>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above

8
PAK_COPYRIGHT Normal file
View file

@ -0,0 +1,8 @@
! This archive is part of the Rad-Therapy project !
Dedicated to all those curious, those who love to tinker, those who
grew up on the same maps, mods and worlds... This is for you all!
All contents of this archive are put under the ISC license.
Do what you want, but give credit. No warranties.

1
PAK_NAME Normal file
View file

@ -0,0 +1 @@
package_valve.pk4

1
PLUGINS Normal file
View file

@ -0,0 +1 @@
ffmpeg

1
PROJECT Normal file
View file

@ -0,0 +1 @@
RadTherapy

View file

@ -1,39 +1,38 @@
# FreeHL
Clean-room reimplementation of Half-Life: Deathmatch and Half-Life (Experimental, this means Singleplayer is NOT complete).
# ![](img/rt.png) Rad-Therapy
Similar to FreeCS, this aims to recreate the feeling of the original game.
It's designed to work with the content from the CD version of the game.
Currently I do not aim to support the Steam version.
Netplay improvements, such as prediction of both player physics and weapon-logic
are present.
This is 100% original code, feel free to audit however you wish.
No proprietary SDKs have been looked at or taken apart, unlike similar projects.
This is a port of the 1998 game 'Half-Life' to Quake(World). Powered by Nuclide and the [FTE Engine](https://www.fteqw.org/).
![Preview 1](img/preview1.jpg)
![Preview 2](img/preview2.jpg)
![Preview 3](img/preview3.jpg)
![Preview 4](img/preview4.jpg)
## Installing
To run it, all you need is [FTEQW](https://www.fteqw.org) and [the latest release .pk3 file](https://www.frag-net.com/pkgs/package_valve.pk3), which you save into `Half-Life/valve/`. That's about it. You can install updates through the **Configuration > Updates** menu.
## Installing/Running
## Building
Clone the repository into the Nuclide-SDK and build it:
To run it, all you need is [FTE](https://www.fteqw.org) and [the latest release .pk3 file](https://www.frag-net.com/pkgs/package_valve.pk3), which you save into `Half-Life/valve/`.
**That's about it.**
You can install updates through the **Configuration > Updates** menu.
As this is Quake, there is no native game code. This is CPU architecture independent.
You only need to build from source if you plan on making changes.
## Building from Source
Clone the repository into the [Nuclide-SDK](https://code.idtech.space/vera/nuclide) and build it like so:
```
$ cd nuclide
$ git clone https://code.idtech.space/fn/valve valve
$ SKIP_UPDATE=1 SKIP_RADIANT=1 ./build_game.sh valve
$ make game GAME=valve
```
You can also issue `make` inside `valve/src/`, but it won't build an `entities.def` file for use in Radiant (level editor family).
## Notes
The engine should automatically detect Half-Life when placed within the game directory, however you may need to pass `-halflife` just in case you have one massive directory with multiple FTE-supported games in it for example.
You can also launch mods like this: `fteqw -halflife -game cstrike`
Useful for development, so you don't always have to use the **Custom Game** menu.
## Community
@ -59,7 +58,7 @@ We've had people ask in the oddest of places for help, please don't do that.
## License
ISC License
Copyright (c) 2016-2024 Marco Hladik <marco@icculus.org>
Copyright (c) 2016-2025 Marco "eukara" Cawthorne <marco@icculus.org>
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above

1
cfg/skill_manifest.cfg Normal file
View file

@ -0,0 +1 @@
exec "skill_valve.cfg"

View file

@ -196,12 +196,9 @@ set sk_plr_buckshot3 "5"
set sk_plr_crowbar1 "10"
set sk_plr_crowbar2 "10"
set sk_plr_crowbar3 "10"
set sk_plr_egon_narrow1 "6"
set sk_plr_egon_narrow2 "6"
set sk_plr_egon_narrow3 "6"
set sk_plr_egon_wide1 "14"
set sk_plr_egon_wide2 "14"
set sk_plr_egon_wide3 "14"
set sk_plr_egon1 "6"
set sk_plr_egon2 "6"
set sk_plr_egon3 "6"
set sk_plr_gauss1 "20"
set sk_plr_gauss2 "20"
set sk_plr_gauss3 "20"

7
coop.config Normal file
View file

@ -0,0 +1,7 @@
g_gametype singleplayer
fraglimit 0
timelimit 20
coop 1
sv_playerslots 16
sv_pure 1
map c1a0

6
deathmatch.config Normal file
View file

@ -0,0 +1,6 @@
g_gametype deathmatch
fraglimit 0
timelimit 20
sv_playerslots 16
sv_pure 1
map_restart 0

59
decls/def/ammo.def Normal file
View file

@ -0,0 +1,59 @@
#include "ammo/base.def"
#include "ammo/buckshot.def"
#include "ammo/357.def"
#include "ammo/9mmAR.def"
#include "ammo/9mmbox.def"
#include "ammo/rpgclip.def"
#include "ammo/ARgrenades.def"
#include "ammo/9mmclip.def"
#include "ammo/crossbow.def"
#include "ammo/gaussclip.def"
// these have to be defined by the game.
entityDef ammo_types {
"ammo_none" "0"
"ammo_9mm" "1"
"ammo_357" "2"
"ammo_buckshot" "3"
"ammo_bolt" "4"
"ammo_rocket" "5"
"ammo_uranium" "6"
"ammo_handgrenade" "7"
"ammo_satchel" "8"
"ammo_tripmine" "9"
"ammo_snark" "10"
"ammo_hornet" "11"
"ammo_m203_grenade" "12"
}
entityDef ammo_names {
"ammo_none" "None"
"ammo_9mm" "9mm Bullets"
"ammo_357" ".357 Bullets"
"ammo_buckshot" "Buckshot Shells"
"ammo_bolt" "Bolts"
"ammo_rocket" "Rockets"
"ammo_uranium" "Uranium"
"ammo_handgrenade" "Hand Grenades"
"ammo_satchel" "Satchel Charge"
"ammo_tripmine" "Tripmines"
"ammo_snark" "Squeak Grenades"
"ammo_hornet" "Hornets"
"ammo_m203_grenade" "M203 Grenades"
}
entityDef ammo_max {
"ammo_none" "0"
"ammo_9mm" "250"
"ammo_357" "36"
"ammo_buckshot" "125"
"ammo_bolt" "50"
"ammo_rocket" "5"
"ammo_uranium" "100"
"ammo_handgrenade" "10"
"ammo_satchel" "5"
"ammo_tripmine" "10"
"ammo_snark" "10"
"ammo_hornet" "8"
"ammo_m203_grenade" "10"
}

6
decls/def/ammo/357.def Normal file
View file

@ -0,0 +1,6 @@
entityDef ammo_357
{
"inherit" "ammo_base"
"model" "models/w_357ammobox.mdl"
"inv_ammo_357" "6"
}

6
decls/def/ammo/9mmAR.def Normal file
View file

@ -0,0 +1,6 @@
entityDef ammo_9mmAR
{
"inherit" "ammo_base"
"model" "models/w_9mmarclip.mdl"
"inv_ammo_9mm" "50"
}

View file

@ -0,0 +1,6 @@
entityDef ammo_9mmbox
{
"inherit" "ammo_base"
"model" "models/w_chainammo.mdl"
"inv_ammo_9mm" "200"
}

View file

@ -0,0 +1,6 @@
entityDef ammo_9mmclip
{
"inherit" "ammo_base"
"model" "models/w_9mmclip.mdl"
"inv_ammo_9mm" "17"
}

View file

@ -0,0 +1,6 @@
entityDef ammo_ARgrenades
{
"inherit" "ammo_base"
"model" "models/w_argrenade.mdl"
"inv_ammo_m203_grenade" "2"
}

8
decls/def/ammo/base.def Normal file
View file

@ -0,0 +1,8 @@
entityDef ammo_base
{
"spawnclass" "ncItem"
"snd_acquire" "ammo.pickup"
"snd_respawn" "ammo.respawn"
"mins" "-16 -16 0"
"maxs" "16 16 16"
}

View file

@ -0,0 +1,6 @@
entityDef ammo_buckshot
{
"inherit" "ammo_base"
"model" "models/w_shotbox.mdl"
"inv_ammo_buckshot" "12"
}

View file

@ -0,0 +1,6 @@
entityDef ammo_crossbow
{
"inherit" "ammo_base"
"model" "models/w_crossbow_clip.mdl"
"inv_ammo_bolt" "5"
}

View file

@ -0,0 +1,6 @@
entityDef ammo_gaussclip
{
"inherit" "ammo_base"
"model" "models/w_gaussammo.mdl"
"inv_ammo_uranium" "20"
}

View file

@ -0,0 +1,6 @@
entityDef ammo_rpgclip
{
"inherit" "ammo_base"
"model" "models/w_rpgammo.mdl"
"inv_ammo_rocket" "1"
}

7
decls/def/items.def Normal file
View file

@ -0,0 +1,7 @@
#include "items/suit.def"
#include "items/airtank.def"
#include "items/antidote.def"
#include "items/battery.def"
#include "items/healthkit.def"
#include "items/longjump.def"
#include "items/security.def"

View file

@ -0,0 +1,10 @@
entityDef item_airtank
{
"spawnclass" "ncItem"
"model" "models/w_oxygen.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"snd_acquire" "item.airtank"
"snd_respawn" "item.respawn"
"requires" "item_suit"
}

View file

@ -0,0 +1,11 @@
entityDef item_antidote
{
"spawnclass" "ncItem"
"model" "models/w_antidote.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"snd_acquire" "item.antidote"
"snd_respawn" "item.respawn"
"requires" "item_suit"
"inv_carry" "1"
}

View file

@ -0,0 +1,11 @@
entityDef item_battery
{
"spawnclass" "ncItem"
"model" "models/w_battery.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"snd_acquire" "item.battery"
"snd_respawn" "item.respawn"
"inv_armor" "skill:battery"
"requires" "item_suit"
}

View file

@ -0,0 +1,11 @@
entityDef item_healthkit
{
"spawnclass" "ncItem"
"model" "models/w_medkit.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"snd_acquire" "item.healthkit"
"snd_respawn" "item.respawn"
"inv_health" "skill:healthkit"
"droptofloor" "1"
}

View file

@ -0,0 +1,11 @@
entityDef item_longjump
{
"spawnclass" "ncItem"
"model" "models/w_longjump.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"snd_acquire" "item.longjump"
"snd_respawn" "item.respawn"
"requires" "item_suit"
"inv_carry" "1"
}

View file

@ -0,0 +1,10 @@
entityDef item_security
{
"spawnclass" "ncItem"
"model" "models/w_security.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"snd_acquire" "item.security"
"snd_respawn" "item.respawn"
"inv_carry" "1"
}

10
decls/def/items/suit.def Normal file
View file

@ -0,0 +1,10 @@
entityDef item_suit
{
"spawnclass" "HLSuit"
"model" "models/w_suit.mdl"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"snd_acquire" "item.suit"
"snd_respawn" "item.respawn"
"inv_carry" "1"
}

54
decls/def/monsters.def Normal file
View file

@ -0,0 +1,54 @@
#include "monsters/alien_controller.def"
#include "monsters/alien_grunt.def"
#include "monsters/alien_slave.def"
#include "monsters/apache.def"
#include "monsters/archerfish.def"
#include "monsters/babycrab.def"
#include "monsters/barnacle.def"
#include "monsters/barney.def"
#include "monsters/barney_dead.def"
#include "monsters/bigmomma.def"
#include "monsters/bloater.def"
#include "monsters/bullchicken.def"
#include "monsters/charger.def"
#include "monsters/chumtoad.def"
#include "monsters/cockroach.def"
#include "monsters/flyer_flock.def"
#include "monsters/gargantua.def"
#include "monsters/gman.def"
#include "monsters/headcrab.def"
#include "monsters/hevsuit_dead.def"
#include "monsters/hgrunt_dead.def"
#include "monsters/houndeye.def"
#include "monsters/human_assassin.def"
#include "monsters/human_assault.def"
#include "monsters/human_grunt.def"
#include "monsters/ichthyosaur.def"
#include "monsters/kingpin.def"
#include "monsters/leech.def"
#include "monsters/miniturret.def"
#include "monsters/mrfriendly.def"
#include "monsters/nihilanth.def"
#include "monsters/osprey.def"
#include "monsters/panther.def"
#include "monsters/rat.def"
#include "monsters/scientist.def"
#include "monsters/scientist_dead.def"
#include "monsters/sentry.def"
#include "monsters/sitting_scientist.def"
#include "monsters/skeleton_dead.def"
#include "monsters/snapbug.def"
#include "monsters/snark.def"
#include "monsters/sphere.def"
#include "monsters/stukabat.def"
#include "monsters/tentacle.def"
#include "monsters/tentaclemaw.def"
#include "monsters/tripmine.def"
#include "monsters/turret.def"
#include "monsters/xen_hair.def"
#include "monsters/xen_plantlight.def"
#include "monsters/xen_spore_large.def"
#include "monsters/xen_spore_medium.def"
#include "monsters/xen_spore_small.def"
#include "monsters/xen_tree.def"
#include "monsters/zombie.def"

View file

@ -0,0 +1,51 @@
entityDef monster_alien_controller
{
"spawnclass" "ncTalkMonster"
"model" "models/controller.mdl"
"netname" "Alien Controller"
"health" "skill:controller_health"
"mins" "-32 -32 0"
"maxs" "32 32 64"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "100"
"speed_run" "500"
"flying" "1"
"fly_offset" "128"
"attack_ranged_range" "1024"
"snd_alert" "Controller.Alert"
"snd_idle" "Controller.Idle"
"snd_die" "Controller.Die"
"snd_pain" "Controller.Pain"
events {
// ranged attack
2 "SpawnProjectileOffset" "ranged_controller_ball 0 0 36"
3 "StartSoundDef" "Controller.Attack"
}
}
entityDef ranged_controller_ball
{
"spawnclass" "ncProjectile"
"model" "sprites/xspark4.spr"
"mins" "-16 -16 -16"
"mins" "16 16 16"
"def_damage" "damage_spitDirect"
"health" "0"
"velocity" "900"
"fuse" "10"
"detonate_on_fuse" "0"
"detonate_on_death" "0"
"detonate_on_world" "1"
"detonate_on_actor" "1"
"impact_damage_effect" "1"
"impact_gib" "0"
"trackEnemy" "1"
}

View file

@ -0,0 +1,99 @@
entityDef monster_alien_grunt
{
"spawnclass" "ncMonster"
"model" "models/agrunt.mdl"
"netname" "Alien Grunt"
"health" "skill:agrunt_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "46"
"speed_run" "292"
"def_attack_melee" "melee_agrunt_punch"
"attack_melee_range" "96"
"attack_ranged_range" "512"
"snd_alert" "AlienGrunt.Alert
"snd_idle" "AlienGrunt.Idle"
"snd_pain" "AlienGrunt.Pain"
"snd_death" "AlienGrunt.Pain"
"snd_melee_attack" "AlienGrunt.Attack"
"snd_melee_attack_hit" "AlienGrunt.AttackHit"
"snd_melee_attack_miss" "AlienGrunt.AttackMiss"
// animation event callbacks
events {
1 "SpawnProjectileDef" "ranged_agrunt_shot_orange"
1 "StartSoundDef" "AlienGrunt.FireGun"
2 "SpawnProjectileDef" "ranged_agrunt_shot_red"
2 "StartSoundDef" "AlienGrunt.FireGun"
3 "SpawnProjectileDef" "ranged_agrunt_shot_orange"
3 "StartSoundDef" "AlienGrunt.FireGun"
4 "SpawnProjectileDef" "ranged_agrunt_shot_red"
4 "StartSoundDef" "AlienGrunt.FireGun"
5 "SpawnProjectileDef" "ranged_agrunt_shot_orange"
5 "StartSoundDef" "AlienGrunt.FireGun"
10 "StartSoundDef" "AlienGrunt.LeftFoot"
11 "StartSoundDef" "AlienGrunt.RightFoot"
}
}
entityDef melee_agrunt_punch
{
"damage" "skill:agrunt_dmg_punch"
"delay" "0.25f"
}
entityDef ranged_agrunt_shot_red
{
"spawnclass" "ncProjectile"
"model" "models/hornet.mdl"
"def_damage" "damage_hornetDirect"
"health" "0"
"velocity" "600"
"fuse" "10"
"detonate_on_fuse" "1"
"detonate_on_death" "0"
"detonate_on_world" "0"
"detonate_on_actor" "1"
"impact_damage_effect" "1"
"impact_gib" "0"
"smoke_fly" "weapon_hornet.red_trail"
}
entityDef ranged_agrunt_shot_orange
{
"spawnclass" "ncProjectile"
"model" "models/hornet.mdl"
"def_damage" "damage_hornetDirect"
"health" "0"
"velocity" "800"
"fuse" "10"
"detonate_on_fuse" "1"
"detonate_on_death" "0"
"detonate_on_world" "0"
"detonate_on_actor" "1"
"impact_damage_effect" "1"
"impact_gib" "0"
"smoke_fly" "weapon_hornet.trail"
"trackEnemy" "1"
"trackJitter" "8 16 16"
"trackDelay" "0.1"
}
entityDef damage_hornetDirect
{
damage "skill:hornet_dmg"
}

View file

@ -0,0 +1,108 @@
entityDef monster_alien_slave
{
"spawnclass" "ncMonster"
"model" "models/islave.mdl"
"netname" "Vortigaunt"
"health" "skill:islave_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "72"
"speed_run" "72"
"def_attack_melee" "melee_islave_claw"
"melee_range" "96"
"attack_ranged_range" "512"
"snd_idle" "Vortigaunt.Idle"
"snd_pain" "Vortigaunt.Pain"
"snd_death" "Vortigaunt.Die"
// animation event callbacks
events {
1 "SpawnProjectileDef" "melee_islave_claw"
1 "StartSoundDef" "Vortigaunt.AttackMiss"
2 "SpawnProjectileDef" "melee_islave_claw"
2 "StartSoundDef" "Vortigaunt.AttackMiss"
// beam powerup, both left and right hand
3 "SpawnDefAttachment" "islave_beampowerup 0"
3 "SpawnDefAttachment" "islave_beampowerup 1"
3 "StartSoundDef" "Vortigaunt.ZapPowerup"
// fire a beam towards the target
4 "SpawnDefAttachment" "islave_beamattack 0"
4 "SpawnDefAttachment" "islave_beamattack 0"
4 "SpawnDefAttachment" "islave_beamattack 1"
4 "SpawnDefAttachment" "islave_beamattack 1"
4 "SpawnProjectileDef" "ranged_islave_zap"
4 "StartSoundDef" "Vortigaunt.ZapShoot"
// kill anything parented to us
5 "KillChildClass" "islave_beampowerup"
}
}
entityDef islave_beampowerup
{
"spawnclass" "env_beam"
"texture" "sprites/lgtning.spr"
"rendercolor" "96 128 16"
"renderamt" "64"
"NoiseAmplitude" "80"
"life" "3"
"Radius" "512"
"BoltWidth" "16"
"RadiusScale" "0 1 1"
"spawnflags" "1"
"decal_detonate" "Impact.Shot"
}
entityDef islave_beamattack
{
"spawnclass" "env_beam"
"texture" "sprites/lgtning.spr"
"rendercolor" "180 255 96"
"renderamt" "255"
"NoiseAmplitude" "80"
"life" "0.5"
"Radius" "512"
"BoltWidth" "64"
"BeamDir" "512 0 0"
"spawnflags" "1"
"decal_detonate" "Impact.Shot"
}
entityDef damage_islave_zap
{
"damage" "skill:islave_dmg_zap"
}
entityDef ranged_islave_zap
{
"spawnclass" "ncProjectile"
"mins" "-16 -16 -32"
"maxs" "16 16 32"
"def_damage" "damage_islave_zap"
"health" "0"
"velocity" "9000"
"fuse" "10"
"detonate_on_fuse" "0"
"detonate_on_death" "0"
"detonate_on_world" "0"
"detonate_on_actor" "1"
"impact_damage_effect" "1"
"impact_gib" "0"
}
entityDef melee_islave_claw
{
"damage" "skill:islave_dmg_claw"
"delay" "0.25f"
"wait" "0.5"
"attempts" "2"
}

View file

@ -0,0 +1,32 @@
entityDef monster_apache
{
"spawnclass" "ncTalkMonster"
"model" "models/apache.mdl"
"netname" "Apache"
"health" "0"
"mins" "-32 -32 0"
"maxs" "32 32 64"
"eye_height" "0"
"team" "2"
"propdata" "actor_robot"
"speed_walk" "200"
"speed_run" "200"
"flying" "1"
"fly_offset" "768"
"snd_fly" "Apache.Rotor"
// Apache.RotorSpinup
// Apache.RPG
// ApacheHVR.Ignite
// primary ranged attack
"def_attack_ranged" "ranged_hgrunt_mp5"
"snd_ranged_attack" "Apache.FireGun"
"attack_ranged_range" "2048"
// special attack
"def_attack_special_1" "projectile_rocket"
"attack_special_range" "1024"
"projectile_delay" "1.0"
}

View file

@ -0,0 +1,17 @@
entityDef monster_archerfish
{
"spawnclass" "ncMonster"
"model" "models/archer.mdl"
"netname" "Archer Fish"
"health" "10"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"eye_height" "32"
"team" "2"
"propdata" "actor_alien"
"flying" "1"
"fly_offset" "32"
"speed_walk" "25" // These values are
"speed_run" "50" // purely speculative
}

View file

@ -0,0 +1,22 @@
entityDef monster_babycrab
{
"spawnclass" "ncMonster"
"inherit" "monster_headcrab"
"model" "models/baby_headcrab.mdl"
"health" "skill:babycrab_health"
"leap_damage" "skill:babycrab_dmg_bite"
"snd_idle" "Babycrab.Idle"
"snd_pain" "Babycrab.Pain"
"snd_death" "Babycrab.Die"
"snd_melee_attack_hit" "Babycrab.Bite"
events {
jump "AddVelocity" "512 0 250"
jump "StartSoundDef" "Babycrab.Attack"
jump_variation1 "AddVelocity" "512 0 250"
jump_variation1 "StartSoundDef" "Babycrab.Attack"
jump_variation2 "AddVelocity" "512 0 250"
jump_variation2 "StartSoundDef" "Babycrab.Attack"
}
}

View file

@ -0,0 +1,21 @@
entityDef monster_barnacle
{
"spawnclass" "ncMonster"
"model" "models/barnacle.mdl"
"netname" "Barnacle"
"health" "skill:barnacle_health"
"mins" "-16 -16 -32"
"maxs" "16 16 0"
"eye_height" "0"
"team" "2"
"propdata" "actor_human"
"speed_walk" "0"
"speed_run" "0" // day one only
"static" "1"
"def_puke" "barnacle_gib"
events {
2 "ShootGib" "gibs_human 200 1"
}
}

View file

@ -0,0 +1,59 @@
entityDef monster_barney
{
"spawnclass" "ncTalkMonster"
"model" "models/barney.mdl"
"netname" "Barney"
"health" "skill:barney_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "0"
"propdata" "actor_human"
"def_attack_ranged" "ranged_barney_shot"
"attack_ranged_range" "1024"
"reload_count" "18"
"follow_on_use" "1"
"weapon_drawn" "0"
"body_on_draw" "1:2"
"speed_walk" "64"
"speed_run" "364"
"snd_pain" "Barney.Pain"
"snd_death" "Barney.Die"
"snd_ranged_attack" "Barney.FirePistol"
"snd_reload" "HGrunt.Reload"
"talk_answer" "!BA_ANSWER"
"talk_ask" "!BA_QUESTION"
"talk_ally_shoot" "!BA_SHOOT"
"talk_idle" "!BA_IDLE"
"talk_hearing" "!BA_HEAR"
"talk_smelling" "!BA_SMELL"
"talk_stare" "!BA_STARE"
"talk_survived" "!BA_WOUND"
"talk_wounded" "!BA_WOUND"
"talk_player_ask" "!BA_QUESTION"
"talk_player_greet" "!BA_HELLO"
"talk_player_idle" "!BA_IDLE"
"talk_player_wounded1" "!BA_CUREA"
"talk_player_wounded2" "!BA_CUREB"
"talk_player_wounded3" "!BA_CUREC"
"talk_unfollow" "!BA_WAIT"
"talk_follow" "!BA_OK"
"talk_stop_follow" "!BA_STOP"
"talk_deny_follow" "!BA_POK"
// pre-disaster
when "spawnflags" equals "256" {
"follow_on_use" "0"
}
}
entityDef ranged_barney_shot
{
"inherit" "projectile_bullet_base"
"damage" "skill:hgrunt_pellets"
"delay" "0.5"
}

View file

@ -1,6 +1,6 @@
entityDef monster_barney_dead
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/barney.mdl"
"netname" "Barney"
"health" "skill:barney_heath"

View file

@ -0,0 +1,98 @@
entityDef monster_bigmomma
{
"spawnclass" "ncMonster"
"model" "models/big_mom.mdl"
"netname" "Big Momma"
"health" "100"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "0"
"speed_run" "292"
"attack_ranged_range" "512"
"attack_melee_range" "152"
"def_attack_melee" "melee_bigmomma"
"def_attack_ranged" "ranged_bigmomma_spit"
"snd_alert" "BigMomma.Alert"
"snd_pain" "BigMomma.Pain"
"snd_death" "BigMomma.Die"
"snd_precache" "BigMomma.FootstepLeft"
"snd_precache" "BigMomma.FootstepRight"
"snd_precache" "BigMomma.ChildDie" // She mourns when her children die, who wouldn't?
"snd_precache" "BigMomma.Sack"
"snd_precache" "monster_bigmomma.scream"
"snd_precache" "BigMomma.LaunchMortar"
"snd_precache" "BigMomma.Attack"
"snd_precache" "BigMomma.AttackHit"
"snd_precache" "BigMomma.AttackMiss"
"snd_precache" "BigMomma.Birth" // BigMomma.LayHeadcrab seems to be the same?
"snd_precache" "NPC_BigMomma.SpitTouch1"
"snd_precache" "NPC_BigMomma.SpitHit1"
"snd_precache" "NPC_BigMomma.SpitHit2"
events {
// footsteps
1 "StartSoundDef" "BigMomma.FootstepLeft"
2 "StartSoundDef" "BigMomma.FootstepRight"
3 "StartSoundDef" "BigMomma.FootstepLeft"
4 "StartSoundDef" "BigMomma.FootstepRight"
// sfx
5 "StartSoundDef" "BigMomma.Sack"
6 "StartSoundDef" "BigMomma.Die"
14 "StartSoundDef" "monster_bigmomma.scream"
15 "StartSoundDef" "BigMomma.Pain"
16 "StartSoundDef" "BigMomma.Attack"
17 "StartSoundDef" "BigMomma.Birth"
// melee attacks
8 "SpawnProjectileDef" "melee_bigmomma"
9 "SpawnProjectileDef" "melee_bigmomma"
10 "SpawnProjectileDef "melee_bigmomma"
// ranged attack
11 "SpawnProjectileOffset" "ranged_bigmomma_spit 0 0 180"
// spawn offspring
12 "SpawnProjectileDef" "monster_babycrab"
// trigger our targets
50 "UseTargets" ""
// jump forward
13 "AddVelocity" "200 0 500"
}
}
entityDef melee_bigmomma
{
"damage" "skill:bullsquid_dmg_bite"
"delay" "0.25f"
}
entityDef ranged_bigmomma_spit
{
"spawnclass" "ncProjectile"
"model" "sprites/mommaspit.spr"
"mins" "-16 -16 -16"
"mins" "16 16 16"
"def_damage" "damage_spitDirect"
"health" "0"
"velocity" "900"
"fuse" "10"
"detonate_on_fuse" "0"
"detonate_on_death" "0"
"detonate_on_world" "1"
"detonate_on_actor" "1"
"impact_damage_effect" "1"
"impact_gib" "0"
"trackEnemy" "1"
}

View file

@ -0,0 +1,17 @@
entityDef monster_bloater
{
"spawnclass" "ncMonster"
"model" "models/floater.mdl"
"netname" "Flocking Floater" // wonder if it's the Floater from Cosmos
"health" "25"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"flying" "1"
"fly_offset" "64"
"speed_walk" "64"
"speed_run" "364" // day one only
}

View file

@ -0,0 +1,76 @@
entityDef monster_bullchicken
{
"spawnclass" "ncMonster"
"model" "models/bullsquid.mdl"
"netname" "Bullsquid"
"health" "skill:bullsquid_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "32"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "32"
"speed_run" "72"
"attack_ranged_range" "512"
"attack_melee_range" "86" // tailwhip
"attack_melee2_range" "86" // bite
"def_attack_melee" "melee_bullchicken_tailwhip"
"def_attack_melee2" "melee_bullchicken_bite"
"snd_alert" "Bullsquid.Growl"
"snd_idle" "Bullsquid.Idle"
"snd_pain" "Bullsquid.Pain"
"snd_death" "Bullsquid.Die"
events {
1 "SpawnProjectileDef" "ranged_bullchicken_spit"
1 "StartSoundDef" "Bullsquid.Attack"
2 "StartSoundDef" "Bullsquid.Bite"
3 "SetSkin" "1"
4 "StartSoundDef" "Bullsquid.Growl"
5 "SetVelocity" "0 0 256"
6 "StartSoundDef" "Bullsquid.Bite"
}
}
entityDef melee_bullchicken_bite
{
"damage" "skill:bullsquid_dmg_bite"
"delay" "0.25f"
}
entityDef melee_bullchicken_tailwhip
{
"damage" "skill:bullsquid_dmg_whip"
"delay" "0.25f"
}
entityDef ranged_bullchicken_spit
{
"spawnclass" "ncProjectile"
"model" "sprites/bigspit.spr"
"def_damage" "damage_spitDirect"
"health" "0"
"velocity" "900"
"fuse" "10"
"detonate_on_fuse" "0"
"detonate_on_death" "0"
"detonate_on_world" "1"
"detonate_on_actor" "1"
"impact_damage_effect" "1"
"impact_gib" "0"
}
entityDef damage_spitDirect
{
damage "skill:bullsquid_dmg_spit"
}

View file

@ -0,0 +1,34 @@
entityDef monster_charger
{
"spawnclass" "ncMonster"
"model" "models/charger.mdl"
"netname" "Charger"
"health" "skill:charger_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "48"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "72"
"speed_run" "160"
"def_attack_melee" "melee_charger_stab"
"melee_range" "96"
// "snd_sight" "Charger.Alert"
// "snd_idle" "Charger.Idle"
// "snd_pain" "Charger.Pain"
// "snd_death" "Charger.Die"
// "snd_melee_attack" "Charger.Attack"
// "snd_melee_attack_hit" "Charger.Hit"
// "snd_melee_attack_miss" "Charger.attackmiss"
"snd_thud" "monster_generic.thud"
}
entityDef melee_charger_stab
{
"damage" "skill:charger_dmg_one_slash"
"delay" "0.5"
"wait" "0.5"
"attempts" "2"
}

View file

@ -0,0 +1,15 @@
entityDef monster_chumtoad
{
"spawnclass" "ncMonster"
"model" "models/chumtoad.mdl"
"netname" "Chumtoad"
"health" "10"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"eye_height" "12"
"team" "0"
"propdata" "actor_alien"
"speed_walk" "25" // These values are
"speed_run" "50" // purely speculative
}

View file

@ -0,0 +1,20 @@
entityDef monster_cockroach
{
"spawnclass" "ncTalkMonster"
"model" "models/roach.mdl"
"netname" "Cockroach"
"health" "0"
"mins" "-8 -8 0"
"maxs" "8 8 8"
"eye_height" "64"
"team" "0"
"propdata" "actor_alien"
"speed_walk" "0"
"speed_run" "0"
"snd_walk" "Roach.Walk"
}
TODO: coverhintnodeflags: FLESH | LOWLIGHT
TODO: OnSeenPlayer: MoveToCover

View file

@ -1,6 +1,6 @@
entityDef monster_flyer
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/aflock.mdl"
"netname" "Flyer Flock"
"health" "0"
@ -12,4 +12,5 @@ entityDef monster_flyer
"speed_walk" "64"
"speed_run" "364"
}
"flying" "1"
}

View file

@ -1,6 +1,6 @@
entityDef monster_flyer_flock
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/aflock.mdl"
"netname" "Flyer Flock"
"health" "0"
@ -12,4 +12,5 @@ entityDef monster_flyer_flock
"speed_walk" "64"
"speed_run" "364"
}
"flying" "1"
}

View file

@ -0,0 +1,28 @@
entityDef monster_gargantua
{
"spawnclass" "ncMonster"
"model" "models/garg.mdl"
"netname" "Gargantua"
"health" "skill:gargantua_health"
"mins" "-32 -32 0"
"maxs" "32 32 128"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "46"
"speed_run" "292"
"snd_idle" "Garg.Idle"
"snd_death" "Garg.Die"
events {
// attacks
1 "SpawnProjectileDef" "melee_gargantua"
5 "SpawnProjectileDef" "stomp_gargantua"
// sfx
3 "StartSoundDef" "Garg.Footstep"
4 "StartSoundDef" "Garg.Footstep"
6 "StartSoundDef" "Garg.Breath"
}
}

View file

@ -1,15 +1,15 @@
entityDef monster_gman
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/gman.mdl"
"netname" "G-Man"
"health" "0" // he can't die, he's the G-Man!
"health" "" // he can't die, he's the G-Man!
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"eye_height" "64"
"team" "0"
"propdata" "actor_human"
"propdata" "actor_robot"
"speed_walk" "77"
"speed_walk" "77"
"speed_run" "364" // day one only
}

View file

@ -0,0 +1,31 @@
entityDef monster_headcrab
{
"spawnclass" "ncMonster"
"model" "models/headcrab.mdl"
"netname" "Headcrab"
"health" "skill:headcrab_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "12"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "32"
"speed_run" "72"
"attack_ranged_range" "180" // needs launch attack
"snd_idle" "Headcrab.Idle"
"snd_pain" "Headcrab.Pain"
"snd_death" "Headcrab.Die"
"snd_melee_attack_hit" "Headcrab.Bite"
"leap_damage" "skill:headcrab_dmg_bite"
events {
jump "AddVelocity" "512 0 250"
jump "StartSoundDef" "Headcrab.Attack"
jump_variation1 "AddVelocity" "512 0 350"
jump_variation1 "StartSoundDef" "Headcrab.Attack"
jump_variation2 "AddVelocity" "512 0 350"
jump_variation2 "StartSoundDef" "Headcrab.Attack"
}
}

View file

@ -1,6 +1,6 @@
entityDef monster_hevsuit_dead
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/player.mdl"
"body1" "1"
"netname" "Dead H.E.V. Scientist"

View file

@ -1,6 +1,6 @@
entityDef monster_hgrunt_dead
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/hgrunt.mdl"
"netname" "Dead Human Grunt"
"health" "skill:hgrunt_health"

View file

@ -0,0 +1,37 @@
entityDef monster_houndeye
{
"spawnclass" "ncMonster"
"model" "models/houndeye.mdl"
"netname" "Houndeye"
"health" "skill:houndeye_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "32"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "32"
"speed_run" "192"
"attack_ranged_range" "192"
"snd_idle" "HoundEye.Idle"
"snd_pain" "HoundEye.Pain"
"snd_death" "HoundEye.Die"
events {
1 "StartSoundDef" "HoundEye.Alert"
2 "StartSoundDef" "HoundEye.Warn"
3 "Shockwave" "sprites/shockwave.spr 192 0 0 2 16 0 255 255 255 255 0"
3 "StartSoundDef" "HoundEye.Sonic"
4 "AddVelocity" "-200 0 250"
5 "StartSoundDef" "HoundEye.Pain"
6 "StartSoundDef" "HoundEye.Pain"
7 "SetSkin" "0"
}
}

View file

@ -0,0 +1,37 @@
entityDef monster_human_assassin
{
"spawnclass" "ncTalkMonster"
"model" "models/hassassin.mdl"
"netname" "Human Assassin"
"health" "skill:hassassin_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "1"
"propdata" "actor_human"
"attack_ranged_range" "512"
"attack_melee_range" "86"
"def_attack_melee" "melee_hassassin_kick"
"speed_walk" "0"
"speed_run" "364"
// animation event callbacks
events {
1 "SpawnProjectileDef" "ranged_hassassin_shot"
1 "StartSoundDef" "HAssassin.Shot"
}
}
entityDef melee_hassassin_kick
{
"damage" "skill:bullsquid_dmg_bite"
"delay" "0.25"
}
entityDef ranged_hassassin_shot
{
"inherit" "projectile_bullet_base"
"damage" "skill:9mm_bullet"
}

View file

@ -0,0 +1,57 @@
entityDef monster_human_assault
{
"spawnclass" "ncSquadMonster"
"model" "models/hassault.mdl"
"netname" "Human Assault"
"health" "skill:hgrunt_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "1"
"propdata" "actor_human"
"speed_walk" "41"
"speed_run" "304"
// melee attack
"def_attack_melee" "melee_hassault_kick"
"attack_melee_range" "96"
"snd_melee_attack" "monster_human_grunt.kick"
// primary ranged attack
"def_attack_ranged" "ranged_hassault_20mm"
"snd_ranged_attack" "Weapon_MP5.Single"
"attack_ranged_range" "1024"
"reload_count" "30"
"snd_idle" "monster_human_grunt.idle"
"snd_pain" "HGrunt.Pain"
"snd_death" "HGrunt.Die"
"snd_reload" "HGrunt.Reload"
"squad_leader" "1" // Intended to be the squad leader whenever present
}
entityDef melee_hassault_kick
{
"spawnclass" "ncProjectile"
"is_bullet" "1"
"damage" "skill:hgrunt_kick"
"delay" "0.25"
"range" "64"
}
entityDef ranged_hassault_20mm
{
"inherit" "projectile_bullet_base"
"damage" "skill:hgrunt_pellets"
"burst" "3"
"burst_delay" "0.5"
"delay" "0.1"
}
entityDef ranged_hassault_shot
{
"inherit" "projectile_bullet_base"
"damage" "skill:hgrunt_pellets"
"delay" "1.0"
}

View file

@ -0,0 +1,174 @@
entityDef monster_human_grunt
{
"spawnclass" "ncTalkMonster"
"model" "models/hgrunt.mdl"
"netname" "Grunt"
"health" "skill:hgrunt_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "1"
"propdata" "actor_human"
"speed_walk" "41"
"speed_run" "304"
// melee attack
"def_attack_melee" "melee_hgrunt_kick"
"attack_melee_range" "96"
"snd_melee_attack" "HGrunt.Kick"
// primary ranged attack
"def_attack_ranged" "ranged_hgrunt_mp5"
"snd_ranged_attack" "HGrunt.9MM"
"attack_ranged_range" "1024"
"reload_count" "30"
// special attack
"def_attack_special_1" "projectile_hgrunt_grenade"
"attack_special_range" "1024"
"projectile_delay" "1.0"
// TODO Unclear how these work
// TODO !HG_CHECK
// TODO !HG CLEAR
"talk_answer" "!HG_ANSWER"
"talk_ask" "!HG_QUEST"
"talk_idle" "!HG_IDLE"
"snd_pain" "HGrunt.Pain"
"snd_death" "HGrunt.Die"
"snd_reload" "HGrunt.Reload"
"weapons" "3"
"mindset_idle" "hgrunt_idle"
"mindset_defense" "hgrunt_takeCover"
"mindset_combat" "hgrunt_combatFace"
"squad_leader_body" "1:2"
// grenade launcher
when "weapons" contains 4 {
"body1" "4"
"def_attack_special_1" "projectile_hgrunt_ARgrenade"
"skin" "1"
}
// shotgun grunt
when "weapons" contains 8 {
"body2" "2"
"reload_count" "8"
"snd_ranged_attack" "HGrunt.Shotgun"
"def_attack_ranged" "ranged_hgrunt_shot"
}
when "spawnflags" contains 32 {
"squad_leader" "1"
}
// animation event callbacks
events {
2 "StartSoundDef" "HGrunt.Reload"
3 "SpawnProjectileDef" "melee_hgrunt_kick"
4 "SpawnProjectileDef" "ranged_hgrunt_mp5"
5 "SpawnProjectileDef" "ranged_hgrunt_mp5"
6 "SpawnProjectileDef" "ranged_hgrunt_mp5"
7 "SpawnProjectileDef" "projectile_hgrunt_grenade"
8 "SpawnProjectileDef" "projectile_hgrunt_ARgrenade"
9 "SpawnProjectileDef" "projectile_hgrunt_grenadePlant"
}
}
entityDef melee_hgrunt_kick
{
"spawnclass" "ncProjectile"
"is_bullet" "1"
"damage" "skill:hgrunt_kick"
"delay" "0.25"
"range" "64"
}
entityDef ranged_hgrunt_mp5
{
"inherit" "projectile_bullet_base"
"damage" "skill:hgrunt_pellets"
"burst" "3"
"burst_delay" "0.5"
"delay" "0.1"
}
entityDef ranged_hgrunt_shot
{
"inherit" "projectile_bullet_base"
"damage" "skill:hgrunt_pellets"
"delay" "1.0"
}
entityDef projectile_hgrunt_ARgrenade
{
"spawnclass" "ncProjectile"
"model" "models/grenade.mdl"
"def_splash_damage" "damage_grenadeSplash"
"health" "0"
"velocity" "800 0 400"
"angular_velocity" "300 300 300"
"fuse" "4"
"bounce" "1"
"detonate_on_fuse" "1"
"detonate_on_death" "0"
"detonate_on_world" "1"
"detonate_on_actor" "1"
"impact_damage_effect" "1"
"impact_gib" "1"
"model_detonate" "fx_explosion.main"
"explode_light_color" "2 1.6 0.8"
"explode_light_radius" "320"
"explode_light_fadetime" "0.5"
"snd_explode" "weapon_handgrenade.explode"
"snd_bounce" "weapon_handgrenade.bounce"
}
entityDef projectile_hgrunt_grenade
{
"spawnclass" "ncProjectile"
"model" "models/w_grenade.mdl"
"def_splash_damage" "damage_grenadeSplash"
"health" "0"
"velocity" "600 0 200"
"angular_velocity" "300 300 300"
"fuse" "4"
"bounce" "1"
"detonate_on_fuse" "1"
"detonate_on_death" "0"
"detonate_on_world" "0"
"detonate_on_actor" "0"
"impact_damage_effect" "1"
"impact_gib" "1"
"model_detonate" "fx_explosion.main"
"explode_light_color" "2 1.6 0.8"
"explode_light_radius" "320"
"explode_light_fadetime" "0.5"
"snd_explode" "BaseExplosionEffect.Sound"
"snd_bounce" "Weapon_HandGrenade.GrenadeBounce"
}
entityDef projectile_hgrunt_grenade Plant
{
"inherit" "projectile_hgrunt_grenade"
"velocity" "15 0 128"
}
entityDef damage_grenadeSplash
{
"damage" "150"
"radius" "160"
}

View file

@ -0,0 +1,15 @@
entityDef monster_ichthyosaur
{
"spawnclass" "ncTalkMonster"
"model" "models/icky.mdl"
"netname" "Ichthyosaur"
"health" "0"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "0"
"speed_run" "0"
}

View file

@ -0,0 +1,15 @@
entityDef monster_kingpin
{
"spawnclass" "ncMonster"
"model" "models/kingpin.mdl"
"netname" "Kingpin"
"health" "200"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"eye_height" "96"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "25" // These values are
"speed_run" "50" // purely speculative
}

View file

@ -0,0 +1,28 @@
entityDef monster_leech
{
"spawnclass" "ncTalkMonster"
"model" "models/leech.mdl"
"netname" "Leech"
"health" "skill:leech_health"
"mins" "-8 -8 0"
"maxs" "8 8 8"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "32"
"speed_run" "64"
"def_attack_melee" "melee_leech_bite"
"melee_range" "24"
"snd_melee_attack_hit" "monster_zombie.attackhit"
}
entityDef melee_leech_bite
{
"damage" "skill:zombie_dmg_one_slash"
"delay" "0.2"
"wait" "2"
"attempts" "1"
}

View file

@ -0,0 +1,16 @@
entityDef monster_miniturret
{
"spawnclass" "ncTalkMonster"
"model" "models/miniturret.mdl"
"netname" "Mini-Turret"
"health" "skill:miniturret_health"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"eye_height" "64"
"team" "1"
"propdata" "actor_robot"
"speed_walk" "0"
"speed_run" "0"
"static" "1"
}

View file

@ -0,0 +1,15 @@
entityDef monster_mrfriendly
{
"spawnclass" "ncMonster"
"model" "models/friendly.mdl"
"netname" "Mr. Friendly"
"health" "100"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "25" // These values are
"speed_run" "50" // purely speculative
}

View file

@ -0,0 +1,16 @@
entityDef monster_nihilanth
{
"spawnclass" "ncTalkMonster"
"model" "models/nihilanth.mdl"
"netname" "Nihilanth"
"health" "0"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "0"
"speed_run" "0"
"flying" "1"
}

View file

@ -0,0 +1,16 @@
entityDef monster_osprey
{
"spawnclass" "ncTalkMonster"
"model" "models/osprey.mdl"
"netname" "Osprey"
"health" "0"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"propdata" "actor_robot"
"speed_walk" "0"
"speed_run" "0"
"flying" "1"
}

View file

@ -0,0 +1,41 @@
entityDef monster_panther
{
"spawnclass" "ncMonster"
"model" "models/panther.mdl"
"netname" "Panther Eye"
"health" "skill:panther_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "48"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "32"
"speed_run" "72"
"def_attack_melee" "melee_panther_stab"
"melee_range" "96"
"attack_ranged_range" "180" // needs launch attack
// "snd_sight" "monster_panther.alert"
// "snd_idle" "monster_panther.idle"
// "snd_pain" "monster_panther.pain"
// "snd_death" "monster_panther.death"
"leap_damage" "skill:panther_dmg_bite"
events {
jump "AddVelocity" "512 0 250"
jump "StartSoundDef" "monster_panther.attack"
jump_variation1 "AddVelocity" "512 0 350"
jump_variation1 "StartSoundDef" "monster_panther.attack"
jump_variation2 "AddVelocity" "512 0 350"
jump_variation2 "StartSoundDef" "monster_panther.attack"
}
}
entityDef melee_panther_stab
{
"damage" "skill:panther_dmg_one_slash"
"delay" "0.5"
"wait" "0.5"
"attempts" "2"
}

View file

@ -1,6 +1,6 @@
entityDef monster_rat
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/bigrat.mdl"
"netname" "Rat"
"health" "0"

View file

@ -0,0 +1,80 @@
entityDef monster_scientist
{
"spawnclass" "HLScientist"
"model" "models/scientist.mdl"
"netname" "Scientist"
"health" "skill:scientist_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "0"
"propdata" "actor_human"
// Until Randomization is functional
// we need to do this hack
"pitch" "105"
"netname" "Walter"
"body1" "1"
"follow_on_use" "1"
"speed_walk" "64"
"speed_run" "364"
"snd_pain" "Scientist.Pain"
"snd_death" "Scientist.Die"
"talk_answer" "!SC_ANSWER"
"talk_ask" "!SC_QUESTION"
"talk_ally_shoot" "!SC_PLFEAR"
"talk_idle" "!SC_IDLE"
"talk_hearing" "!SC_HEAR"
"talk_smelling" "!SC_SMELL"
"talk_stare" "!SC_STARE"
"talk_survived" "!SC_WOUND"
"talk_wounded" "!SC_MORTAL"
"talk_player_ask" "!SC_QUESTION"
"talk_player_greet" "!SC_HELLO"
"talk_player_idle" "!SC_PIDLE"
"talk_player_wounded1" "!SC_CUREA"
"talk_player_wounded2" "!SC_CUREB"
"talk_player_wounded3" "!SC_CUREC"
"talk_unfollow" "!SC_WAIT"
"talk_follow" "!SC_OK"
"talk_stop_follow" "!SC_STOP"
"talk_deny_follow" "!SC_POK"
// Body Types
when "body" equals "0" {
"pitch" "105"
"netname" "Walter"
"body1" "1"
}
when "body" equals "1" {
"pitch" "100"
"netname" "Einstein"
"body1" "2"
}
when "body" equals "2" {
"pitch" "95"
"netname" "Luther"
"skin" "1"
"body1" "3"
}
when "body" equals "3" {
"pitch" "105"
"netname" "Slick"
"body1" "4"
}
// pre-disaster
when "spawnflags" contains "256" {
"talk_ask" ""
"talk_player_ask" "!SC_PQUEST"
"talk_player_greet" "!SC_PHELLO"
"talk_player_idle" "!SC_PIDLE"
"follow_on_use" "0"
}
}

View file

@ -1,6 +1,6 @@
entityDef monster_scientist_dead
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/scientist.mdl"
"netname" "Dead Scientist"
"health" "skill:scientist_health"

View file

@ -0,0 +1,45 @@
entityDef monster_sentry
{
"spawnclass" "ncTalkMonster"
"model" "models/sentry.mdl"
"netname" "Sentry"
"health" "skill:sentry_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "60"
"team" "1"
"propdata" "actor_robot"
"def_attack_ranged" "ranged_sentry_shot"
"attack_ranged_range" "1024"
"snd_idle" "Turret.Ping"
"snd_death" "Sentry.Die"
"snd_ranged_attack" "Sentry.Shoot"
"act_idle" "0" // when the sentry is turned off.
// "act_sleep" "4" // when the sentry retires;The animation is a dupe
"act_excited" "3" // waking up
"act_dieSimple" "5"
"act_dieForward" "5"
"act_dieViolent" "5"
"act_combatIdle" "2" // scanning
"act_rangeAttack1" "1"
"act_rangeAttack2" "1"
"speed_walk" "0"
"speed_run" "0"
"turn_rate" "0"
"use_nav" "0"
"bleed" "0"
"fireFromHead" "1"
}
entityDef ranged_sentry_shot
{
"inherit" "projectile_bullet_base"
"damage" "skill:hgrunt_pellets"
"delay" "0.1"
"attempts" "8"
"wait" "2"
}

View file

@ -1,6 +1,6 @@
entityDef monster_sitting_scientist
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/scientist.mdl"
"netname" "Seated Scientist"
"health" "skill:scientist_health"

View file

@ -1,6 +1,6 @@
entityDef monster_skeleton_dead
{
"spawnclass" "NSMonster"
"spawnclass" "ncMonster"
"model" "models/skeleton.mdl"
"netname" "Skeleton"
"health" "50"

View file

@ -0,0 +1,17 @@
entityDef monster_snapbug
{
"spawnclass" "ncMonster"
"model" "models/snapbug.mdl"
"netname" "Snapbug"
"health" "25"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"eye_height" "12"
"team" "2"
"propdata" "actor_alien"
"flying" "1"
"fly_offset" "32"
"speed_walk" "25" // These values are
"speed_run" "50" // purely speculative
}

View file

@ -0,0 +1,32 @@
entityDef monster_snark
{
"spawnclass" "ncMonster"
"model" "models/w_squeak.mdl"
"netname" "Snark"
"health" "skill:snark_health"
"mins" "-4 -4 0"
"maxs" "4 4 8"
"eye_height" "12"
"team" "3"
"propdata" "actor_alien"
"speed_walk" "128"
"speed_run" "128"
"act_idle" "0"
"act_rangeAttack1" "2"
"act_walk" "3"
"act_run" "3"
"attack_ranged_range" "96"
// Snark.Deploy
"snd_attack" "Snark.Bounce"
"snd_pain" "Snark.Die"
"snd_death" "Snark.Die"
"snd_gib" "Snark.Gibbed"
"leap_damage" "skill:snark_dmg_bite"
events {
jump "AddVelocity" "512 0 250"
jump "StartSoundDef" "Snark.Squeak"
}
}

View file

@ -0,0 +1,22 @@
entityDef monster_sphere
{
"spawnclass" "ncMonster"
"model" "models/sphere.mdl"
"netname" "Vortigaunt Control Sphere"
"health" "10"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"eye_height" "32"
"team" "2"
"propdata" "actor_robot"
"flying" "1"
"fly_offset" "64"
"act_idle" "0"
"act_fly" "0"
"act_rangeAttack1" "1"
"act_arm" "2"
"act_disarm" "3"
"speed_walk" "25" // These values are
"speed_run" "50" // purely speculative
}

View file

@ -0,0 +1,17 @@
entityDef monster_stukabat
{
"spawnclass" "ncMonster"
"model" "models/stukabat.mdl"
"netname" "Stukabat"
"health" "25"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"lands" "1" // TODO
"flying" "1"
"speed_walk" "25" // These values are
"speed_run" "50" // purely speculative
}

View file

@ -1,6 +1,6 @@
entityDef monster_tentacle
{
"spawnclass" "NSTalkMonster"
"spawnclass" "ncTalkMonster"
"model" "models/tentacle2.mdl"
"netname" "Tentacle"
"health" "25"

View file

@ -0,0 +1,9 @@
entityDef monster_tentaclemaw
{
"spawnclass" "cycler"
"model" "models/maw.mdl"
"netname" "Tentacle Maw"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"propdata" "actor_alien"
}

View file

@ -0,0 +1,6 @@
entityDef monster_tripmine
{
"spawnclass" "HLTripmine"
"snd_precache1" "TripmineGrenade.Charge"
"snd_precache2" "TripmineGrenade.Activate"
}

View file

@ -0,0 +1,18 @@
entityDef monster_turret
{
"spawnclass" "ncTalkMonster"
"model" "models/turret.mdl"
"netname" "Turret"
"health" "skill:turret_health"
"mins" "-16 -16 0"
"maxs" "16 16 32"
"eye_height" "64"
"team" "1"
"propdata" "actor_robot"
"speed_walk" "0"
"speed_run" "0"
"turn_rate" "0"
"use_nav" "0"
"bleed" "0"
}

View file

@ -0,0 +1,12 @@
entityDef xen_hair
{
"spawnclass" "ncSurfacePropEntity"
"model" "models/hair.mdl"
"netname" "Xen Hair"
"health" "0"
"mins" "-8 -8 0"
"maxs" "8 8 32"
"propdata" "actor_alien"
"frame" "0"
// TODO Spawnflags 1 equals synchronized movement
}

View file

@ -0,0 +1,10 @@
entityDef xen_plantlight
{
"spawnclass" "ncSurfacePropEntity"
"model" "models/light.mdl"
"netname" "Xen Plant Light"
"health" "0"
"mins" "-48 -48 0"
"maxs" "48 48 32"
"propdata" "actor_alien"
}

Some files were not shown because too many files have changed in this diff Show more