Add invasion mode for testing AI, which has been expanded upon
10
README.md
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#pragma target fte_5768
|
||||
#pragma progs_dat "../../csprogs.dat"
|
||||
#pragma progs_dat "../../zpak001.pk3dir/csprogs.dat"
|
||||
|
||||
#define CSQC
|
||||
#define CLIENT
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -12,4 +12,7 @@ entityDef monster_cockroach
|
|||
|
||||
"speed_walk" "0"
|
||||
"speed_run" "0"
|
||||
}
|
||||
}
|
||||
|
||||
TODO: coverhintnodeflags: FLESH | LOWLIGHT
|
||||
TODO: OnSeenPlayer: MoveToCover
|
||||
|
|
|
@ -12,4 +12,5 @@ entityDef monster_flyer
|
|||
|
||||
"speed_walk" "64"
|
||||
"speed_run" "364"
|
||||
}
|
||||
"flying" "1"
|
||||
}
|
||||
|
|
|
@ -12,4 +12,5 @@ entityDef monster_flyer_flock
|
|||
|
||||
"speed_walk" "64"
|
||||
"speed_run" "364"
|
||||
}
|
||||
"flying" "1"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -12,4 +12,5 @@ entityDef monster_nihilanth
|
|||
|
||||
"speed_walk" "0"
|
||||
"speed_run" "0"
|
||||
}
|
||||
"flying" "1"
|
||||
}
|
||||
|
|
|
@ -12,4 +12,5 @@ entityDef monster_osprey
|
|||
|
||||
"speed_walk" "0"
|
||||
"speed_run" "0"
|
||||
}
|
||||
"flying" "1"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
9
zpak001.pk3dir/default_valve.cfg
Normal 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"
|
2
zpak001.pk3dir/fonts/menu_button.font
Normal file
|
@ -0,0 +1,2 @@
|
|||
path fonts/nimbus/NimbusSanL-Bol.otf
|
||||
size 14
|
6
zpak001.pk3dir/gfx/background.mat
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
{
|
||||
map $whiteimage
|
||||
rgbGen const (0.25 0.25 0.25)
|
||||
}
|
||||
}
|
3
zpak001.pk3dir/gfx/flags16/CREDITS
Normal 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
After Width: | Height: | Size: 643 B |
BIN
zpak001.pk3dir/gfx/flags16/ae.png
Executable file
After Width: | Height: | Size: 408 B |
BIN
zpak001.pk3dir/gfx/flags16/af.png
Executable file
After Width: | Height: | Size: 604 B |
BIN
zpak001.pk3dir/gfx/flags16/ag.png
Executable file
After Width: | Height: | Size: 591 B |
BIN
zpak001.pk3dir/gfx/flags16/ai.png
Executable file
After Width: | Height: | Size: 643 B |
BIN
zpak001.pk3dir/gfx/flags16/al.png
Executable file
After Width: | Height: | Size: 600 B |
BIN
zpak001.pk3dir/gfx/flags16/am.png
Executable file
After Width: | Height: | Size: 497 B |
BIN
zpak001.pk3dir/gfx/flags16/an.png
Executable file
After Width: | Height: | Size: 488 B |
BIN
zpak001.pk3dir/gfx/flags16/ao.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
zpak001.pk3dir/gfx/flags16/ar.png
Executable file
After Width: | Height: | Size: 506 B |
BIN
zpak001.pk3dir/gfx/flags16/as.png
Executable file
After Width: | Height: | Size: 647 B |
BIN
zpak001.pk3dir/gfx/flags16/at.png
Executable file
After Width: | Height: | Size: 403 B |
BIN
zpak001.pk3dir/gfx/flags16/au.png
Executable file
After Width: | Height: | Size: 673 B |
BIN
zpak001.pk3dir/gfx/flags16/aw.png
Executable file
After Width: | Height: | Size: 524 B |
BIN
zpak001.pk3dir/gfx/flags16/ax.png
Executable file
After Width: | Height: | Size: 663 B |
BIN
zpak001.pk3dir/gfx/flags16/az.png
Executable file
After Width: | Height: | Size: 589 B |
BIN
zpak001.pk3dir/gfx/flags16/ba.png
Executable file
After Width: | Height: | Size: 593 B |
BIN
zpak001.pk3dir/gfx/flags16/bb.png
Executable file
After Width: | Height: | Size: 585 B |
BIN
zpak001.pk3dir/gfx/flags16/bd.png
Executable file
After Width: | Height: | Size: 504 B |
BIN
zpak001.pk3dir/gfx/flags16/be.png
Executable file
After Width: | Height: | Size: 449 B |
BIN
zpak001.pk3dir/gfx/flags16/bf.png
Executable file
After Width: | Height: | Size: 497 B |
BIN
zpak001.pk3dir/gfx/flags16/bg.png
Executable file
After Width: | Height: | Size: 462 B |
BIN
zpak001.pk3dir/gfx/flags16/bh.png
Executable file
After Width: | Height: | Size: 457 B |
BIN
zpak001.pk3dir/gfx/flags16/bi.png
Executable file
After Width: | Height: | Size: 675 B |
BIN
zpak001.pk3dir/gfx/flags16/bj.png
Executable file
After Width: | Height: | Size: 486 B |
BIN
zpak001.pk3dir/gfx/flags16/bm.png
Executable file
After Width: | Height: | Size: 611 B |
BIN
zpak001.pk3dir/gfx/flags16/bn.png
Executable file
After Width: | Height: | Size: 639 B |
BIN
zpak001.pk3dir/gfx/flags16/bo.png
Executable file
After Width: | Height: | Size: 500 B |
BIN
zpak001.pk3dir/gfx/flags16/br.png
Executable file
After Width: | Height: | Size: 593 B |
BIN
zpak001.pk3dir/gfx/flags16/bs.png
Executable file
After Width: | Height: | Size: 526 B |
BIN
zpak001.pk3dir/gfx/flags16/bt.png
Executable file
After Width: | Height: | Size: 631 B |
BIN
zpak001.pk3dir/gfx/flags16/bv.png
Executable file
After Width: | Height: | Size: 512 B |
BIN
zpak001.pk3dir/gfx/flags16/bw.png
Executable file
After Width: | Height: | Size: 443 B |
BIN
zpak001.pk3dir/gfx/flags16/by.png
Executable file
After Width: | Height: | Size: 514 B |
BIN
zpak001.pk3dir/gfx/flags16/bz.png
Executable file
After Width: | Height: | Size: 600 B |
BIN
zpak001.pk3dir/gfx/flags16/ca.png
Executable file
After Width: | Height: | Size: 628 B |
BIN
zpak001.pk3dir/gfx/flags16/catalonia.png
Normal file
After Width: | Height: | Size: 398 B |
BIN
zpak001.pk3dir/gfx/flags16/cc.png
Executable file
After Width: | Height: | Size: 625 B |
BIN
zpak001.pk3dir/gfx/flags16/cd.png
Normal file
After Width: | Height: | Size: 528 B |
BIN
zpak001.pk3dir/gfx/flags16/cf.png
Executable file
After Width: | Height: | Size: 614 B |
BIN
zpak001.pk3dir/gfx/flags16/cg.png
Executable file
After Width: | Height: | Size: 521 B |
BIN
zpak001.pk3dir/gfx/flags16/ch.png
Executable file
After Width: | Height: | Size: 367 B |
BIN
zpak001.pk3dir/gfx/flags16/ci.png
Executable file
After Width: | Height: | Size: 453 B |
BIN
zpak001.pk3dir/gfx/flags16/ck.png
Executable file
After Width: | Height: | Size: 586 B |
BIN
zpak001.pk3dir/gfx/flags16/cl.png
Executable file
After Width: | Height: | Size: 450 B |
BIN
zpak001.pk3dir/gfx/flags16/cm.png
Executable file
After Width: | Height: | Size: 525 B |
BIN
zpak001.pk3dir/gfx/flags16/cn.png
Executable file
After Width: | Height: | Size: 472 B |
BIN
zpak001.pk3dir/gfx/flags16/co.png
Executable file
After Width: | Height: | Size: 483 B |
BIN
zpak001.pk3dir/gfx/flags16/cr.png
Executable file
After Width: | Height: | Size: 477 B |
BIN
zpak001.pk3dir/gfx/flags16/cs.png
Executable file
After Width: | Height: | Size: 439 B |
BIN
zpak001.pk3dir/gfx/flags16/cu.png
Executable file
After Width: | Height: | Size: 563 B |
BIN
zpak001.pk3dir/gfx/flags16/cv.png
Executable file
After Width: | Height: | Size: 529 B |
BIN
zpak001.pk3dir/gfx/flags16/cx.png
Executable file
After Width: | Height: | Size: 608 B |
BIN
zpak001.pk3dir/gfx/flags16/cy.png
Executable file
After Width: | Height: | Size: 428 B |
BIN
zpak001.pk3dir/gfx/flags16/cz.png
Executable file
After Width: | Height: | Size: 476 B |
BIN
zpak001.pk3dir/gfx/flags16/de.png
Executable file
After Width: | Height: | Size: 545 B |
BIN
zpak001.pk3dir/gfx/flags16/dj.png
Executable file
After Width: | Height: | Size: 572 B |
BIN
zpak001.pk3dir/gfx/flags16/dk.png
Executable file
After Width: | Height: | Size: 495 B |
BIN
zpak001.pk3dir/gfx/flags16/dm.png
Executable file
After Width: | Height: | Size: 620 B |
BIN
zpak001.pk3dir/gfx/flags16/do.png
Executable file
After Width: | Height: | Size: 508 B |
BIN
zpak001.pk3dir/gfx/flags16/dz.png
Executable file
After Width: | Height: | Size: 582 B |
BIN
zpak001.pk3dir/gfx/flags16/ec.png
Executable file
After Width: | Height: | Size: 500 B |