Add invasion mode for testing AI, which has been expanded upon

This commit is contained in:
Marco Cawthorne 2024-10-31 03:53:02 -07:00
parent 4cf759db42
commit e9c0ab3fc8
1476 changed files with 4262 additions and 453 deletions

View file

@ -2,9 +2,9 @@
Clean-room reimplementation of Valve's Half-Life: Deathmatch and Half-Life (Experimental, this means Singleplayer is NOT complete).
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.
You can use the data files from the Steam version also, but don't expect authenticity. Also servers may or may not, depending on the level, be compatible between versions.
Similar to Tactical Retreat (FreeCS), this aims to recreate the feeling of the original game.
It's designed to work with the content from the Steam & CD version of the game.
There may be version mismatches between the different versions of Half-Life that you play. So you have to make sure you're running similar versions when hosting a game for someone.
Netplay improvements, such as prediction of both player physics and weapon-logic
are present.
@ -21,7 +21,7 @@ No proprietary SDKs have been looked at or taken apart, unlike similar projects.
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.
## Building
Clone the repository into the Nuclide-SDK and build it:
Clone the repository into the [Nuclide-SDK](https://developer.vera-visions.com) and build it:
```
$ git clone https://code.idtech.space/fn/valve valve
@ -60,7 +60,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-2024 Marco 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

View file

@ -25,9 +25,7 @@ ClientGame_EntityUpdate(float id, float new)
NSENTITY_READENTITY(HLWeapon, new)
break;
case ENT_PLAYER:
#ifdef GEARBOX
NSENTITY_READENTITY(OP4Player, new)
#elif SCIHUNT
#ifdef SCIHUNT
NSENTITY_READENTITY(SHPlayer, new)
#else
NSENTITY_READENTITY(HLPlayer, new)

View file

@ -1,5 +1,5 @@
#pragma target fte_5768
#pragma progs_dat "../../csprogs.dat"
#pragma progs_dat "../../zpak001.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT

View file

@ -4,3 +4,4 @@ all:
mkdir -pv ../../zpak001.pk3dir/progs/
$(QCC) deathmatch.qc
$(QCC) singleplayer.qc
$(QCC) invasion.qc

157
src/rules/invasion.qc Normal file
View file

@ -0,0 +1,157 @@
/*
* Copyright (c) 2024 Marco 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
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#pragma PROGS_DAT "../../zpak001.pk3dir/progs/invasion.dat"
#include "../../../src/server/api.h"
var string autocvar_invasion_monsterClass = "monster_zombie";
var int autocvar_invasion_monsterCount = 5;
void
WaveTimer_Tick(void)
{
int monsterCount = actor.TotalActors();
/* spawn a new monster */
if (monsterCount < autocvar_invasion_monsterCount) {
entity zombie = ents.Create(autocvar_invasion_monsterClass, [0,0,0]);
game.TeleportToSpawn(zombie);
ents.Input(zombie, "HordeOn", "", world);
}
self.nextthink = time + 2.0f;
}
bool
AllowFlashlight(void)
{
return cvars.GetBool("mp_flashlight");
}
void
CodeCallback_StartGameType(void)
{
ents.Precache(autocvar_invasion_monsterClass);
motd.LoadDefault();
game.SetSpawnPoint("info_player_deathmatch");
cvars.SetBool("coop", true);
teams.SetUp(1, "Military", [0, 255, 0], false);
teams.SetUp(2, "Aliens", [255, 0, 0], false);
teams.SetUp(3, "Players", [255, 255, 255], false);
teams.SetSpawnPoint(1, "info_player_deathmatch");
teams.SetSpawnPoint(2, "info_player_deathmatch");
teams.SetSpawnPoint(3, "info_player_deathmatch");
entity tick = spawn();
tick.think = WaveTimer_Tick;
tick.nextthink = time + 1.0f;
}
void
CodeCallback_PlayerSpawn(void)
{
string playerModel;
ents.ChangeToClass(self, "player_mp");
ents.Input(self, "SetTeam", "3", world);
/* interpret the 'model' InfoKey */
playerModel = userinfo.GetString(self, "model");
if (playerModel != "") {
playerModel = sprintf("models/player/%s/%s.mdl", playerModel, playerModel);
}
/* fallback is always models/player.mdl for Half-Life */
if (!STRING_SET(playerModel) || exists.InVFS(playerModel) == false) {
playerModel = "models/player.mdl";
}
self.modelindex = getmodelindex(playerModel); /* keep OG size */
game.TeleportToSpawn(self);
}
void
CodeCallback_PlayerDisconnect(void)
{
}
bool
CodeCallback_PlayerRequestRespawn(void)
{
CodeCallback_PlayerSpawn();
return (true);
}
void
CodeCallback_PlayerDamage(entity inflictor, entity attacker)
{
}
void
CodeCallback_PlayerKilled(entity inflictor, entity attacker, string weapon)
{
combat.Obituary(self.netname, attacker.netname, weapon, "");
/* death-counter */
self.deaths++;
/* update score-counter */
if (ents.isPlayer(attacker)) {
if (self == attacker) {
attacker.frags--;
} else {
attacker.frags++;
}
} else if (ents.isSentient(attacker)) {
teams.AddScore(attacker.team, 1);
}
}
void
CodeCallback_NPCKilled(entity inflictor, entity attacker, string weapon)
{
combat.Obituary(self.netname, attacker.netname, weapon, "");
/* update score-counter */
if (ents.isPlayer(attacker)) {
if (self == attacker) {
attacker.frags--;
} else {
attacker.frags++;
}
}
}
bool
CodeCallback_ImpulseCommand(float impulseNum)
{
switch (impulseNum) {
case 100:
if (AllowFlashlight() == true) {
ents.Input(self, "UseItem", "item_suit", self);
}
break;
default:
return (false);
}
return (true);
}

View file

@ -1,6 +1,6 @@
#pragma target fte_5768
//#pragma flag enable assumeint
#pragma progs_dat "../../progs.dat"
#pragma progs_dat "../../zpak001.pk3dir/progs.dat"
#define QWSSQC
#define SERVER

View file

@ -17,12 +17,18 @@
void
Game_InitRules(void)
{
string gameType = cvar_string("g_gametype");
FX_Corpse_Init();
if (cvar("sv_playerslots") == 1 || cvar("coop") == 1) {
g_grMode = NSGameRules::InitFromProgs("progs/singleplayer.dat");
if (STRING_SET(gameType)) {
g_grMode = NSGameRules::InitFromProgs(strcat("progs/", gameType, ".dat"));
} else {
g_grMode = NSGameRules::InitFromProgs("progs/deathmatch.dat");
if (cvar("sv_playerslots") == 1 || cvar("coop") == 1) {
g_grMode = NSGameRules::InitFromProgs("progs/singleplayer.dat");
} else {
g_grMode = NSGameRules::InitFromProgs("progs/deathmatch.dat");
}
}
}

View file

@ -34,7 +34,11 @@ FX_Corpse_Init(void)
for ( int i = 0; i <= CORPSES_MAX; i++ ) {
next.classname = "corpse";
next.owner = spawn(NSRagdoll);
if (autocvar_corpse_ragdolls)
next.owner = spawn(NSRagdoll);
else
next.owner = spawn(NSRenderableEntity);
if ( i == CORPSES_MAX ) {
next.owner = g_bodies;
@ -66,8 +70,15 @@ entity
FX_Corpse_Spawn(NSClientPlayer pl, float anim)
{
NSRagdoll body_next = (NSRagdoll)FX_Corpse_Next();
body_next.SetMovetype(MOVETYPE_BOUNCE);
body_next.SetSolid(SOLID_CORPSE);
if (autocvar_corpse_ragdolls) {
body_next.SetMovetype(MOVETYPE_PHYSICS);
body_next.SetSolid(SOLID_NOT);
} else {
body_next.SetMovetype(MOVETYPE_BOUNCE);
body_next.SetSolid(SOLID_CORPSE);
}
body_next.SetModelindex(pl.GetModelindex());
if (pl.IsCrouching()) {
@ -80,9 +91,11 @@ FX_Corpse_Spawn(NSClientPlayer pl, float anim)
body_next.SetAngles(pl.GetAngles());
body_next.SetVelocity(pl.GetVelocity() + [0,0,120]);
body_next.SetFrame(anim);
body_next.m_iBody = pl.m_iBody;
body_next.ScheduleThink(FX_Corpse_Update, 0.0f);
body_next.colormap = pl.colormap;
body_next.frame1time = 0.0f;
return (entity)body_next;
}
#endif

View file

@ -1,15 +1,15 @@
entityDef activities {
"act_reset" "0"
"act_idle" "1"
"act_guard" "2"
"act_walk" "3"
"act_run" "4"
"act_fly" "5"
"act_swim" "6"
"act_hop" "7"
"act_leap" "8"
"act_fall" "9"
"act_land" "10"
"act_reset" "0"
"act_idle" "1"
"act_guard" "2"
"act_walk" "3"
"act_run" "4"
"act_fly" "5"
"act_swim" "6"
"act_hop" "7"
"act_leap" "8"
"act_fall" "9"
"act_land" "10"
"act_strafeLeft" "11"
"act_strafeRight" "12"
"act_rollLeft" "13"
@ -18,13 +18,13 @@ entityDef activities {
"act_turnRight" "16"
"act_crouch" "17"
"act_crouchIdle" "18"
"act_stand" "19"
"act_use" "20"
"act_stand" "19"
"act_use" "20"
"act_signal1" "21"
"act_signal2" "22"
"act_signal3" "23"
"act_twitch" "24"
"act_cower" "25"
"act_cower" "25"
"act_smallFlinch" "26"
"act_bigFlinch" "27"
"act_rangeAttack1" "28"
@ -32,9 +32,9 @@ entityDef activities {
"act_meleeAttack1" "30"
"act_meleeAttack2" "31"
"act_reload" "32"
"act_arm" "33"
"act_arm" "33"
"act_disarm" "34"
"act_eat" "35"
"act_eat" "35"
"act_dieSimple" "36"
"act_dieBackward" "37"
"act_dieForward" "38"
@ -43,24 +43,24 @@ entityDef activities {
"act_barnaclePull" "41"
"act_barnacleChomp" "42"
"act_barnacleChew" "43"
"act_sleep" "44"
"act_sleep" "44"
"act_inspectFloor" "45"
"act_inspectWall" "46"
"act_idleAngry" "47"
"act_walkHurt" "48"
"act_runHurt" "49"
"act_hover" "50"
"act_glide" "51"
"act_hover" "50"
"act_glide" "51"
"act_flyLeft" "52"
"act_flyRight" "53"
"act_detectScent" "54"
"act_sniff" "55"
"act_bite" "56"
"act_sniff" "55"
"act_bite" "56"
"act_threatDisplay" "57"
"act_fearDisplay" "58"
"act_excited" "59"
"act_specialAttack1" "60"
"act_specialAttack2" "61"
"act_specialAttack1" "60"
"act_specialAttack2" "61"
"act_combatIdle" "62"
"act_walkScared" "63"
"act_runScared" "64"
@ -73,7 +73,7 @@ entityDef activities {
"act_flinchChest" "71"
"act_flinchStomach" "72"
"act_flinchLeftArm" "73"
"act_flinchRightArm" "74"
"act_flinchRightArm" "74"
"act_flinchLeftLeg" "75"
"act_flinchRightLeg" "76"
"act_flinchRightLeg" "76"
}

View file

@ -3,13 +3,45 @@ entityDef monster_alien_controller
"spawnclass" "NSTalkMonster"
"model" "models/controller.mdl"
"netname" "Alien Controller"
"health" "0"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"health" "skill:controller_health"
"mins" "-32 -32 0"
"maxs" "32 32 64"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "0"
"speed_run" "0"
}
"speed_walk" "100"
"speed_run" "500"
"flying" "1"
"fly_offset" "128"
"attack_ranged_range" "1024"
events {
// ranged attack
2 "SpawnProjectileOffset" "ranged_controller_ball 0 0 36"
3 "StartSoundDef" "Controller.Attack"
}
}
entityDef ranged_controller_ball
{
"spawnclass" "NSProjectile"
"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

@ -1,78 +1,99 @@
entityDef monster_alien_grunt
{
"spawnclass" "NSMonster"
"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_idle" "monster_alien_grunt.idle"
"snd_pain" "monster_alien_grunt.pain"
"snd_death" "monster_alien_grunt.pain"
"snd_melee_attack" "monster_alien_grunt.attack"
"snd_melee_attack_hit" "monster_zombie.attackhit"
"snd_melee_attack_miss" "monster_zombie.attackmiss"
"snd_thud" "monster_generic.thud"
// animation event callbacks
events {
1 "SpawnProjectileDef" "ranged_agrunt_shot"
1 "StartSoundDef" "weapon_hornetgun.fire"
2 "SpawnProjectileDef" "ranged_agrunt_shot"
2 "StartSoundDef" "weapon_hornetgun.fire"
3 "SpawnProjectileDef" "ranged_agrunt_shot"
3 "StartSoundDef" "weapon_hornetgun.fire"
4 "SpawnProjectileDef" "ranged_agrunt_shot"
4 "StartSoundDef" "weapon_hornetgun.fire"
5 "SpawnProjectileDef" "ranged_agrunt_shot"
5 "StartSoundDef" "weapon_hornetgun.fire"
10 "StartSoundDef" "monster_alien_grunt.step_left"
11 "StartSoundDef" "monster_alien_grunt.step_right"
}
}
entityDef melee_agrunt_punch
{
"damage" "skill:agrunt_dmg_punch"
"delay" "0.25f"
}
entityDef ranged_agrunt_shot
{
"spawnclass" "NSProjectile"
"model" "models/hornet.mdl"
entityDef monster_alien_grunt
{
"spawnclass" "NSMonster"
"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_idle" "monster_alien_grunt.idle"
"snd_pain" "monster_alien_grunt.pain"
"snd_death" "monster_alien_grunt.pain"
"snd_melee_attack" "monster_alien_grunt.attack"
"snd_melee_attack_hit" "monster_zombie.attackhit"
"snd_melee_attack_miss" "monster_zombie.attackmiss"
"snd_thud" "monster_generic.thud"
// animation event callbacks
events {
1 "SpawnProjectileDef" "ranged_agrunt_shot_orange"
1 "StartSoundDef" "weapon_hornetgun.fire"
2 "SpawnProjectileDef" "ranged_agrunt_shot_red"
2 "StartSoundDef" "weapon_hornetgun.fire"
3 "SpawnProjectileDef" "ranged_agrunt_shot_orange"
3 "StartSoundDef" "weapon_hornetgun.fire"
4 "SpawnProjectileDef" "ranged_agrunt_shot_red"
4 "StartSoundDef" "weapon_hornetgun.fire"
5 "SpawnProjectileDef" "ranged_agrunt_shot_orange"
5 "StartSoundDef" "weapon_hornetgun.fire"
10 "StartSoundDef" "monster_alien_grunt.step_left"
11 "StartSoundDef" "monster_alien_grunt.step_right"
}
}
entityDef melee_agrunt_punch
{
"damage" "skill:agrunt_dmg_punch"
"delay" "0.25f"
}
entityDef ranged_agrunt_shot_red
{
"spawnclass" "NSProjectile"
"model" "models/hornet.mdl"
"def_damage" "damage_hornetDirect"
"health" "0"
"velocity" "300"
"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"
"smoke_fly" "weapon_hornet.trail"
}
entityDef damage_hornetDirect
{
damage "skill:hornet_dmg"
}
"health" "0"
"velocity" "600"
"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"
"smoke_fly" "weapon_hornet.red_trail"
}
entityDef ranged_agrunt_shot_orange
{
"spawnclass" "NSProjectile"
"model" "models/hornet.mdl"
"def_damage" "damage_hornetDirect"
"health" "0"
"velocity" "800"
"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"
"smoke_fly" "weapon_hornet.trail"
"trackEnemy" "1"
"trackJitter" "8 16 16"
"trackDelay" "0.1"
}
entityDef damage_hornetDirect
{
damage "skill:hornet_dmg"
}

View file

@ -1,25 +1,101 @@
entityDef monster_alien_slave
{
"spawnclass" "NSMonster"
"spawnclass" "NSMonster"
"model" "models/islave.mdl"
"netname" "Vortigaunt"
"health" "skill:islave_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "72"
"speed_walk" "72"
"speed_run" "72"
"def_attack_melee" "melee_islave_claw"
"melee_range" "96"
"def_attack_melee" "melee_islave_claw"
"melee_range" "96"
"attack_ranged_range" "512"
"snd_idle" "monster_alien_slave.idle"
"snd_pain" "monster_alien_slave.pain"
"snd_death" "monster_alien_slave.die"
"snd_thud" "monster_generic.thud"
// animation event callbacks
events {
1 "SpawnProjectileDef" "melee_islave_claw"
1 "StartSoundDef" "monster_alien_slave.claw"
2 "SpawnProjectileDef" "melee_islave_claw"
2 "StartSoundDef" "monster_alien_slave.claw"
// beam powerup, both left and right hand
3 "SpawnDefAttachment" "islave_beampowerup 0"
3 "SpawnDefAttachment" "islave_beampowerup 1"
// 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"
// 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" "NSProjectile"
"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

View file

@ -1,15 +1,27 @@
entityDef monster_apache
{
"spawnclass" "NSTalkMonster"
"model" "models/apache.mdl"
"spawnclass" "NSTalkMonster"
"model" "models/apache.mdl"
"netname" "Apache"
"health" "0"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"mins" "-32 -32 0"
"maxs" "32 32 64"
"eye_height" "0"
"team" "2"
"propdata" "actor_robot"
"speed_walk" "0"
"speed_run" "0"
}
"speed_walk" "200"
"speed_run" "200"
"flying" "1"
"fly_offset" "768"
// primary ranged attack
"def_attack_ranged" "ranged_hgrunt_mp5"
"snd_ranged_attack" "weapon_mp5.shoot"
"attack_ranged_range" "2048"
// special attack
"def_attack_special_1" "projectile_rocket"
"attack_special_range" "1024"
"projectile_delay" "1.0"
}

View file

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

View file

@ -1,49 +1,49 @@
entityDef monster_barney
{
"spawnclass" "NSTalkMonster"
"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"
"spawnclass" "NSTalkMonster"
"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"
"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"
"reload_count" "18"
"follow_on_use" "1"
"weapon_drawn" "0"
"body_on_draw" "1:2"
"speed_walk" "64"
"speed_run" "364"
"snd_pain" "monster_barney.pain"
"snd_death" "monster_barney.die"
"snd_ranged_attack" "weapon_glock.fire"
"snd_reload" "monster_human_grunt.reload"
"snd_thud" "monster_generic.thud"
"snd_pain" "monster_barney.pain"
"snd_death" "monster_barney.die"
"snd_ranged_attack" "weapon_glock.fire"
"snd_reload" "monster_human_grunt.reload"
"snd_thud" "monster_generic.thud"
"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_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"
"talk_unfollow" "!BA_WAIT"
"talk_follow" "!BA_OK"
"talk_stop_follow" "!BA_STOP"
"talk_deny_follow" "!BA_POK"
// pre-disaster
when "spawnflags" equals "256" {
@ -53,7 +53,8 @@ entityDef monster_barney
entityDef ranged_barney_shot
{
"inherit" "projectile_bullet_base"
"damage" "skill:hgrunt_pellets"
"delay" "0.5"
"delay" "0.5"
}

View file

@ -1,14 +1,98 @@
entityDef monster_bigmomma
{
"spawnclass" "NSMonster"
"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" "46"
"speed_run" "292"
}
entityDef monster_bigmomma
{
"spawnclass" "NSMonster"
"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" "NSProjectile"
"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

@ -13,7 +13,7 @@ entityDef monster_bullchicken
"speed_run" "72"
"attack_ranged_range" "512"
"attack_melee1_range" "86" // tailwhip
"attack_melee_range" "86" // tailwhip
"attack_melee2_range" "86" // bite
"def_attack_melee" "melee_bullchicken_tailwhip"
"def_attack_melee2" "melee_bullchicken_bite"

View file

@ -12,4 +12,7 @@ entityDef monster_cockroach
"speed_walk" "0"
"speed_run" "0"
}
}
TODO: coverhintnodeflags: FLESH | LOWLIGHT
TODO: OnSeenPlayer: MoveToCover

View file

@ -12,4 +12,5 @@ entityDef monster_flyer
"speed_walk" "64"
"speed_run" "364"
}
"flying" "1"
}

View file

@ -12,4 +12,5 @@ entityDef monster_flyer_flock
"speed_walk" "64"
"speed_run" "364"
}
"flying" "1"
}

View file

@ -1,14 +1,25 @@
entityDef monster_gargantua
{
"spawnclass" "NSMonster"
"model" "models/garg.mdl"
"netname" "Gargantua"
"health" "skill:gargantua_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"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"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "46"
"speed_run" "292"
"speed_run" "292"
events {
// attacks
1 "SpawnProjectileDef" "melee_gargantua"
5 "SpawnProjectileDef" "stomp_gargantua"
// sfx
3 "StartSoundDef" "monster_gargantua.step"
4 "StartSoundDef" "monster_gargantua.step"
6 "StartSoundDef" "monster_gargantua.breathe"
}
}

View file

@ -1,15 +1,15 @@
entityDef monster_gman
{
"spawnclass" "NSTalkMonster"
"spawnclass" "NSTalkMonster"
"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

@ -1,15 +1,39 @@
entityDef monster_human_assassin
{
"spawnclass" "NSTalkMonster"
"model" "models/hassassin.mdl"
"netname" "Assassin"
"health" "0"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "0"
"propdata" "actor_human"
"spawnclass" "NSTalkMonster"
"model" "models/hassassin.mdl"
"netname" "Assassin"
"health" "skill:hassassin_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "1"
"propdata" "actor_human"
"speed_walk" "64"
"speed_run" "364"
}
"attack_ranged_range" "512"
"attack_melee_range" "86"
"def_attack_melee" "melee_hassassin_kick"
"speed_walk" "0"
"speed_run" "364"
"snd_thud" "monster_generic.thud"
// animation event callbacks
events {
1 "SpawnProjectileDef" "ranged_hassassin_shot"
1 "StartSoundDef" "monster_human_assassin.fire"
}
}
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

@ -1,143 +1,154 @@
entityDef monster_human_grunt
{
"spawnclass" "NSSquadMonster"
"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" "monster_human_grunt.kick"
// primary ranged attack
"def_attack_ranged" "ranged_hgrunt_mp5"
"snd_ranged_attack" "weapon_mp5.shoot"
"attack_ranged_range" "1024"
"reload_count" "30"
// special attack
"def_attack_special_1" "projectile_hgrunt_grenade"
"attack_special_range" "1024"
"projectile_delay" "1.0"
"snd_idle" "monster_human_grunt.idle"
"snd_pain" "monster_human_grunt.pain"
"snd_death" "monster_human_grunt.die"
"snd_reload" "monster_human_grunt.reload"
"snd_thud" "monster_generic.thud"
"weapons" "3"
"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" "weapon_shotgun.single"
"def_attack_ranged" "ranged_hgrunt_shot"
}
when "spawnflags" contains 32 {
"squad_leader" "1"
}
}
entityDef melee_hgrunt_kick
{
"damage" "skill:hgrunt_kick"
"delay" "0.25"
}
entityDef ranged_hgrunt_mp5
{
"damage" "skill:hgrunt_pellets"
"burst" "3"
"burst_delay" "0.5"
"delay" "0.1"
}
entityDef ranged_hgrunt_shot
{
"damage" "skill:hgrunt_pellets"
"delay" "1.0"
}
entityDef projectile_hgrunt_ARgrenade
{
"spawnclass" "NSProjectile"
"model" "models/grenade.mdl"
entityDef monster_human_grunt
{
"spawnclass" "NSSquadMonster"
"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" "monster_human_grunt.kick"
// primary ranged attack
"def_attack_ranged" "ranged_hgrunt_mp5"
"snd_ranged_attack" "Weapon_MP5.Single"
"attack_ranged_range" "1024"
"reload_count" "30"
// special attack
"def_attack_special_1" "projectile_hgrunt_grenade"
"attack_special_range" "1024"
"projectile_delay" "1.0"
"snd_idle" "monster_human_grunt.idle"
"snd_pain" "HGrunt.Pain"
"snd_death" "HGrunt.Die"
"snd_reload" "HGrunt.Reload"
"weapons" "3"
"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" "weapon_shotgun.single"
"def_attack_ranged" "ranged_hgrunt_shot"
}
when "spawnflags" contains 32 {
"squad_leader" "1"
}
// animation event callbacks
events {
2 "StartSoundDef" "HGrunt.Reload"
}
}
entityDef melee_hgrunt_kick
{
"spawnclass" "NSProjectile"
"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" "NSProjectile"
"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"
"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" "NSProjectile"
"model" "models/w_grenade.mdl"
"snd_bounce" "weapon_handgrenade.bounce"
}
entityDef projectile_hgrunt_grenade
{
"spawnclass" "NSProjectile"
"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"
"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" "weapon_handgrenade.explode"
"snd_bounce" "weapon_handgrenade.bounce"
}
entityDef damage_grenadeSplash
{
"damage" "150"
"radius" "160"
}
"snd_bounce" "weapon_handgrenade.bounce"
}
entityDef damage_grenadeSplash
{
"damage" "150"
"radius" "160"
}

View file

@ -1,15 +1,28 @@
entityDef monster_leech
{
"spawnclass" "NSTalkMonster"
"model" "models/leech.mdl"
"netname" "Leech"
"health" "0"
"mins" "-8 -8 0"
"maxs" "8 8 8"
"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"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "0"
"speed_run" "0"
}
"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

@ -1,15 +1,16 @@
entityDef monster_miniturret
{
"spawnclass" "NSTalkMonster"
"model" "models/miniturret.mdl"
"netname" "Mini-Turret"
"health" "skill:miniturret_health"
"mins" "-16 -16 0"
"maxs" "16 16 16"
"eye_height" "64"
"team" "2"
"propdata" "actor_robot"
"spawnclass" "NSTalkMonster"
"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"
"speed_walk" "0"
"speed_run" "0"
"static" "1"
}

View file

@ -12,4 +12,5 @@ entityDef monster_nihilanth
"speed_walk" "0"
"speed_run" "0"
}
"flying" "1"
}

View file

@ -12,4 +12,5 @@ entityDef monster_osprey
"speed_walk" "0"
"speed_run" "0"
}
"flying" "1"
}

View file

@ -1,15 +1,42 @@
entityDef monster_sentry
{
"spawnclass" "NSTalkMonster"
"model" "models/sentry.mdl"
"spawnclass" "NSTalkMonster"
"model" "models/sentry.mdl"
"netname" "Turret"
"health" "skill:sentry_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "1"
"propdata" "actor_robot"
"speed_walk" "0"
"def_attack_ranged" "ranged_sentry_shot"
"attack_ranged_range" "1024"
"snd_idle" "monster_sentry.combatIdle"
"snd_death" "monster_sentry.die"
"snd_ranged_attack" "monster_sentry.fire"
"snd_thud" "monster_generic.thud"
"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"
}
}
entityDef ranged_sentry_shot
{
"inherit" "projectile_bullet_base"
"damage" "skill:hgrunt_pellets"
"delay" "0.1"
"attempts" "8"
"wait" "2"
}

View file

@ -1,15 +1,16 @@
entityDef monster_turret
{
"spawnclass" "NSTalkMonster"
"model" "models/turret.mdl"
"spawnclass" "NSTalkMonster"
"model" "models/turret.mdl"
"netname" "Turret"
"health" "skill:turret_health"
"mins" "-16 -16 0"
"maxs" "16 16 32"
"eye_height" "64"
"team" "2"
"mins" "-16 -16 0"
"maxs" "16 16 32"
"eye_height" "64"
"team" "1"
"propdata" "actor_robot"
"speed_walk" "0"
"speed_walk" "0"
"speed_run" "0"
}
"static" "1"
}

View file

@ -1,35 +1,44 @@
entityDef monster_zombie
{
"spawnclass" "NSMonster"
"model" "models/zombie.mdl"
"netname" "Zombie"
"health" "skill:zombie_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"model" "models/zombie.mdl"
"netname" "Zombie"
"health" "skill:zombie_health"
"mins" "-16 -16 0"
"maxs" "16 16 72"
"eye_height" "64"
"team" "2"
"propdata" "actor_alien"
"team" "2"
"propdata" "actor_alien"
"speed_walk" "72"
"speed_run" "72"
"speed_run" "72"
"def_attack_melee" "melee_zombie_stab"
"melee_range" "96"
"act_smallFlinch" "3"
"act_bigFlinch" "5"
"act_flinchHead" "4"
"act_flinchChest" "4"
"act_flinchStomach" "4"
"act_flinchLeftArm" "11"
"act_flinchRightArm" "12"
"act_flinchLeftLeg" "13"
"act_flinchRightLeg" "14"
"def_attack_melee" "melee_zombie_stab"
"melee_range" "96"
"snd_sight" "monster_zombie.alert"
"snd_idle" "monster_zombie.idle"
"snd_pain" "monster_zombie.pain"
"snd_death" ""
"snd_melee_attack" "monster_zombie.attack"
"snd_sight" "monster_zombie.alert"
"snd_idle" "monster_zombie.idle"
"snd_pain" "monster_zombie.pain"
"snd_death" ""
"snd_melee_attack" "monster_zombie.attack"
"snd_melee_attack_hit" "monster_zombie.attackhit"
"snd_melee_attack_miss" "monster_zombie.attackmiss"
"snd_thud" "monster_generic.thud"
"snd_thud" "monster_generic.thud"
}
entityDef melee_zombie_stab
{
"damage" "skill:zombie_dmg_one_slash"
"delay" "0.25f"
"wait" "0.5"
"attempts" "2"
"damage" "skill:zombie_dmg_one_slash"
"delay" "0.5"
"wait" "0.5"
"attempts" "2"
}

View file

@ -110,7 +110,7 @@ entityDef projectile_9mmAR_mp
{
"inherit" "projectile_bullet_base"
"damage" "skill:plr_9mmAR_bullet"
"spread" "0.5 0.5"
"spread" "0.05 0.05"
}
entityDef fireInfo_9mmAR_mp

View file

@ -42,6 +42,7 @@ entityDef projectile_crowbar
"spawnclass" "NSProjectile"
"damage" "skill:plr_crowbar"
"is_bullet" "1"
"range" "32"
"decal_impact" "Impact.Shot"
"detonate_on_world" "1"
"snd_hitBody" "Weapon_Crowbar.Melee_Hit"

View file

@ -159,44 +159,72 @@ monster_barney.pain
sample barney/ba_pain1.wav
}
monster_bigmomma.alert
NPC_BigMomma.SpitTouch1
{
sample bullchicken/bc_acid1.wav
}
NPC_BigMomma.SpitHit1
{
sample bullchicken/bc_spithit1.wav
}
NPC_BigMomma.SpitHit2
{
sample bullchicken/bc_spithit2.wav
}
BigMomma.Alert
{
sample gonarch/gon_alert1.wav
sample gonarch/gon_alert2.wav
sample gonarch/gon_alert3.wav
}
// the groans for when she spits?
monster_bigmomma.attack
BigMomma.Attack
{
sample gonarch/gon_attack1.wav
sample gonarch/gon_attack2.wav
sample gonarch/gon_attack3.wav
}
/ mourns the death of her children
monster_bigmomma.child
// She mourns when her children die, who wouldn't?
BigMomma.ChildDie
{
sample gonarch/gon_childdie1.wav
sample gonarch/gon_childdie2.wav
sample gonarch/gon_childdie3.wav
}
monster_bigmomma.die
BigMomma.Die
{
sample gonarch/gon_die1.wav
sample gonarch/gon_die2.wav
sample gonarch/gon_die3.wav
}
monster_bigmomma.idle
BigMomma.Sack
{
sample gonarch/gon_sack1.wav
sample gonarch/gon_sack2.wav
sample gonarch/gon_sack3.wav
}
monster_bigmomma.pain
BigMomma.Birth
{
sample gonarch/gon_sack1.wav
sample gonarch/gon_sack2.wav
sample gonarch/gon_sack3.wav
}
BigMomma.LaunchMortar
{
sample gonarch/gon_sack1.wav
sample gonarch/gon_sack2.wav
sample gonarch/gon_sack3.wav
}
BigMomma.Pain
{
sample gonarch/gon_pain2.wav
sample gonarch/gon_pain3.wav
@ -205,7 +233,15 @@ monster_bigmomma.pain
}
// has unique foot step sounds
monster_bigmomma.step
BigMomma.FootstepLeft
{
sample gonarch/gon_step1.wav
sample gonarch/gon_step2.wav
sample gonarch/gon_step3.wav
}
// HL:S does this
BigMomma.FootstepRight
{
sample gonarch/gon_step1.wav
sample gonarch/gon_step2.wav

View file

@ -0,0 +1,9 @@
set hostname "Rad-Therapy Server"
set maxplayers "8"
set con_color "255 150 0"
set vgui_color "255 170 0"
set cross_color "0 255 0"
set con_textfont "CONCHARS?fmt=hl"
set con_textsize "-12"

View file

@ -0,0 +1,2 @@
path fonts/nimbus/NimbusSanL-Bol.otf
size 14

View file

@ -0,0 +1,6 @@
{
{
map $whiteimage
rgbGen const (0.25 0.25 0.25)
}
}

View file

@ -0,0 +1,3 @@
Flag Icons by Mark James <mjames@gmail.com>
https://github.com/markjames/famfamfam-flag-icons
http://www.famfamfam.com/lab/icons/flags/

BIN
zpak001.pk3dir/gfx/flags16/ad.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

BIN
zpak001.pk3dir/gfx/flags16/ae.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

BIN
zpak001.pk3dir/gfx/flags16/af.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

BIN
zpak001.pk3dir/gfx/flags16/ag.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

BIN
zpak001.pk3dir/gfx/flags16/ai.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

BIN
zpak001.pk3dir/gfx/flags16/al.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

BIN
zpak001.pk3dir/gfx/flags16/am.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

BIN
zpak001.pk3dir/gfx/flags16/an.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

BIN
zpak001.pk3dir/gfx/flags16/ar.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

BIN
zpak001.pk3dir/gfx/flags16/as.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

BIN
zpak001.pk3dir/gfx/flags16/at.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

BIN
zpak001.pk3dir/gfx/flags16/au.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
zpak001.pk3dir/gfx/flags16/aw.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

BIN
zpak001.pk3dir/gfx/flags16/ax.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

BIN
zpak001.pk3dir/gfx/flags16/az.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
zpak001.pk3dir/gfx/flags16/ba.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

BIN
zpak001.pk3dir/gfx/flags16/bb.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

BIN
zpak001.pk3dir/gfx/flags16/bd.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

BIN
zpak001.pk3dir/gfx/flags16/be.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

BIN
zpak001.pk3dir/gfx/flags16/bf.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

BIN
zpak001.pk3dir/gfx/flags16/bg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

BIN
zpak001.pk3dir/gfx/flags16/bh.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

BIN
zpak001.pk3dir/gfx/flags16/bi.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

BIN
zpak001.pk3dir/gfx/flags16/bj.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

BIN
zpak001.pk3dir/gfx/flags16/bm.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

BIN
zpak001.pk3dir/gfx/flags16/bn.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

BIN
zpak001.pk3dir/gfx/flags16/bo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

BIN
zpak001.pk3dir/gfx/flags16/br.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

BIN
zpak001.pk3dir/gfx/flags16/bs.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

BIN
zpak001.pk3dir/gfx/flags16/bt.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

BIN
zpak001.pk3dir/gfx/flags16/bv.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

BIN
zpak001.pk3dir/gfx/flags16/bw.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

BIN
zpak001.pk3dir/gfx/flags16/by.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

BIN
zpak001.pk3dir/gfx/flags16/bz.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

BIN
zpak001.pk3dir/gfx/flags16/ca.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

BIN
zpak001.pk3dir/gfx/flags16/cc.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

BIN
zpak001.pk3dir/gfx/flags16/cf.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

BIN
zpak001.pk3dir/gfx/flags16/cg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

BIN
zpak001.pk3dir/gfx/flags16/ch.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

BIN
zpak001.pk3dir/gfx/flags16/ci.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

BIN
zpak001.pk3dir/gfx/flags16/ck.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

BIN
zpak001.pk3dir/gfx/flags16/cl.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

BIN
zpak001.pk3dir/gfx/flags16/cm.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

BIN
zpak001.pk3dir/gfx/flags16/cn.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

BIN
zpak001.pk3dir/gfx/flags16/co.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

BIN
zpak001.pk3dir/gfx/flags16/cr.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

BIN
zpak001.pk3dir/gfx/flags16/cs.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

BIN
zpak001.pk3dir/gfx/flags16/cu.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

BIN
zpak001.pk3dir/gfx/flags16/cv.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

BIN
zpak001.pk3dir/gfx/flags16/cx.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

BIN
zpak001.pk3dir/gfx/flags16/cy.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

BIN
zpak001.pk3dir/gfx/flags16/cz.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

BIN
zpak001.pk3dir/gfx/flags16/de.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

BIN
zpak001.pk3dir/gfx/flags16/dj.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

BIN
zpak001.pk3dir/gfx/flags16/dk.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

BIN
zpak001.pk3dir/gfx/flags16/dm.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

BIN
zpak001.pk3dir/gfx/flags16/do.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

BIN
zpak001.pk3dir/gfx/flags16/dz.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

BIN
zpak001.pk3dir/gfx/flags16/ec.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

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