From f3596f2aef926091a0a1441bbd459f07e8782cec Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Sat, 2 Mar 2024 00:43:10 -0800 Subject: [PATCH] Corpses: Ensure frame1time is reset whenever we inherit someones corpse. Items: Ensure we re-adjust our position post-spawn so we don't fall through yet-to-spawn geometry. Delete a whole bunch of now unused code. --- src/client/game_event.qc | 4 +- src/client/hud_sprite.qc | 6 +- src/client/hud_weaponselect.qc | 21 +- src/server/ammo.qc | 9 +- src/server/item_suit.qc | 39 ++- src/server/monster_alien_controller.qc | 121 --------- src/server/monster_alien_grunt.qc | 146 ----------- src/server/monster_alien_slave.qc | 246 ------------------ src/server/monster_apache.qc | 47 ---- src/server/monster_babycrab.qc | 33 --- src/server/monster_barnacle.qc | 77 ------ src/server/monster_barney.qc | 237 ----------------- src/server/monster_barney_dead.qc | 73 ------ src/server/monster_bigmomma.qc | 131 ---------- src/server/monster_bloater.qc | 36 --- src/server/monster_bullchicken.qc | 154 ----------- src/server/monster_cockroach.qc | 53 ---- src/server/monster_flyer_flock.qc | 36 --- src/server/monster_gargantua.qc | 137 ---------- src/server/monster_gman.qc | 86 ------ src/server/monster_headcrab.qc | 173 ------------ src/server/monster_hevsuit_dead.qc | 87 ------- src/server/monster_hgrunt_dead.qc | 86 ------ src/server/monster_houndeye.qc | 241 ----------------- src/server/monster_human_assassin.qc | 102 -------- src/server/monster_ichthyosaur.qc | 144 ---------- src/server/monster_leech.qc | 91 ------- src/server/monster_miniturret.qc | 55 ---- src/server/monster_nihilanth.qc | 142 ---------- src/server/monster_osprey.qc | 52 ---- src/server/monster_rat.qc | 48 ---- src/server/monster_scientist.qc | 222 ---------------- src/server/monster_scientist_dead.qc | 121 --------- src/server/monster_sentry.qc | 87 ------- src/server/monster_sitting_scientist.qc | 140 ---------- src/server/monster_tentacle.qc | 139 ---------- src/server/monster_turret.qc | 54 ---- src/shared/fx_corpse.qc | 1 + src/shared/player.qc | 4 + src/shared/w_tripmine.qc | 29 ++- zpak001.pk3dir/def/monsters/scientist.def | 2 +- zpak001.pk3dir/def/weapons/357.def | 4 +- zpak001.pk3dir/def/weapons/9mmAR.def | 24 +- zpak001.pk3dir/def/weapons/9mmhandgun.def | 4 +- zpak001.pk3dir/def/weapons/crossbow.def | 22 +- zpak001.pk3dir/def/weapons/crowbar.def | 4 +- zpak001.pk3dir/def/weapons/egon.def | 4 +- zpak001.pk3dir/def/weapons/gauss.def | 4 +- zpak001.pk3dir/def/weapons/handgrenade.def | 16 +- zpak001.pk3dir/def/weapons/hornetgun.def | 4 +- zpak001.pk3dir/def/weapons/rpg.def | 42 +-- zpak001.pk3dir/def/weapons/satchel.def | 24 +- zpak001.pk3dir/def/weapons/shotgun.def | 4 +- zpak001.pk3dir/def/weapons/snark.def | 6 +- zpak001.pk3dir/def/weapons/tripmine.def | 10 +- zpak001.pk3dir/particles/fx_explosion.cfg | 24 +- zpak001.pk3dir/particles/fx_impact.cfg | 32 +-- zpak001.pk3dir/particles/fx_spark.cfg | 12 +- zpak001.pk3dir/particles/impact_default.cfg | 6 +- .../particles/impact_unbreakable.cfg | 12 +- zpak001.pk3dir/particles/weapon_9mmAR.cfg | 4 +- zpak001.pk3dir/sound/fx_valve.sndshd | 2 +- zpak001.pk3dir/sound/player.sndshd | 16 ++ 63 files changed, 218 insertions(+), 3774 deletions(-) delete mode 100644 src/server/monster_alien_controller.qc delete mode 100644 src/server/monster_alien_grunt.qc delete mode 100644 src/server/monster_alien_slave.qc delete mode 100644 src/server/monster_apache.qc delete mode 100644 src/server/monster_babycrab.qc delete mode 100644 src/server/monster_barnacle.qc delete mode 100644 src/server/monster_barney.qc delete mode 100644 src/server/monster_barney_dead.qc delete mode 100644 src/server/monster_bigmomma.qc delete mode 100644 src/server/monster_bloater.qc delete mode 100644 src/server/monster_bullchicken.qc delete mode 100644 src/server/monster_cockroach.qc delete mode 100644 src/server/monster_flyer_flock.qc delete mode 100644 src/server/monster_gargantua.qc delete mode 100644 src/server/monster_gman.qc delete mode 100644 src/server/monster_headcrab.qc delete mode 100644 src/server/monster_hevsuit_dead.qc delete mode 100644 src/server/monster_hgrunt_dead.qc delete mode 100644 src/server/monster_houndeye.qc delete mode 100644 src/server/monster_human_assassin.qc delete mode 100644 src/server/monster_ichthyosaur.qc delete mode 100644 src/server/monster_leech.qc delete mode 100644 src/server/monster_miniturret.qc delete mode 100644 src/server/monster_nihilanth.qc delete mode 100644 src/server/monster_osprey.qc delete mode 100644 src/server/monster_rat.qc delete mode 100644 src/server/monster_scientist.qc delete mode 100644 src/server/monster_scientist_dead.qc delete mode 100644 src/server/monster_sentry.qc delete mode 100644 src/server/monster_sitting_scientist.qc delete mode 100644 src/server/monster_tentacle.qc delete mode 100644 src/server/monster_turret.qc diff --git a/src/client/game_event.qc b/src/client/game_event.qc index 1328623..d4680bd 100644 --- a/src/client/game_event.qc +++ b/src/client/game_event.qc @@ -46,14 +46,14 @@ ClientGame_EventParse(float fHeader) float fTeam = readbyte(); string sMessage = readstring(); - CSQC_Parse_Print(sprintf("%s: %s", getplayerkeyvalue(fSender, "name"), sMessage), PRINT_CHAT); + CSQC_Parse_Print(Util_ChatFormat(fSender, 0, sMessage), PRINT_CHAT); break; case EV_CHAT_TEAM: float fSender2 = readbyte(); float fTeam2 = readbyte(); string sMessage2 = readstring(); - CSQC_Parse_Print(sprintf("[TEAM] %s: %s", getplayerkeyvalue(fSender2, "name"), sMessage2), PRINT_CHAT); + CSQC_Parse_Print(Util_ChatFormat(fSender2, fTeam2, sMessage2), PRINT_CHAT); break; case EV_VIEWMODEL: View_PlayAnimation(readbyte()); diff --git a/src/client/hud_sprite.qc b/src/client/hud_sprite.qc index 6fc4e5a..6c35fbb 100644 --- a/src/client/hud_sprite.qc +++ b/src/client/hud_sprite.qc @@ -38,7 +38,7 @@ HLSprite_Init(void) hudFile = fopen("sprites/hud.txt", FILE_READ); if (hudFile < 0) { - error("hud.txt was not found."); + NSError("Missing file sprites/hud.txt"); return; } @@ -91,7 +91,7 @@ HLSprite_Init(void) i++; } - print(sprintf("initialized %i HL sprites.\n", spriteCount)); + NSLog("...initialized %i HL sprites.", spriteCount); } void @@ -102,7 +102,7 @@ HLSprite_Draw_RGBA(string spriteName, vector spritePos, vector spriteColor, floa spriteNum = (int)hash_get(g_hashhlsprite, spriteName, -1i); if (spriteNum == -1i) { - print(sprintf("cannot draw sprite %S!\n", spriteName)); + NSError("Cannot draw sprite %S!", spriteName); return; } diff --git a/src/client/hud_weaponselect.qc b/src/client/hud_weaponselect.qc index 46af84f..df90a40 100644 --- a/src/client/hud_weaponselect.qc +++ b/src/client/hud_weaponselect.qc @@ -14,6 +14,8 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +void View_ForceChange(player pl, int targetWeapon); + vector g_vecHUDNums[6] = { [168 / 256, 72 / 128], @@ -52,9 +54,10 @@ HUD_DrawWeaponSelect_Forward(void) if (pSeat->m_flHUDWeaponSelectTime < time) { pSeat->m_iHUDWeaponSelected = pl.activeweapon; - Sound_Play(pSeat->m_ePlayer, CHAN_ITEM, "Player.WeaponSelectionOpen"); + pl.StartSoundDef("Player.WeaponSelectionOpen", CHAN_ITEM, false); } else { - Sound_Play(pSeat->m_ePlayer, CHAN_ITEM, "Player.WeaponSelectionMoveSlot"); + pl.StartSoundDef("Player.WeaponSelectionMoveSlot", CHAN_ITEM, false); + pSeat->m_iHUDWeaponSelected--; if (pSeat->m_iHUDWeaponSelected <= 0) { pSeat->m_iHUDWeaponSelected = g_weapons.length - 1; @@ -83,9 +86,10 @@ HUD_DrawWeaponSelect_Back(void) if (pSeat->m_flHUDWeaponSelectTime < time) { pSeat->m_iHUDWeaponSelected = pl.activeweapon; - Sound_Play(pSeat->m_ePlayer, CHAN_ITEM, "Player.WeaponSelectionOpen"); + pl.StartSoundDef("Player.WeaponSelectionOpen", CHAN_ITEM, false); } else { - Sound_Play(pSeat->m_ePlayer, CHAN_ITEM, "Player.WeaponSelectionMoveSlot"); + pl.StartSoundDef("Player.WeaponSelectionMoveSlot", CHAN_ITEM, false); + pSeat->m_iHUDWeaponSelected++; if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) { pSeat->m_iHUDWeaponSelected = 1; @@ -101,9 +105,6 @@ HUD_DrawWeaponSelect_Back(void) HUD_DrawWeaponSelect_Back(); } -void -View_ForceChange(player pl, int targetWeapon); - void HUD_DrawWeaponSelect_Trigger(void) { @@ -166,9 +167,9 @@ HUD_SlotSelect(int slot) } if (pSeat->m_flHUDWeaponSelectTime < time) { - Sound_Play(pSeat->m_ePlayer, CHAN_ITEM, "Player.WeaponSelectionOpen"); + pl.StartSoundDef("Player.WeaponSelectionOpen", CHAN_ITEM, false); } else { - Sound_Play(pSeat->m_ePlayer, CHAN_ITEM, "Player.WeaponSelectionMoveSlot"); + pl.StartSoundDef("Player WeaponSelectionMoveSlot", CHAN_ITEM, false); } /* weren't in that slot? select the first one then */ @@ -211,7 +212,7 @@ HUD_DrawWeaponSelect(void) } if (pSeat->m_flHUDWeaponSelectTime < time) { if (pSeat->m_iHUDWeaponSelected) { - Sound_Play(pSeat->m_ePlayer, CHAN_ITEM, "Player.WeaponSelectionClose"); + pl.StartSoundDef("Player WeaponSelectionClose", CHAN_ITEM, false); pSeat->m_iHUDWeaponSelected = 0; } return; diff --git a/src/server/ammo.qc b/src/server/ammo.qc index 3dd0976..1fae6c6 100644 --- a/src/server/ammo.qc +++ b/src/server/ammo.qc @@ -46,6 +46,13 @@ item_ammo::Touch(entity eToucher) void item_ammo::Respawn(void) { + static void AdjustSpawnPos(void) { + RestoreAngles(); + SetOrigin(GetSpawnOrigin()); + DropToFloor(); + SetMovetype(MOVETYPE_TOSS); + } + SetSolid(SOLID_TRIGGER); SetMovetype(MOVETYPE_TOSS); SetOrigin(GetSpawnOrigin()); @@ -57,7 +64,7 @@ item_ammo::Respawn(void) if (real_owner && time > 30.0f) Sound_Play(this, CHAN_ITEM, "ammo.respawn"); - droptofloor(); + ScheduleThink(AdjustSpawnPos, 0.0f); } void diff --git a/src/server/item_suit.qc b/src/server/item_suit.qc index cfad196..a04f52f 100644 --- a/src/server/item_suit.qc +++ b/src/server/item_suit.qc @@ -45,17 +45,19 @@ item_suit::Touch(entity eToucher) } player pl = (player)other; + if (pl.g_items & ITEM_SUIT) { return; } Logging_Pickup(other, this, __NULL__); - sound(other, CHAN_ITEM, "fvox/bell.wav", 1, ATTN_NORM); - sound(other, CHAN_VOICE, "fvox/hev_logon.wav", 1, ATTN_NORM); + StartSound("fvox/bell.wav", CHAN_ITEM, 0, true); + StartSound("fvox/hev_logon.wav", CHAN_VOICE, 0, true); + pl.g_items |= ITEM_SUIT; m_iValue = TRUE; - if (!target) { + if (HasTriggerTarget() == false) { UseOutput(other, m_strOnPlayerTouch); } else { UseTargets(other, TRIG_TOGGLE, m_flDelay); @@ -72,36 +74,45 @@ item_suit::Touch(entity eToucher) void item_suit::Respawn(void) { + /* we need to delay the DropToFloor() by at least a frame. + otherwise they may just fall through an entity (func_wall, func_train etc.) + that came after this entity in the lump. */ + static void AdjustSpawnPos(void) { + RestoreAngles(); + SetOrigin(GetSpawnOrigin()); + DropToFloor(); + SetMovetype(MOVETYPE_TOSS); + } + if (cvar_string("fs_game") == "bshift") { Destroy(); return; } SetSolid(SOLID_TRIGGER); - SetMovetype(MOVETYPE_TOSS); SetOrigin(GetSpawnOrigin()); + SetMovetype(MOVETYPE_TOSS); SetModel(GetSpawnModel()); SetSize(VEC_HULL_MIN + [0,0,36], VEC_HULL_MAX + [0,0,36]); m_iValue = FALSE; - ReleaseThink(); - - if (!real_owner && time > 30.0f) - Sound_Play(this, CHAN_ITEM, "item.respawn"); + if (!real_owner && time > 30.0f) { + StartSoundDef("item.respawn", CHAN_ITEM, true); + } - DropToFloor(); + ScheduleThink(AdjustSpawnPos, 0.0f); } void -item_suit::SpawnKey(string strKey, string strValue) +item_suit::SpawnKey(string keyName, string setValue) { - switch (strKey) { + switch (keyName) { case "OnPlayerTouch": - strValue = strreplace(",", ",_", strValue); - m_strOnPlayerTouch = strcat(m_strOnPlayerTouch, ",_", strValue); + setValue = strreplace(",", ",_", setValue); + m_strOnPlayerTouch = strcat(m_strOnPlayerTouch, ",_", setValue); break; default: - super::SpawnKey(strKey, strValue); + super::SpawnKey(keyName, setValue); break; } } diff --git a/src/server/monster_alien_controller.qc b/src/server/monster_alien_controller.qc deleted file mode 100644 index 942381a..0000000 --- a/src/server/monster_alien_controller.qc +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_alien_controller (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Alien Controller - -*/ - -enum -{ - CON_ATTACK, - CON_ATTACK2, - CON_THROW, - CON_IDLE2, - CON_BLOCK, - CON_SHOOT, - CON_FLINCH, - CON_FLINCH2, - CON_FALL, - CON_FORWARD, - CON_BACKWARD, - CON_UP, - CON_DOWN, - CON_RIGHT, - CON_LEFT, - CON_IDLE, - CON_UNUSED, - CON_UNUSED2, - CON_DIE -}; - -class monster_alien_controller:HLXenMonster -{ - float m_flIdleTime; - float m_flPainTime; - - void(void) monster_alien_controller; - - virtual void(void) HasBeenHit; - virtual void(void) HasBeenKilled; - virtual void(void) IdleNoise; - virtual void(void) Respawn; -}; - -void -monster_alien_controller::HasBeenHit(void) -{ - if (m_flPainTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_alien_controller.die"); - SetFrame(CON_FLINCH + floor(random(0, 2))); - m_flPainTime = time + 0.25f; -} - -void -monster_alien_controller::HasBeenKilled(void) -{ - /* if we're already dead (corpse) don't change animations */ - SetFrame(CON_DIE); - Sound_Play(this, CHAN_VOICE, "monster_alien_controller.die"); -} - -void -monster_alien_controller::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - m_flIdleTime = time + random(2,10); - - Sound_Play(this, CHAN_VOICE, "monster_alien_controller.idle"); -} - -void -monster_alien_controller::Respawn(void) -{ - super::Respawn(); - SetFrame(CON_IDLE); -} - -void -monster_alien_controller::monster_alien_controller(void) -{ - Sound_Precache("monster_alien_controller.alert"); - Sound_Precache("monster_alien_controller.attack"); - Sound_Precache("monster_alien_controller.die"); - Sound_Precache("monster_alien_controller.idle"); - Sound_Precache("monster_alien_controller.pain"); - netname = "Alien Controller"; - model = "models/controller.mdl"; - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; - m_iAlliance = MAL_ALIEN; -} diff --git a/src/server/monster_alien_grunt.qc b/src/server/monster_alien_grunt.qc deleted file mode 100644 index 393b9dc..0000000 --- a/src/server/monster_alien_grunt.qc +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_alien_grunt (0 0.8 0.8) (-32 -32 0) (32 32 64) - -HALF-LIFE (1998) ENTITY - -Alien Grunt - -*/ - -enum -{ - AG_IDLE, - AG_THREAT, - AG_WALK, - AG_RUN, - AG_LEFT, - AG_RIGHT, - AG_FLINCH, - AG_FLINCHBIG, - AG_ATTACK, - AG_ATTACK2, - AG_VICTORYSQUAT, - AG_VICTORYEAT, - AG_VICTORYSTAND, - AG_FLINCHARML, - AG_FLINCHLEGL, - AG_FLINCHARMR, - AG_FLINCHLEGR, - AG_SHOOTUP, - AG_SHOOTDOWN, - AG_SHOOT, - AG_SHOOTQUICK, - AG_SHOOTLONG, - AG_DIEHS, - AG_DIEGUT, - AG_DIEFORWARD, - AG_DIE, - AG_DIEBACK, - AG_FLOAT, - AG_SCARE, - AG_OPEN, - AG_SMASHRAIL, - AG_LAND -}; - -class monster_alien_grunt:HLXenMonster -{ - float m_flIdleTime; - float m_flPainTime; - - void(void) monster_alien_grunt; - - virtual void(void) HasBeenHit; - virtual void(void) HasBeenKilled; - virtual void(void) IdleNoise; - virtual void(void) Respawn; -}; - -void -monster_alien_grunt::HasBeenHit(void) -{ - if (m_flPainTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_alien_grunt.pain"); - SetFrame(AG_FLINCH + floor(random(0, 2))); - m_flPainTime = time + 0.25f; -} - -void -monster_alien_grunt::HasBeenKilled(void) -{ - - /* headshots == different animation */ - if (g_dmg_iHitBody == BODY_HEAD) { - if (random() < 0.5) { - SetFrame(AG_DIEHS); - } else { - SetFrame(AG_DIEFORWARD); - } - } else { - SetFrame(AG_DIE + floor(random(0, 2))); - } - - Sound_Play(this, CHAN_VOICE, "monster_alien_grunt.die"); -} - -void -monster_alien_grunt::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - m_flIdleTime = time + random(2,10); - - Sound_Play(this, CHAN_VOICE, "monster_alien_grunt.idle"); -} - -void -monster_alien_grunt::Respawn(void) -{ - super::Respawn(); - SetFrame(AG_IDLE); -} - -void -monster_alien_grunt::monster_alien_grunt(void) -{ - Sound_Precache("monster_alien_grunt.alert"); - Sound_Precache("monster_alien_grunt.attack"); - Sound_Precache("monster_alien_grunt.die"); - Sound_Precache("monster_alien_grunt.idle"); - Sound_Precache("monster_alien_grunt.pain"); - - netname = "Alien Grunt"; - model = "models/agrunt.mdl"; - base_mins = [-32,-32,0]; - base_maxs = [32,32,64]; - base_health = Skill_GetValue("agrunt_health", 90); - m_iAlliance = MAL_ALIEN; -} diff --git a/src/server/monster_alien_slave.qc b/src/server/monster_alien_slave.qc deleted file mode 100644 index 26fd640..0000000 --- a/src/server/monster_alien_slave.qc +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_alien_slave (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Alien Slave - -*/ - -enum -{ - SLV_IDLE, - SLV_IDLE2, - SLV_IDLE3, - SLV_CROUCH, - SLV_WALK, - SLV_WALK2, - SLV_RUN, - SLV_RIGHT, - SLV_LEFT, - SLV_JUMP, - SLV_STAIRUP, - SLV_ATTACK, - SLV_ATTACKZAP, - SLV_FLINCH, - SLV_FLINCHLA, - SLV_FLINCHRA, - SLV_FLINCHL, - SLV_FLINCHR, - SLV_DIEHS, - SLV_DIE, - SLV_DIEBACK, - SLV_DIEFORWARD, - SLV_COLLAR, - SLV_COLLAR2, - SLV_PUSHUP, - SLV_GRAB, - SLV_UPDOWN, - SLV_DOWNUP, - SLV_JIBBER, - SLV_JABBER -}; - -class monster_alien_slave:HLXenTalkMonster -{ - float m_flIdleTime; - float m_flPainTime; - - void(void) monster_alien_slave; - - virtual void(void) HasBeenKilled; - virtual void(void) HasBeenHit; - virtual void(void) IdleChat; - virtual void(void) Respawn; - - virtual int(void) AnimIdle; - virtual int(void) AnimWalk; - virtual int(void) AnimRun; - - virtual int(void) AttackMelee; - virtual void(void) AttackFlail; - - virtual int(void) AttackRanged; - virtual void(void) AttackBeam; -}; - -int -monster_alien_slave::AnimIdle(void) -{ - return SLV_IDLE; -} - -int -monster_alien_slave::AnimWalk(void) -{ - return SLV_WALK; -} - -int -monster_alien_slave::AnimRun(void) -{ - return SLV_RUN; -} - -int -monster_alien_slave::AttackMelee(void) -{ - /* visual */ - AnimPlay(SLV_ATTACK); - - m_flAttackThink = m_flAnimTime; - - /* functional */ - think = AttackFlail; - nextthink = time + 0.25f; - return (1); -} - -void -monster_alien_slave::AttackFlail(void) -{ - traceline(origin, m_eEnemy.origin, FALSE, this); - - if (trace_fraction >= 1.0 || trace_ent.takedamage != DAMAGE_YES) { - Sound_Play(this, CHAN_WEAPON, "monster_zombie.attackmiss"); - return; - } - - Damage_Apply(trace_ent, this, 25, 0, 0); - Sound_Play(this, CHAN_WEAPON, "monster_zombie.attackhit"); -} - -int -monster_alien_slave::AttackRanged(void) -{ - /* visual */ - AnimPlay(SLV_ATTACKZAP); - - m_flAttackThink = m_flAnimTime; - Sound_Play(this, CHAN_VOICE, "monster_alien_slave.attack_charge"); - - /* functional */ - think = AttackBeam; - nextthink = time + 1.5f; - return (1); -} - -void -monster_alien_slave::AttackBeam(void) -{ - traceline(origin, m_eEnemy.origin, FALSE, this); - Sound_Play(this, CHAN_WEAPON, "monster_alien_slave.attack_shoot"); - - if (trace_fraction >= 1.0 || trace_ent.takedamage != DAMAGE_YES) { - //Sound_Play(this, CHAN_WEAPON, "monster_zombie.attackmiss"); - return; - } - - Damage_Apply(trace_ent, this, 100, 0, 0); -} - -void -monster_alien_slave::IdleChat(void) -{ - if (m_flIdleTime > time) { - return; - } - - Sentence(m_talkIdle); - - m_flIdleTime = time + 5.0f + random(0,20); -} - -void -monster_alien_slave::HasBeenHit(void) -{ - if (m_flPainTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_alien_slave.pain"); - SetFrame(SLV_FLINCH + floor(random(0, 2))); - m_flPainTime = time + 0.25f; -} - -void -monster_alien_slave::HasBeenKilled(void) -{ - /* headshots == different animation */ - if (g_dmg_iHitBody == BODY_HEAD) { - if (random() < 0.5) { - SetFrame(SLV_DIEHS); - } else { - SetFrame(SLV_DIEBACK); - } - } else { - SetFrame(SLV_DIE + floor(random(0, 3))); - } - - Sound_Play(this, CHAN_VOICE, "monster_alien_slave.die"); - -} - -void -monster_alien_slave::Respawn(void) -{ - super::Respawn(); - SetFrame(SLV_IDLE); -} - -void -monster_alien_slave::monster_alien_slave(void) -{ - Sound_Precache("monster_alien_slave.die"); - Sound_Precache("monster_alien_slave.pain"); - Sound_Precache("monster_alien_slave.attack_charge"); - Sound_Precache("monster_alien_slave.attack_shoot"); - Sound_Precache("monster_zombie.attackhit"); - Sound_Precache("monster_zombie.attackmiss"); - - m_talkAnswer = ""; - m_talkAsk = ""; - m_talkAllyShot = ""; - m_talkGreet = "!SLV_ALERT"; - m_talkIdle = "!SLV_IDLE"; - m_talkSmelling = ""; - m_talkStare = ""; - m_talkSurvived = ""; - m_talkWounded = ""; - - m_talkPlayerAsk = ""; - m_talkPlayerGreet = "!SLV_ALERT"; - m_talkPlayerIdle = ""; - m_talkPlayerWounded1 = ""; - m_talkPlayerWounded2 = ""; - m_talkPlayerWounded3 = ""; - m_talkUnfollow = ""; - m_talkFollow = ""; - m_talkStopFollow = ""; - - netname = "Alien Slave"; - model = "models/islave.mdl"; - base_health = Skill_GetValue("islave_health", 30); - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; - m_iAlliance = MAL_ALIEN; -} diff --git a/src/server/monster_apache.qc b/src/server/monster_apache.qc deleted file mode 100644 index 4046378..0000000 --- a/src/server/monster_apache.qc +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_apache (0 0.8 0.8) (-300 -300 -172) (300 300 8) - -HALF-LIFE (1998) ENTITY - -Boeing AH-64 Apache - -*/ - -class monster_apache:NSMonster -{ - void(void) monster_apache; - virtual void(void) Respawn; -}; - -void monster_apache::Respawn(void) -{ - super::Respawn(); - movetype = MOVETYPE_NONE; - takedamage = DAMAGE_NO; - iBleeds = FALSE; - setsize(this, [-300,-300,-172], [300, 300, 8]); -} - -void monster_apache::monster_apache(void) -{ - netname = "Apache"; - model = "models/apache.mdl"; - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; - base_health = Skill_GetValue("apache_health", 250); -} diff --git a/src/server/monster_babycrab.qc b/src/server/monster_babycrab.qc deleted file mode 100644 index 36d2a31..0000000 --- a/src/server/monster_babycrab.qc +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_babycrab (0 0.8 0.8) (-16 -16 0) (16 16 36) - -HALF-LIFE (1998) ENTITY - -Baby Headcrab - -*/ - -class monster_babycrab:monster_headcrab -{ - void(void) monster_babycrab; -}; - -void -monster_babycrab::monster_babycrab(void) -{ -} diff --git a/src/server/monster_barnacle.qc b/src/server/monster_barnacle.qc deleted file mode 100644 index 74aa4b6..0000000 --- a/src/server/monster_barnacle.qc +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_barnacle (0 0.8 0.8) (-16 -16 -36) (16 16 0) - -HALF-LIFE (1998) ENTITY - -Barnacle - -*/ - -enum -{ - BCL_IDLE, - BCL_IDLE2, - BCL_IDLE3, - BCL_FLINCH, - BCL_ATTACK, - BCL_CHEW, - BCL_DIE -}; - -class monster_barnacle:NSMonster -{ - void(void) monster_barnacle; - - /* overrides */ - virtual void(void) HasBeenKilled; - virtual void(void) Respawn; - virtual void(void) Physics; -}; - -void -monster_barnacle::Physics(void) -{ - movetype = MOVETYPE_NONE; -} - -void -monster_barnacle::HasBeenKilled(void) -{ - SetFrame(BCL_DIE); - StartSoundDef("monster_barnacle.die", CHAN_VOICE, true); -} - -void -monster_barnacle::Respawn(void) -{ - super::Respawn(); - SetFrame(BCL_IDLE); -} - -void monster_barnacle::monster_barnacle(void) -{ - Sound_Precache("monster_barnacle.attackchew"); - Sound_Precache("monster_barnacle.attackpull"); - Sound_Precache("monster_barnacle.die"); - - netname = "Barnacle"; - model = "models/barnacle.mdl"; - base_mins = [-16,-16,-36]; - base_maxs = [16,16,0]; - base_health = Skill_GetValue("barnacle_health", 25); -} diff --git a/src/server/monster_barney.qc b/src/server/monster_barney.qc deleted file mode 100644 index 48673cb..0000000 --- a/src/server/monster_barney.qc +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_barney (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Barney Calhoun - -*/ - -enum -{ - BA_IDLE1, - BA_IDLE2, - BA_IDLE3, - BA_IDLE4, - BA_WALK, - BA_RUN, - BA_SHOOT1, - BA_SHOOT2, - BA_DRAW, - BA_HOLSTER, - BA_RELOAD, - BA_TURNLEFT, - BA_TURNRIGHT, - BA_FLINCH_LA, - BA_FLINCH_RA, - BA_FLINCH_LL, - BA_FLINCH_RL, - BA_FLINCH_SML -}; - -#if 0 -class monster_barney:NSTalkMonster -{ - void(void) monster_barney; - - virtual void(void) Spawned; - virtual void(void) Respawn; - virtual void(void) OnPlayerUse; - virtual void(void) Pain; - virtual void(void) Death; - virtual int(void) AnimIdle; - virtual int(void) AnimWalk; - virtual int(void) AnimRun; - - virtual void(void) AttackDraw; - virtual void(void) AttackHolster; - virtual int(void) AttackMelee; - virtual int(void) AttackRanged; - - virtual void(monsterState_t, monsterState_t) StateChanged; -}; - -int -monster_barney::AnimIdle(void) -{ - return BA_IDLE1; -} - -int -monster_barney::AnimWalk(void) -{ - return BA_WALK; -} - -int -monster_barney::AnimRun(void) -{ - return BA_RUN; -} - -void -monster_barney::AttackDraw(void) -{ - AnimPlay(BA_DRAW); - m_flAttackThink = m_flAnimTime; -} - -void -monster_barney::AttackHolster(void) -{ - AnimPlay(BA_HOLSTER); - m_flAttackThink = m_flAnimTime; -} - -int -monster_barney::AttackMelee(void) -{ - return AttackRanged(); -} - -int -monster_barney::AttackRanged(void) -{ - /* visual */ - AnimPlay(BA_SHOOT1); - m_flAttackThink = time + 0.4f; - - /* functional */ - v_angle = vectoangles(m_eEnemy.origin - origin); - TraceAttack_FireBullets(1, origin + [0,0,16], 8, [0.01,0.01], 2); - Sound_Play(this, CHAN_WEAPON, "weapon_glock.fire"); - return (1); -} - - -void -monster_barney::StateChanged(monsterState_t oldState, monsterState_t newState) -{ - super::StateChanged(oldState, newState); - - switch (newState) { - case MONSTER_AIMING: - if (oldState == MONSTER_ALERT) - AttackDraw(); - break; - case MONSTER_ALERT: - if (oldState == MONSTER_AIMING) - AttackHolster(); - break; - } -} - - -void -monster_barney::OnPlayerUse(void) -{ - if (spawnflags & MSF_PREDISASTER) { - Sentence("!BA_POK"); - return; - } - - super::OnPlayerUse(); -} - -void -monster_barney::Pain(void) -{ - /* don't bother if we're fully dead */ - if (IsAlive() == false) - return; - - super::Pain(); - - if (InAnimation() == true) - return; - - if (random() < 0.25f) - return; - - Sound_Speak(this, "monster_barney.pain"); - - AnimPlay(BA_FLINCH_LA + floor(random(0, 5))); - m_flAttackThink = m_flAnimTime; -} - -void -monster_barney::Death(void) -{ - if (IsAlive() == true) { - SetFrame(25 + floor(random(0, 6))); - Sound_Speak(this, "monster_barney.die"); - } - - /* now mark our state as 'dead' */ - super::Death(); -} - -void -monster_barney::Respawn(void) -{ - super::Respawn(); - m_iFlags |= MONSTER_CANFOLLOW; - PlayerUse = OnPlayerUse; -} - -void -monster_barney::Spawned(void) -{ - Sound_Precache("monster_barney.die"); - Sound_Precache("monster_barney.pain"); - - /* TODO - * BA_MAD - When player gets too naughty - * */ - m_talkAnswer = "!BA_ANSWER"; - m_talkAsk = "!BA_QUESTION"; - m_talkAllyShot = "!BA_SHOOT"; - m_talkGreet = ""; - m_talkIdle = "!BA_IDLE"; - m_talkHearing = "!BA_HEAR"; - m_talkSmelling = "!BA_SMELL"; - m_talkStare = "!BA_STARE"; - m_talkSurvived = "!BA_WOUND"; - m_talkWounded = "!BA_WOUND"; - - m_talkPlayerAsk = "!BA_QUESTION"; - m_talkPlayerGreet = "!BA_HELLO"; - m_talkPlayerIdle = "!BA_IDLE"; - m_talkPlayerWounded1 = "!BA_CUREA"; - m_talkPlayerWounded2 = "!BA_CUREB"; - m_talkPlayerWounded3 = "!BA_CUREC"; - m_talkUnfollow = "!BA_WAIT"; - m_talkFollow = "!BA_OK"; - m_talkStopFollow = "!BA_STOP"; - - model = "models/barney.mdl"; - netname = "Barney"; - base_health = Skill_GetValue("barney_health", 35); - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; - m_iAlliance = MAL_FRIEND; - - super::Spawned(); -} - - -void -monster_barney::monster_barney(void) -{ -} -#endif \ No newline at end of file diff --git a/src/server/monster_barney_dead.qc b/src/server/monster_barney_dead.qc deleted file mode 100644 index 36232af..0000000 --- a/src/server/monster_barney_dead.qc +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_barney_dead (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Barney's corpse - -*/ - -class monster_barney_dead:NSTalkMonster -{ - int m_iPose; - - void(void) monster_barney_dead; - - virtual void(void) Respawn; - virtual void(string, string) SpawnKey; -}; - -void -monster_barney_dead::Respawn(void) -{ - v_angle = GetSpawnAngles(); - v_angle[0] = Math_FixDelta(v_angle[0]); - v_angle[1] = Math_FixDelta(v_angle[1]); - v_angle[2] = Math_FixDelta(v_angle[2]); - - SetOrigin(GetSpawnOrigin()); - SetAngles(v_angle); - SetSolid(SOLID_CORPSE); - SetMovetype(MOVETYPE_NONE); - SetModel(GetSpawnModel()); - SetSize(VEC_HULL_MIN + [0,0,36], VEC_HULL_MAX + [0,0,36]); - SetTakedamage(DAMAGE_YES); - SetHealth(0); - SetVelocity([0,0,0]); - SetFrame(35 + m_iPose); - - iBleeds = TRUE; -} - -void -monster_barney_dead::SpawnKey(string strKey, string strValue) -{ - switch (strKey) { - case "pose": - m_iPose = stoi(strValue); - break; - default: - super::SpawnKey(strKey, strValue); - } -} - -void -monster_barney_dead::monster_barney_dead(void) -{ - model = "models/barney.mdl"; -} diff --git a/src/server/monster_bigmomma.qc b/src/server/monster_bigmomma.qc deleted file mode 100644 index 7f8b657..0000000 --- a/src/server/monster_bigmomma.qc +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_bigmomma (0 0.8 0.8) (-95 -95 0) (95 95 190) - -HALF-LIFE (1998) ENTITY - -Gonarch - -*/ - -enum -{ - GON_IDLE, - GON_IDLE2, - GON_WALK, - GON_RUN, - GON_DIE, - GON_CLAW, - GON_CLAW2, - GON_CLAW3, - GON_SPAWN, - GON_SHOOT, - GON_FLINCH, - GON_DEFEND, - GON_JUMP, - GON_ANGRY, - GON_ANGRY2, - GON_ANGRY3, - GON_BREAKWALL, - GON_FALL, - GON_FALL2, - GON_FALLDIE -}; - -class monster_bigmomma:HLXenMonster -{ - float m_flIdleTime; - - void(void) monster_bigmomma; - - virtual void(void) Death; - virtual void(void) Pain; - virtual void(void) IdleNoise; - virtual void(void) Respawn; -}; - -void -monster_bigmomma::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - /* timing needs to adjusted as sounds conflict */ - m_flIdleTime = time + random(2,10); - - Sound_Play(this, CHAN_VOICE, "monster_bigmomma.idle"); -} - -void -monster_bigmomma::Pain(void) -{ - super::Pain(); - - if (m_flAnimTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_bigmomma.pain"); - SetFrame(GON_FLINCH); - m_flAnimTime = time + 0.25f; -} - -void -monster_bigmomma::Death(void) -{ - /* if we're already dead (corpse) don't change animations */ - if (IsAlive() == true) { - SetFrame(GON_DIE); - Sound_Play(this, CHAN_VOICE, "monster_bigmomma.die"); - } - - /* set the functional differences */ - super::Death(); -} - -void -monster_bigmomma::Respawn(void) -{ - super::Respawn(); - SetFrame(GON_IDLE); -} - -void monster_bigmomma::monster_bigmomma(void) -{ - Sound_Precache("monster_bigmomma.alert"); - Sound_Precache("monster_bigmomma.attack"); - Sound_Precache("monster_bigmomma.child"); - Sound_Precache("monster_bigmomma.die"); - Sound_Precache("monster_bigmomma.idle"); - Sound_Precache("monster_bigmomma.pain"); - Sound_Precache("monster_bigmomma.step"); - netname = "Gonarch"; - model = "models/big_mom.mdl"; - /* health is based on factor, for it's not killable until last stage */ - base_health = Skill_GetValue("bigmomma_health_factor", 1.5) * 300; - base_mins = [-95,-95,0]; - base_maxs = [95,95,190]; -} diff --git a/src/server/monster_bloater.qc b/src/server/monster_bloater.qc deleted file mode 100644 index 37455a7..0000000 --- a/src/server/monster_bloater.qc +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_bloater (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Flocking Floater - -*/ - -class monster_bloater:HLXenMonster -{ - void(void) monster_bloater; -}; - -void monster_bloater::monster_bloater(void) -{ - netname = "Floater"; - model = "models/floater.mdl"; - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; -} diff --git a/src/server/monster_bullchicken.qc b/src/server/monster_bullchicken.qc deleted file mode 100644 index f576721..0000000 --- a/src/server/monster_bullchicken.qc +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_bullchicken (0 0.8 0.8) (-32 -32 0) (32 32 64) - -HALF-LIFE (1998) ENTITY - -Bullsquid - -*/ - -enum -{ - BULL_WALK, - BULL_RUN, - BULL_SURPIRSE, - BULL_FLINCH, - BULL_FLINCH2, - BULL_LEFT, - BULL_RIGHT, - BULL_IDLE, - BULL_WHIP, - BULL_BITE, - BULL_RANGE, - BULL_LOOK, - BULL_SEECRAB, - BULL_EAT, - BULL_INSPECT, - BULL_SNIFF, - BULL_DIE, - BULL_DIE2, - BULL_JUMP, - BULL_DRAGIDLE, - BULL_DRAG, - BULL_SCARE, - BULL_FALLIDLE, - BULL_FALL -}; - -/* the growls are used in combination with the bite sounds - * for close range attacks - */ - -class monster_bullchicken:HLXenMonster -{ - float m_flIdleTime; - - void(void) monster_bullchicken; - - virtual void(void) Death; - virtual void(void) Pain; - virtual void(void) IdleNoise; - virtual int(void) AnimIdle; - virtual int(void) AnimWalk; - virtual int(void) AnimRun; -}; - -int -monster_bullchicken::AnimIdle(void) -{ - return BULL_IDLE; -} - -int -monster_bullchicken::AnimWalk(void) -{ - return BULL_WALK; -} - -int -monster_bullchicken::AnimRun(void) -{ - return BULL_RUN; -} - -void -monster_bullchicken::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - /* timing needs to adjusted as sounds conflict */ - m_flIdleTime = time + random(2,10); - - Sound_Play(this, CHAN_VOICE, "monster_bullchicken.idle"); -} - -void -monster_bullchicken::Pain(void) -{ - super::Pain(); - - if (m_flAnimTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_bullchicken.pain"); - SetFrame((random() < 0.5) ? BULL_FLINCH : BULL_FLINCH2); - m_flAnimTime = time + 0.25f; -} - -void -monster_bullchicken::Death(void) -{ - /* if we're already dead (corpse) don't change animations */ - if (IsAlive() == true) { - - /* two different animations */ - SetFrame((random() < 0.5) ? BULL_DIE : BULL_DIE2); - - Sound_Play(this, CHAN_VOICE, "monster_bullchicken.die"); - } - - /* set the functional differences */ - super::Death(); -} - -void monster_bullchicken::monster_bullchicken(void) -{ - Sound_Precache("monster_bullchicken.alert"); - Sound_Precache("monster_bullchicken.attack"); - Sound_Precache("monster_bullchicken.attackbite"); - Sound_Precache("monster_bullchicken.attackshoot"); - Sound_Precache("monster_bullchicken.die"); - Sound_Precache("monster_bullchicken.idle"); - Sound_Precache("monster_bullchicken.pain"); - netname = "Bullsquid"; - model = "models/bullsquid.mdl"; - base_health = Skill_GetValue("bullsquid_health", 40); - base_mins = [-32,-32,0]; - base_maxs = [32,32,64]; -} diff --git a/src/server/monster_cockroach.qc b/src/server/monster_cockroach.qc deleted file mode 100644 index 057c88f..0000000 --- a/src/server/monster_cockroach.qc +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_cockroach (0 0.8 0.8) (-4 -4 0) (4 4 4) - -HALF-LIFE (1998) ENTITY - -Cockroach - -*/ - -class monster_cockroach:NSMonster -{ - void(void) monster_cockroach; - virtual void(void) Death; -}; - -void -monster_cockroach::Death(void) -{ - /* if we're already dead (corpse) don't change animations */ - if (IsAlive() == true) { - Sound_Play(this, CHAN_VOICE, "monster_cockroach.die"); - } - - /* make sure we gib this thing */ - health = -100; - - /* set the functional differences */ - super::Death(); -} - -void monster_cockroach::monster_cockroach(void) -{ - Sound_Precache("monster_cockroach.die"); - netname = "Cockroach"; - model = "models/roach.mdl"; - base_mins = [-1,-1,0]; - base_maxs = [1,1,1]; -} diff --git a/src/server/monster_flyer_flock.qc b/src/server/monster_flyer_flock.qc deleted file mode 100644 index 693a4ba..0000000 --- a/src/server/monster_flyer_flock.qc +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_flyer_flock (0 0.8 0.8) (-16 -16 0) (16 16 16) - -HALF-LIFE (1998) ENTITY - -Boid - -*/ - -class monster_flyer_flock:HLXenMonster -{ - void(void) monster_flyer_flock; -}; - -void monster_flyer_flock::monster_flyer_flock(void) -{ - netname = "Boid"; - model = "models/aflock.mdl"; - base_mins = [-16,-16,0]; - base_maxs = [16,16,16]; -} diff --git a/src/server/monster_gargantua.qc b/src/server/monster_gargantua.qc deleted file mode 100644 index 0a1832b..0000000 --- a/src/server/monster_gargantua.qc +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_gargantua (0 0.8 0.8) (-32 -32 0) (32 32 128) - -HALF-LIFE (1998) ENTITY - -Gargantua - -*/ - -enum -{ - GARG_IDLE, - GARG_IDLE2, - GARG_IDLE3, - GARG_IDLE4, - GARG_WALK, - GARG_RUN, - GARG_SHOOT, - GARG_SHOOT2, - GARG_ATTACK, - GARG_STOMP, - GARG_LEFT, - GARG_RIGHT, - GARG_FLINCH, - GARG_FLINCH2, - GARG_DIE, - GARG_BITEHEAD, - GARG_THROW, - GARG_SMASH, - GARG_ROLLCAR, - GARG_KICKCAR, - GARG_PUSHCAR, - GARG_BUST -}; - -class monster_gargantua:HLXenMonster -{ - float m_flIdleTime; - - void(void) monster_gargantua; - - virtual void(void) Spawned; - virtual void(void) HasBeenKilled; - virtual void(void) HasBeenHit; - virtual void(void) IdleNoise; - virtual void(void) Respawn; -}; - -void -monster_gargantua::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - /* timing needs to adjusted as sounds conflict */ - m_flIdleTime = time + random(2,10); - - Sound_Play(this, CHAN_VOICE, "monster_gargantua.idle"); -} - -void -monster_gargantua::HasBeenHit(void) -{ - if (m_flAnimTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_gargantua.pain"); - SetFrame((random() < 0.5) ? GARG_FLINCH : GARG_FLINCH2); - m_flAnimTime = time + 0.25f; -} - -void -monster_gargantua::HasBeenKilled(void) -{ - SetFrame(GARG_DIE); - Sound_Play(this, CHAN_VOICE, "monster_gargantua.die"); -} - -void -monster_gargantua::Respawn(void) -{ - super::Respawn(); - SetFrame(GARG_IDLE); - /* takes damage from explosives only - * takedamage = DAMAGE_NO; */ - iBleeds = FALSE; -} - -void -monster_gargantua::Spawned(void) -{ - super::Spawned(); - - Sound_Precache("monster_gargantua.alert"); - Sound_Precache("monster_gargantua.attack"); - Sound_Precache("monster_gargantua.attackflame"); - Sound_Precache("monster_gargantua.attackflameon"); - Sound_Precache("monster_gargantua.attackflameoff"); - Sound_Precache("monster_gargantua.die"); - Sound_Precache("monster_gargantua.idle"); - Sound_Precache("monster_gargantua.pain"); - Sound_Precache("monster_gargantua.step"); -} - -void monster_gargantua::monster_gargantua(void) -{ - netname = "Gargantua"; - model = "models/garg.mdl"; - base_health = Skill_GetValue("gargantua_health", 800); - base_mins = [-32,-32,0]; - base_maxs = [32,32,128]; -} diff --git a/src/server/monster_gman.qc b/src/server/monster_gman.qc deleted file mode 100644 index 36ca7b5..0000000 --- a/src/server/monster_gman.qc +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_gman (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -G-Man - -*/ - -enum -{ - GMAN_IDLE, - GMAN_IDLETIE, - GMAN_IDLELOOK, - GMAN_IDLE2, - GMAN_OPEN, - GMAN_STAND, - GMAN_WALK, - GMAN_YES, - GMAN_NO, - GMAN_NOBIG, - GMAN_YESBIG, - GMAN_LISTEN, - GMAN_LOOKDOWN, - GMAN_LOOKDOWN2 -}; - -class monster_gman:NSTalkMonster -{ - void(void) monster_gman; - - virtual void(void) Respawn; - virtual int(void) AnimIdle; - virtual int(void) AnimWalk; - virtual int(void) AnimRun; -}; - -int -monster_gman::AnimIdle(void) -{ - return GMAN_IDLE; -} - -int -monster_gman::AnimWalk(void) -{ - return GMAN_WALK; -} - -int -monster_gman::AnimRun(void) -{ - return GMAN_WALK; -} - -void monster_gman::Respawn(void) -{ - /* he can't die, he's the G-Man! */ - super::Respawn(); - SetFrame(GMAN_IDLE); - takedamage = DAMAGE_NO; - iBleeds = FALSE; -} - -void monster_gman::monster_gman(void) -{ - netname = "G-Man"; - model = "models/gman.mdl"; - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; -} diff --git a/src/server/monster_headcrab.qc b/src/server/monster_headcrab.qc deleted file mode 100644 index ae473b6..0000000 --- a/src/server/monster_headcrab.qc +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_headcrab (0 0.8 0.8) (-16 -16 0) (16 16 36) - -HALF-LIFE (1998) ENTITY - -Headcrab - -*/ - -enum -{ - HC_IDLE1, - HC_IDLE2, - HC_IDLE3, - HC_WALK, - HC_RUN, - HC_ANGRY, - HC_FLINCH, - HC_DIE, - HC_180_LEFT, - HC_180_RIGHT, - HC_JUMP, - HC_JUMP_VARIATION1, - HC_JUMP_VARIATION2, - HC_YAW_ADJUSTMENT, - HC_HEADCRABBED1, - HC_HEADCRABBED2, - HC_HEADIDLE, - HC_CRASHIDLE, - HC_CRASH, - HC_STRUGGLEIDLE, - HC_STRUGGLE -}; - -class monster_headcrab:HLXenMonster -{ - bool m_bBiting; - float m_flIdleTime; - - void monster_headcrab(void); - - virtual void Spawned(void); - virtual void HasBeenHit(void); - virtual void HasBeenKilled(void); - virtual void IdleNoise(void); - virtual int AttackMelee(void); - virtual void Touch(entity); - virtual float MeleeMaxDistance(void); -}; - -float -monster_headcrab:: MeleeMaxDistance(void) -{ - return 256; -} - -int -monster_headcrab::AttackMelee(void) -{ - /* visual */ - if (random() < 0.5) - AnimPlay(HC_JUMP); - else - AnimPlay(HC_JUMP_VARIATION1); - - m_flAttackThink = m_flAnimTime + 0.25; - Sound_Play(this, CHAN_VOICE, "monster_headcrab.attack"); - - /* functional */ - vector jumpVelocity; - makevectors(vectoangles(m_eEnemy.origin - origin)); - jumpVelocity = (v_forward * 512) + [0, 0, 250]; - SetVelocity(jumpVelocity); - m_bBiting = true; - return (1); -} - -void -monster_headcrab::Touch(entity eToucher) -{ - if (m_bBiting) - if (eToucher.takedamage == DAMAGE_YES) - if (frame == HC_JUMP || frame == HC_JUMP_VARIATION1) { - Damage_Apply(eToucher, this, Skill_GetValue("headcrab_dmg_bite", 10), 0, 0); - StartSoundDef("monster_headcrab.attackhit", CHAN_VOICE, true); - m_bBiting = false; - } -} - -void -monster_headcrab::HasBeenHit(void) -{ - if (m_flAnimTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_headcrab.pain"); - SetFrame(HC_FLINCH); - m_flAnimTime = time + 0.25f; -} - -void -monster_headcrab::HasBeenKilled(void) -{ - SetFrame(HC_DIE); - Sound_Play(this, CHAN_VOICE, "monster_headcrab.die"); -} - -void -monster_headcrab::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - m_flIdleTime = time + random(2,10); - - StartSoundDef("monster_headcrab.idle", CHAN_VOICE, true); -} - -void -monster_headcrab::Spawned(void) -{ - super::Spawned(); - - Sound_Precache("monster_headcrab.alert"); - Sound_Precache("monster_headcrab.attack"); - Sound_Precache("monster_headcrab.attackhit"); - Sound_Precache("monster_headcrab.die"); - Sound_Precache("monster_headcrab.idle"); - Sound_Precache("monster_headcrab.pain"); -} - -void -monster_headcrab::monster_headcrab(void) -{ - if (classname == "monster_babycrab") { - netname = "Baby Headcrab"; - model = "models/baby_headcrab.mdl"; - base_health = Skill_GetValue ("headcrab_health", 10) /4; - } else { - netname = "Headcrab"; - model = "models/headcrab.mdl"; - base_health = Skill_GetValue("headcrab_health", 10); - } - - base_mins = [-16,-16,0]; - base_maxs = [16,16,36]; - m_iAlliance = MAL_ALIEN; -} diff --git a/src/server/monster_hevsuit_dead.qc b/src/server/monster_hevsuit_dead.qc deleted file mode 100644 index 2339891..0000000 --- a/src/server/monster_hevsuit_dead.qc +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_hevsuit_dead (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -HEV-Suit/Player's corpse - -*/ - -class monster_hevsuit_dead:NSMonster -{ - int m_iPose; - void(void) monster_hevsuit_dead; - - virtual void(void) Respawn; - virtual void(void) Gib; - virtual void(string, string) SpawnKey; -}; - -void -monster_hevsuit_dead::Gib(void) -{ - takedamage = DAMAGE_NO; - FX_GibHuman(origin, vectoangles(origin - g_dmg_eAttacker.origin), g_dmg_iDamage * 2.0f); - Disappear(); -} - -void -monster_hevsuit_dead::Respawn(void) -{ - v_angle = GetSpawnAngles(); - v_angle[0] = Math_FixDelta(v_angle[0]); - v_angle[1] = Math_FixDelta(v_angle[1]); - v_angle[2] = Math_FixDelta(v_angle[2]); - - SetOrigin(GetSpawnOrigin()); - angles = v_angle; - solid = SOLID_CORPSE; - movetype = MOVETYPE_NONE; - SetModel(GetSpawnModel()); - setsize(this, VEC_HULL_MIN + [0,0,36], VEC_HULL_MAX + [0,0,36]); - takedamage = DAMAGE_YES; - health = 0; - velocity = [0,0,0]; - iBleeds = TRUE; - SetFrame(73 + m_iPose); -} - -void -monster_hevsuit_dead::SpawnKey(string strKey, string strValue) -{ - switch (strKey) { - case "pose": - m_iPose = stoi(strValue); - break; - case "body": - SetBody(stoi(strValue) + 1); - break; - case "skin": - SetSkin(stoi(strValue)); - break; - default: - super::SpawnKey(strKey, strValue); - } -} - -void -monster_hevsuit_dead::monster_hevsuit_dead(void) -{ - model = "models/player.mdl"; - m_iBody = 2; -} diff --git a/src/server/monster_hgrunt_dead.qc b/src/server/monster_hgrunt_dead.qc deleted file mode 100644 index c69da02..0000000 --- a/src/server/monster_hgrunt_dead.qc +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_hgrunt_dead (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Human Grunt's corpse - -*/ - -class monster_hgrunt_dead:NSMonster -{ - int m_iPose; - void(void) monster_hgrunt_dead; - - virtual void(void) Respawn; - virtual void(void) Gib; - virtual void(string, string) SpawnKey; -}; - -void -monster_hgrunt_dead::Gib(void) -{ - takedamage = DAMAGE_NO; - FX_GibHuman(origin, vectoangles(origin - g_dmg_eAttacker.origin), g_dmg_iDamage * 2.0f); - Disappear(); -} - -void -monster_hgrunt_dead::Respawn(void) -{ - v_angle = GetSpawnAngles(); - v_angle[0] = Math_FixDelta(v_angle[0]); - v_angle[1] = Math_FixDelta(v_angle[1]); - v_angle[2] = Math_FixDelta(v_angle[2]); - - SetOrigin(GetSpawnOrigin()); - angles = v_angle; - solid = SOLID_CORPSE; - movetype = MOVETYPE_NONE; - SetModel(GetSpawnModel()); - setsize(this, VEC_HULL_MIN + [0,0,36], VEC_HULL_MAX + [0,0,36]); - takedamage = DAMAGE_YES; - health = 0; - velocity = [0,0,0]; - iBleeds = TRUE; - SetFrame(44 + m_iPose); -} - -void -monster_hgrunt_dead::SpawnKey(string strKey, string strValue) -{ - switch (strKey) { - case "pose": - m_iPose = stoi(strValue); - break; - case "body": - m_iBody = stoi(strValue) + 1; - break; - case "skin": - skin = stoi(strValue); - break; - default: - super::SpawnKey(strKey, strValue); - } -} - -void -monster_hgrunt_dead::monster_hgrunt_dead(void) -{ - model = "models/hgrunt.mdl"; -} diff --git a/src/server/monster_houndeye.qc b/src/server/monster_houndeye.qc deleted file mode 100644 index 30859dd..0000000 --- a/src/server/monster_houndeye.qc +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_houndeye (0 0.8 0.8) (-16 -16 0) (16 16 36) - -HALF-LIFE (1998) ENTITY - -Houndeye - -*/ - -#define HE_BLAST_RADIUS 384 - -enum -{ - HE_IDLE, - HE_IDLE2, - HE_IDLE3, - HE_RUN, - HE_RUN2, - HE_RUN3, - HE_DIE, - HE_DIE2, - HE_DIE3, - HE_DIE4, - HE_ATTACK, - HE_FLINCH, - HE_FLINCH2, - HE_DIE5, - HE_WALKLIMP, - HE_WALK2, - HE_LEADERLOOK, - HE_SLEEP, - HE_GOTOSLEEP, - HE_WAKE, - HE_IDLEMAD, - HE_IDLEMAD2, - HE_IDLEMAD3, - HE_INSPECT, - HE_EAT, - HE_LEFT, - HE_RIGHT, - HE_JUMPBACK, - HE_WAKEFAST, - HE_WHIMPER, - HE_JUMPWINDOW -}; - -class monster_houndeye:HLXenMonster -{ - float m_flIdleTime; - - void monster_houndeye(void); - - virtual void Spawned(void); - virtual void Pain(void); - virtual void Death(void); - virtual void IdleNoise(void); - virtual void Respawn(void); - - virtual int AnimIdle(void); - virtual int AnimWalk(void); - virtual int AnimRun(void); - - virtual int AttackMelee(void); - virtual void AttackBlast(void); - - virtual float MeleeMaxDistance(void); -}; - - -/* The maximum distance to which we should attempt an attack */ -float -monster_houndeye::MeleeMaxDistance(void) -{ - return HE_BLAST_RADIUS/2; -} - -int -monster_houndeye::AnimIdle(void) -{ - return HE_IDLE; -} - -int -monster_houndeye::AnimWalk(void) -{ - return HE_WALK2; -} - -int -monster_houndeye::AnimRun(void) -{ - return HE_RUN; -} - -int -monster_houndeye::AttackMelee(void) -{ - AnimPlay(HE_ATTACK); - Sound_Play(this, CHAN_WEAPON, "monster_houndeye.attack"); - m_flAttackThink = m_flAnimTime + 0.5f; - - think = AttackBlast; - nextthink = m_flAnimTime; - return (1); -} - -void -monster_houndeye::AttackBlast(void) -{ - float new_dmg; - float dist; - float diff; - vector pos; - float dmg = 50; /* TODO: set proper damage */ - - for (entity e = world; (e = findfloat(e, ::takedamage, DAMAGE_YES));) { - pos[0] = e.absmin[0] + (0.5 * (e.absmax[0] - e.absmin[0])); - pos[1] = e.absmin[1] + (0.5 * (e.absmax[1] - e.absmin[1])); - pos[2] = e.absmin[2] + (0.5 * (e.absmax[2] - e.absmin[2])); - - if (e.classname == "monster_houndeye") - continue; - - /* don't bother if it's not anywhere near us */ - dist = vlen(origin - pos); - if (dist > HE_BLAST_RADIUS) { - continue; - } - - /* can we physically hit this thing? */ - other = world; - traceline(e.origin, origin, MOVE_OTHERONLY, this); - - if (trace_fraction < 1.0f) - dmg *= 0.5f; - - /* calculate new damage values */ - diff = vlen(origin - pos); - diff = (HE_BLAST_RADIUS - diff) / HE_BLAST_RADIUS; - new_dmg = rint(dmg * diff); - - if (diff > 0) { - Damage_Apply(e, this, new_dmg, 0, DMG_EXPLODE); - } - } - Sound_Play(this, CHAN_WEAPON, "monster_houndeye.blast"); -} - -void -monster_houndeye::Pain(void) -{ - super::Pain(); - - if (m_flAnimTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_houndeye.pain"); - SetFrame(HE_FLINCH + floor(random(0, 2))); - m_flAnimTime = time + 0.25f; -} - -void -monster_houndeye::Death(void) -{ - /* if we're already dead (corpse) don't change animations */ - if (IsAlive() == true) { - SetFrame(HE_DIE + floor(random(0, 4))); - - Sound_Play(this, CHAN_VOICE, "monster_houndeye.die"); - } - - /* set the functional differences */ - super::Death(); -} - -void -monster_houndeye::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - m_flIdleTime = time + random(2,10); - - Sound_Play(this, CHAN_VOICE, "monster_houndeye.idle"); -} - -void -monster_houndeye::Respawn(void) -{ - super::Respawn(); - SetFrame(HE_IDLE); -} - -void -monster_houndeye::Spawned(void) -{ - netname = "Houndeye"; - model = "models/houndeye.mdl"; - base_health = Skill_GetValue("houndeye_health", 20); - base_mins = [-16,-16,0]; - base_maxs = [16,16,36]; - m_iAlliance = MAL_ALIEN; - super::Spawned(); - - Sound_Precache("monster_houndeye.alert"); - Sound_Precache("monster_houndeye.attack"); - Sound_Precache("monster_houndeye.blast"); - Sound_Precache("monster_houndeye.die"); - Sound_Precache("monster_houndeye.idle"); - Sound_Precache("monster_houndeye.pain"); -} - -void -monster_houndeye::monster_houndeye(void) -{ -} diff --git a/src/server/monster_human_assassin.qc b/src/server/monster_human_assassin.qc deleted file mode 100644 index d60186d..0000000 --- a/src/server/monster_human_assassin.qc +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_human_assassin (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Black Ops - Assassin - -*/ - -enum -{ - HAS_IDLE, - HAS_IDLE3, - HAS_IDLE2, - HAS_RUN, - HAS_WALK, - HAS_SHOOT, - HAS_NADETHROW, - HAS_KICK, - HAS_KICK2, - HAS_DIERUN, - HAS_DIEBACK, - HAS_DIE, - HAS_JUMP, - HAS_UP, - HAS_UNUSED, - HAS_ATTACKDOWN, - HAS_LAND -}; - -class monster_human_assassin:NSMonster -{ - float m_flIdleTime; - - void(void) monster_human_assassin; - - virtual void(void) Death; - virtual void(void) Respawn; - virtual void Spawned(void); -}; - -void -monster_human_assassin::monster_human_assassin(void) -{ -} - -void -monster_human_assassin::Death(void) -{ - /* if we're already dead (corpse) don't change animations */ - if (IsAlive() == true) { - /* headshots == different animation */ - /* this animation may not have been used, but it looks cool */ - if (g_dmg_iHitBody == BODY_HEAD) { - if (random() < 0.5) { - SetFrame(HAS_DIERUN); - } else { - SetFrame(HAS_DIEBACK); - } - } else { - SetFrame(HAS_DIE); - } - } - - /* set the functional differences */ - super::Death(); -} - -void -monster_human_assassin::Spawned(void) -{ - netname = "Assassin"; - model = "models/hassassin.mdl"; - base_health = Skill_GetValue("hassassin_health", 50); - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; - m_iAlliance = MAL_ENEMY; - - super::Spawned(); -} - -void -monster_human_assassin::Respawn(void) -{ - super::Respawn(); - frame = HAS_IDLE; -} diff --git a/src/server/monster_ichthyosaur.qc b/src/server/monster_ichthyosaur.qc deleted file mode 100644 index 99ef659..0000000 --- a/src/server/monster_ichthyosaur.qc +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_ichthyosaur (0 0.8 0.8) (-32 -32 0) (32 32 64) - -HALF-LIFE (1998) ENTITY - -Ichthyosaur - -*/ - -enum -{ - ICHY_IDLE, - ICHY_SWIM, - ICHY_THRUST, - ICHY_DIE1, - ICHY_DIE2, - ICHY_FLINCH, - ICHY_FLINCH2, - ICHY_DIE3, - ICHY_BITER, - ICHY_BITEL, - ICHY_ATTACK, - ICHY_RIGHT, - ICHY_LEFT, - ICHY_180, - ICHY_HITCAGE, - ICHY_JUMP -}; - -class monster_ichthyosaur:NSMonster -{ - float m_flIdleTime; - - void(void) monster_ichthyosaur; - - virtual void(void) Spawned; - virtual void(void) Pain; - virtual void(void) Death; - virtual void(void) IdleNoise; - virtual void(void) Respawn; -}; - -void -monster_ichthyosaur::Pain(void) -{ - super::Pain(); - - if (m_flAnimTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_ichthyosaur.pain"); - SetFrame(ICHY_FLINCH + floor(random(0, 2))); - m_flAnimTime = time + 0.25f; -} - -void -monster_ichthyosaur::Death(void) -{ - /* if we're already dead (corpse) don't change animations */ - if (IsAlive() == true) { - int r = floor(random(0,3)); - - switch (r) { - case 1: - SetFrame(ICHY_DIE2); - break; - case 2: - SetFrame(ICHY_DIE3); - break; - default: - SetFrame(ICHY_DIE1); - break; - } - - Sound_Play(this, CHAN_VOICE, "monster_ichthyosaur.die"); - } - - /* set the functional differences */ - super::Death(); -} - -void -monster_ichthyosaur::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - m_flIdleTime = time + random(2,10); - - Sound_Play(this, CHAN_VOICE, "monster_ichthyosaur.idle"); -} - -void -monster_ichthyosaur::Respawn(void) -{ - super::Respawn(); - SetFrame(ICHY_IDLE); -} - -void -monster_ichthyosaur::Spawned(void) -{ - netname = "Ichthyosaur"; - model = "models/icky.mdl"; - base_mins = [-32,-32,0]; - base_maxs = [32,32,64]; - super::Spawned(); - - Sound_Precache("monster_ichthyosaur.alert"); - Sound_Precache("monster_ichthyosaur.attack"); - Sound_Precache("monster_ichthyosaur.die"); - Sound_Precache("monster_ichthyosaur.idle"); - Sound_Precache("monster_ichthyosaur.pain"); -} - -void -monster_ichthyosaur::monster_ichthyosaur(void) -{ -} diff --git a/src/server/monster_leech.qc b/src/server/monster_leech.qc deleted file mode 100644 index d836557..0000000 --- a/src/server/monster_leech.qc +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_leech (0 0.8 0.8) (-6 -6 0) (6 6 6) - -HALF-LIFE (1998) ENTITY - -Leech - -*/ - -enum -{ - LEECH_SWIM, - LEECH_SWIM2, - LEECH_ATTACK, - LEECH_HOVER, - LEECH_LEFT, - LEECH_RIGHT, - LEECH_DIE, - LEECH_DIEEND -}; - -class monster_leech:NSMonster -{ - float m_flIdleTime; - - void(void) monster_leech; - - virtual void(void) Spawned; - virtual void(void) Death; - virtual void(void) DeathEnd; - virtual void(void) Respawn; -}; - -void -monster_leech::DeathEnd(void) -{ - SetFrame(LEECH_DIEEND); -} - -void -monster_leech::Death(void) -{ - /* if we're already dead (corpse) don't change animations */ - if (IsAlive() == true) { - SetFrame(LEECH_DIE); - think = DeathEnd; - nextthink = time + 1.0f; - } - - /* set the functional differences */ - super::Death(); -} - -void -monster_leech::Respawn(void) -{ - super::Respawn(); - SetFrame(LEECH_SWIM); -} - -void -monster_leech::Spawned(void) -{ - netname = "Leech"; - model = "models/leech.mdl"; - base_mins = [-6,-6,0]; - base_maxs = [6,6,6]; - super::Spawned(); - - Sound_Precache("monster_leech.alert"); - Sound_Precache("monster_leech.attack"); -} - -void monster_leech::monster_leech(void) -{ -} diff --git a/src/server/monster_miniturret.qc b/src/server/monster_miniturret.qc deleted file mode 100644 index 5ffa5fe..0000000 --- a/src/server/monster_miniturret.qc +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_miniturret (0 0.8 0.8) (-16 -16 -32) (16 16 32) - -HALF-LIFE (1998) ENTITY - -Automatic Turret (small) - -*/ - -enum -{ - TUR_IDLE, - TUR_FIRE, - TUR_SPIN, - TUR_DEPLOY, - TUR_RETIRE, - TUR_DIE -}; - -class monster_miniturret:NSMonster -{ - void(void) monster_miniturret; - - virtual void Spawned(void); -}; - -void monster_miniturret::monster_miniturret(void) -{ -} - - -void monster_miniturret::Spawned(void) -{ - netname = "Mini-Turret"; - model = "models/miniturret.mdl"; - base_mins = [-16,-16,-32]; - base_maxs = [16,16,32]; - - super::Spawned(); -} diff --git a/src/server/monster_nihilanth.qc b/src/server/monster_nihilanth.qc deleted file mode 100644 index 0040c08..0000000 --- a/src/server/monster_nihilanth.qc +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_nihilanth (0 0.8 0.8) (-192 -192 0) (192 192 384) - -HALF-LIFE (1998) ENTITY - -Nihilanth - -*/ - -enum -{ - NIL_IDLE, - NIL_ATTACK, - NIL_ATTACK2, - NIL_THROW, - NIL_BLOCK, - NIL_RECHARGE, - NIL_IDLEOPEN, - NIL_ATTACKOPEN, - NIL_ATTACKOPEN2, - NIL_FLINCH, - NIL_FLINCH2, - NIL_FALL, - NIL_DIE, - NIL_FORWARD, - NIL_BACK, - NIL_UP, - NIL_DOWN, - NIL_RIGHT, - NIL_LEFT, - NIL_WALK2, - NIL_SHOOT -}; - -class monster_nihilanth:HLXenMonster -{ - float m_flIdleTime; - - void(void) monster_nihilanth; - - virtual void(void) Spawned; - virtual void(void) Death; - virtual void(void) Pain; - virtual void(void) IdleNoise; - virtual void(void) Respawn; -}; - -void -monster_nihilanth::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - - /* timing needs to adjusted as sounds conflict */ - m_flIdleTime = time + random(2,10); - - Sound_Play(this, CHAN_VOICE, "monster_nihilanth.idle"); -} - -void -monster_nihilanth::Pain(void) -{ - super::Pain(); - - if (m_flAnimTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - Sound_Play(this, CHAN_VOICE, "monster_nihilanth.pain"); - - SetFrame((random() < 0.5) ? NIL_FLINCH : NIL_FLINCH2); - m_flAnimTime = time + 0.25f; -} - -void -monster_nihilanth::Death(void) -{ - /* if we're already dead (corpse) don't change animations */ - if (IsAlive() == true) { - SetFrame(NIL_DIE); - Sound_Play(this, CHAN_VOICE, "monster_nihilanth.die"); - } - - /* set the functional differences */ - super::Death(); -} - -void -monster_nihilanth::Respawn(void) -{ - super::Respawn(); - SetFrame(NIL_IDLE); -} - -void -monster_nihilanth::Spawned(void) -{ - netname = "Nihilanth"; - model = "models/nihilanth.mdl"; - base_health = Skill_GetValue("nihilanth_health", 800); - base_mins = [-192,-192,-32]; - base_maxs = [192,192,384]; - super::Spawned(); - - Sound_Precache("monster_nihilanth.attack"); - Sound_Precache("monster_nihilanth.attackball"); - Sound_Precache("monster_nihilanth.attackballmove"); - Sound_Precache("monster_nihilanth.die"); - Sound_Precache("monster_nihilanth.idle"); - Sound_Precache("monster_nihilanth.pain"); - Sound_Precache("monster_nihilanth.recharge"); -} - -void -monster_nihilanth::monster_nihilanth(void) -{ -} diff --git a/src/server/monster_osprey.qc b/src/server/monster_osprey.qc deleted file mode 100644 index 36d34db..0000000 --- a/src/server/monster_osprey.qc +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_osprey (0 0.8 0.8) (-480 -480 -112) (480 480 24) - -HALF-LIFE (1998) ENTITY - -Bell Boeing VV-22 Osprey - -*/ - -class monster_osprey:NSMonster -{ - void(void) monster_osprey; - virtual void(void) Respawn; - - virtual void Spawned(void); -}; - -void monster_osprey::monster_osprey(void) -{ -} - -void monster_osprey::Spawned(void) -{ - netname = "Osprey"; - model = "models/osprey.mdl"; - base_mins = [-480,-480,-112]; - base_maxs = [480,480,24]; - super::Spawned(); -} - - -void monster_osprey::Respawn(void) -{ - super::Respawn(); - takedamage = DAMAGE_NO; - iBleeds = FALSE; -} \ No newline at end of file diff --git a/src/server/monster_rat.qc b/src/server/monster_rat.qc deleted file mode 100644 index 788f873..0000000 --- a/src/server/monster_rat.qc +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_rat (0 0.8 0.8) (-6 -6 0) (6 6 6) - -HALF-LIFE (1998) ENTITY - -Rat - -*/ - -class monster_rat:NSMonster -{ - void(void) monster_rat; - - virtual void Spawned(void); -}; - -void monster_rat::monster_rat(void) -{ - netname = "Rat"; - model = "models/bigrat.mdl"; - base_mins = [-6,-6,-0]; - base_maxs = [6,6,6]; -} - -void monster_rat::Spawned(void) -{ - netname = "Rat"; - model = "models/bigrat.mdl"; - base_mins = [-6,-6,-0]; - base_maxs = [6,6,6]; - - super::Spawned(); -} diff --git a/src/server/monster_scientist.qc b/src/server/monster_scientist.qc deleted file mode 100644 index 313b753..0000000 --- a/src/server/monster_scientist.qc +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_scientist (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Scientist - -*/ - -enum -{ - SCIA_WALK, - SCIA_WALKSCARED, - SCIA_RUN, - SCIA_RUNSCARED, - SCIA_RUNLOOK, - SCIA_180LEFT, - SCIA_180RIGHT, - SCIA_FLINCH, - SCIA_PAIN, - SCIA_PAINLEFT, - SCIA_PAINRIGHT, - SCIA_PAINLEGLEFT, - SCIA_PAINLEGRIGHT, - SCIA_IDLE1, - SCIA_IDLE2, - SCIA_IDLE3, - SCIA_IDLE4, - SCIA_IDLE5, - SCIA_IDLE6, - SCIA_SCARED_END, - SCIA_SCARED1, - SCIA_SCARED2, - SCIA_SCARED3, - SCIA_SCARED4, - SCIA_PANIC, - SCIA_FEAR1, - SCIA_FEAR2, - SCIA_CRY, - SCIA_SCI1, - SCIA_SCI2, - SCIA_SCI3, - SCIA_DIE_SIMPLE, - SCIA_DIE_FORWARD1, - SCIA_DIE_FORWARD2, - SCIA_DIE_BACKWARD, - SCIA_DIE_HEADSHOT, - SCIA_DIE_GUTSHOT, - SCIA_LYING1, - SCIA_LYING2, - SCIA_DEADSIT, - SCIA_DEADTABLE1, - SCIA_DEADTABLE2, - SCIA_DEADTABLE3 -}; - -class monster_scientist:NSTalkMonster -{ - void(void) monster_scientist; - - virtual void(void) Spawned; - virtual void(void) Respawn; - virtual void(void) Pain; - virtual void(void) Death; - virtual void(void) PlayerUse; - - virtual void(string, string) SpawnKey; -}; - -void -monster_scientist::PlayerUse(void) -{ - if (spawnflags & MSF_PREDISASTER) { - Sentence("!SC_POK"); - return; - } - - super::OnPlayerUse(); -} - -void -monster_scientist::Pain(void) -{ - WarnAllies(); - - if (m_flAnimTime > time) { - return; - } - - if (random() < 0.25f) { - return; - } - - if (IsAlive() == true) { - Sound_Speak(this, "monster_scientist.pain"); - SetFrame(SCIA_FLINCH + floor(random(0, 6))); - m_iFlags |= MONSTER_FEAR; - m_flAnimTime = time + 0.25f; - } -} - -void -monster_scientist::Death(void) -{ - WarnAllies(); - - if (IsAlive() == true) { - SetFrame(SCIA_DIE_SIMPLE + floor(random(0, 6))); - Sound_Speak(this, "monster_scientist.die"); - } - - /* now mark our state as 'dead' */ - super::Death(); -} - -void -monster_scientist::Respawn(void) -{ - super::Respawn(); - m_iFlags |= MONSTER_CANFOLLOW; -} - -void -monster_scientist::SpawnKey(string strKey, string strValue) -{ - switch (strKey) { - case "body": - SetBody(stoi(strValue) + 1); - break; - default: - super::SpawnKey(strKey, strValue); - } -} - -void -monster_scientist::Spawned(void) -{ - if (spawnflags & MSF_PREDISASTER) { - m_talkAsk = ""; - m_talkPlayerAsk = "!SC_PQUEST"; - m_talkPlayerGreet = "!SC_PHELLO"; - m_talkPlayerIdle = "!SC_PIDLE"; - } else { - m_talkAsk = "!SC_QUESTION"; - m_talkPlayerAsk = "!SC_QUESTION"; - m_talkPlayerGreet = "!SC_HELLO"; - m_talkPlayerIdle = "!SC_PIDLE"; - } - - m_talkAnswer = "!SC_ANSWER"; - m_talkAllyShot = "!SC_PLFEAR"; - m_talkGreet = ""; - m_talkIdle = "!SC_IDLE"; - m_talkHearing = "!SC_HEAR"; - m_talkSmelling = "!SC_SMELL"; - m_talkStare = "!SC_STARE"; - m_talkSurvived = "!SC_WOUND"; - m_talkWounded = "!SC_MORTAL"; - - /* they seem to use predisaster lines regardless of disaster state */ - m_talkPlayerWounded1 = "!SC_CUREA"; - m_talkPlayerWounded2 = "!SC_CUREB"; - m_talkPlayerWounded3 = "!SC_CUREC"; - m_talkUnfollow = "!SC_WAIT"; - m_talkFollow = "!SC_OK"; - m_talkStopFollow = "!SC_STOP"; - m_iBody = -1; - - model = "models/scientist.mdl"; - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; - base_health = Skill_GetValue("scientist_health", 20); - - super::Spawned(); - - Sound_Precache("monster_scientist.die"); - Sound_Precache("monster_scientist.pain"); - - /* has the body not been overriden, etc. choose a character for us */ - if (m_iBody == -1) { - SetBody((int)floor(random(1,5))); - } - - switch (m_iBody) { - case 1: - m_flPitch = 105; - netname = "Walter"; - break; - case 2: - m_flPitch = 100; - netname = "Einstein"; - break; - case 3: - m_flPitch = 95; - netname = "Luther"; - SetSkin(1); - break; - default: - m_flPitch = 100; - netname = "Slick"; - } -} - -void -monster_scientist::monster_scientist(void) -{ -} diff --git a/src/server/monster_scientist_dead.qc b/src/server/monster_scientist_dead.qc deleted file mode 100644 index 62956c6..0000000 --- a/src/server/monster_scientist_dead.qc +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_scientist_dead (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Scientists' corpse - -*/ - -enum -{ - DSCIA_LYING1 = 37, - DSCIA_LYING2, - DSCIA_DEADSIT, - DSCIA_DEADTABLE1, - DSCIA_DEADTABLE2, - DSCIA_DEADTABLE3, - DSCIA_DEADHANG -}; - -class monster_scientist_dead:NSMonster -{ - int m_iPose; - void(void) monster_scientist_dead; - - virtual void(void) Respawn; - virtual void(void) Gib; - virtual void(string, string) SpawnKey; -}; - -void -monster_scientist_dead::Gib(void) -{ - takedamage = DAMAGE_NO; - FX_GibHuman(origin, vectoangles(origin - g_dmg_eAttacker.origin), g_dmg_iDamage * 2.0f); - Disappear(); -} - -void -monster_scientist_dead::Respawn(void) -{ - v_angle = GetSpawnAngles(); - v_angle[0] = Math_FixDelta(v_angle[0]); - v_angle[1] = Math_FixDelta(v_angle[1]); - v_angle[2] = Math_FixDelta(v_angle[2]); - - SetOrigin(GetSpawnOrigin()); - angles = v_angle; - solid = SOLID_CORPSE; - movetype = MOVETYPE_NONE; - SetModel(GetSpawnModel()); - setsize(this, VEC_HULL_MIN + [0,0,36], VEC_HULL_MIN + [0,0,36]); - takedamage = DAMAGE_YES; - health = 0; - velocity = [0,0,0]; - iBleeds = TRUE; - - switch (m_iPose) { - case 1: - SetFrame(DSCIA_LYING2); - break; - case 2: - SetFrame(DSCIA_DEADSIT); - break; - case 3: - SetFrame(DSCIA_DEADHANG); - break; - case 4: - SetFrame(DSCIA_DEADTABLE1); - break; - case 5: - SetFrame(DSCIA_DEADTABLE2); - break; - case 6: - SetFrame(DSCIA_DEADTABLE3); - break; - default: - SetFrame(DSCIA_LYING1); - } - - DropToFloor(); -} - -void -monster_scientist_dead::SpawnKey(string strKey, string strValue) -{ - switch (strKey) { - case "pose": - m_iPose = stoi(strValue); - break; - case "body": - SetBody(stoi(strValue) + 1); - break; - case "skin": - SetSkin(stoi(strValue)); - break; - default: - super::SpawnKey(strKey, strValue); - } -} - -void -monster_scientist_dead::monster_scientist_dead(void) -{ - model = "models/scientist.mdl"; -} diff --git a/src/server/monster_sentry.qc b/src/server/monster_sentry.qc deleted file mode 100644 index 90a7014..0000000 --- a/src/server/monster_sentry.qc +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_sentry (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Sentry Gun - -*/ - -enum -{ - SENT_IDLE, - SENT_FIRE, - SENT_SPIN, - SENT_DEPLOY, - SENT_RETIRE, - SENT_DIE -}; - - -class monster_sentry:NSMonster -{ - void(void) monster_sentry; - - virtual void(void) Spawned; - virtual void(void) Death; - virtual void(void) Respawn; - -}; - -void -monster_sentry::Death(void) -{ - /* if we're already dead (corpse) don't change animations */ - if (IsAlive() == true) { - SetFrame(SENT_DIE); - Sound_Play(this, CHAN_VOICE, "monster_sentry.die"); - } - - /* set the functional differences */ - super::Death(); -} - -void -monster_sentry::Respawn(void) -{ - super::Respawn(); - - SetFrame(SENT_IDLE); - iBleeds = FALSE; -} - -void -monster_sentry::Spawned(void) -{ - netname = "Sentry"; - model = "models/sentry.mdl"; - base_health = Skill_GetValue("sentry_health", 40); - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; - - super::Spawned(); - - Sound_Precache("monster_sentry.alert"); - Sound_Precache("monster_sentry.die"); - Sound_Precache("monster_sentry.idle"); - Sound_Precache("monster_sentry.retract"); -} - -void monster_sentry::monster_sentry(void) -{ -} diff --git a/src/server/monster_sitting_scientist.qc b/src/server/monster_sitting_scientist.qc deleted file mode 100644 index 9dc6dc7..0000000 --- a/src/server/monster_sitting_scientist.qc +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_sitting_scientist (0 0.8 0.8) (-14 -14 0) (14 14 36) - -HALF-LIFE (1998) ENTITY - -Sitting scientists - -*/ - -enum -{ - DSCIA_LYING1 = 37, - DSCIA_LYING2, - DSCIA_DEADSIT, - DSCIA_DEADTABLE1, - DSCIA_DEADTABLE2, - DSCIA_DEADTABLE3, - DSCIA_DEADHANG -}; - -class monster_sitting_scientist:NSTalkMonster -{ - int m_iPose; - void(void) monster_sitting_scientist; - - virtual void(void) Respawn; - virtual void(void) Spawned; - virtual void(void) Death; - virtual void(void) Gib; - virtual void(string, string) SpawnKey; -}; - -void -monster_sitting_scientist::Gib(void) -{ - SetTakedamage(DAMAGE_NO); - FX_GibHuman(GetOrigin(), vectoangles(GetOrigin() - g_dmg_eAttacker.origin), g_dmg_iDamage * 2.0f); - Disappear(); -} - -void -monster_sitting_scientist::Death(void) -{ - if (GetHealth() < -50) { - Gib(); - return; - } -} - -void -monster_sitting_scientist::Respawn(void) -{ - v_angle = GetSpawnAngles(); - v_angle[0] = Math_FixDelta(v_angle[0]); - v_angle[1] = Math_FixDelta(v_angle[1]); - v_angle[2] = Math_FixDelta(v_angle[2]); - - SetOrigin(GetSpawnOrigin()); - SetAngles(v_angle); - SetSolid(SOLID_BBOX); - SetMovetype(MOVETYPE_NONE); - SetModel(GetSpawnModel()); - SetSize([-14,-14,0],[14,14,36]); - SetTakedamage(DAMAGE_YES); - SetHealth(0); - SetVelocity([0,0,0]); - SetFrame(74); - DropToFloor(); - iBleeds = TRUE; -} - -void -monster_sitting_scientist::SpawnKey(string strKey, string strValue) -{ - switch (strKey) { - case "pose": - m_iPose = stoi(strValue); - break; - case "body": - SetBody(stoi(strValue) + 1); - break; - case "skin": - SetSkin(stoi(strValue)); - break; - default: - super::SpawnKey(strKey, strValue); - } -} - -void -monster_sitting_scientist::Spawned(void) -{ - model = "models/scientist.mdl"; - - super::Spawned(); - - /* has the body not been overriden, etc. choose a character for us */ - if (m_iBody == -1) { - SetBody((int)floor(random(1,5))); - } - - switch (m_iBody) { - case 1: - m_flPitch = 105; - netname = "Walter"; - break; - case 2: - m_flPitch = 100; - netname = "Einstein"; - break; - case 3: - m_flPitch = 95; - netname = "Luther"; - SetSkin(1); - break; - default: - m_flPitch = 100; - netname = "Slick"; - } -} - -void -monster_sitting_scientist::monster_sitting_scientist(void) -{ -} diff --git a/src/server/monster_tentacle.qc b/src/server/monster_tentacle.qc deleted file mode 100644 index f9cab02..0000000 --- a/src/server/monster_tentacle.qc +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_tentacle (0 0.8 0.8) (-32 -32 0) (32 32 64) - -HALF-LIFE (1998) ENTITY - -Tentacle - -*/ - -enum -{ - TE_IDLEPIT, - TE_RISE, - TE_TOFLOOR1, - TE_IDLE, - TE_PISSED, - TE_SMALLRISE, - TE_WAVE, - TE_STRIKE, - TE_TAP, - TE_ROTATE, - TE_REAR, - TE_REARIDLE, - TE_TOLEV1, - TE_IDELLEV1, - TE_FIDGETLEV1, - TE_SNAPLEV1, - TE_STRIKELEV1, - TE_TAPLEV1, - TE_ROTATELEV1, - TE_REARLEV1, - TE_REARIDELLEV1, - TE_TOLEV2, - TE_IDLELEV2, - TE_FIDGETLEV2, - TE_SNAPLEV2, - TE_SWINGLEV2, - TE_TUTLEV2, - TE_STRIKELEV2, - TE_TAPLEV2, - TE_ROTATELEV2, - TE_REARLEV2, - TE_FREAKDIE, - TE_REARIDLE2, - TE_TOLEV3, - TE_IDLELEV3, - TE_FIDGETLEV3, - TE_SIDELEV3, - TE_SWIPELEV3, - TE_STRIKELEV3, - TE_TAPLEV3, - TE_ROTATELEV3, - TE_REARLEV3, - TE_REARIDLELEV3, - TE_DOORLEV1, - TE_ENGINELEV3, - TE_ENGINEIDLE, - TE_ENGINESWAY, - TE_ENGINESWAT, - TE_ENGINEBOB, - TE_ENGINEDEATH, - TE_ENGINEDEATH2, - TE_ENGINEDEATH3, - TE_GRABIDLE, - TE_GRAB -}; - -class monster_tentacle:HLXenMonster -{ - float m_flIdleTime; - - void(void) monster_tentacle; - - virtual void(void) IdleNoise; - virtual void(void) Respawn; - virtual void(void) Spawned; -}; - -void -monster_tentacle::IdleNoise(void) -{ - /* don't make noise if we're dead (corpse) */ - if (IsAlive() == false) { - return; - } - - if (m_flIdleTime > time) { - return; - } - /* timing needs to adjusted as sounds conflict */ - m_flIdleTime = time + random(2,10); - - Sound_Play(this, CHAN_VOICE, "monster_tentacle.idle"); -} - -void -monster_tentacle::Respawn(void) -{ - super::Respawn(); - /* not entirely true, takes damage then retreats and reheals */ - takedamage = DAMAGE_NO; - iBleeds = FALSE; - SetFrame(TE_IDLE); -} - -void -monster_tentacle::Spawned(void) -{ - Sound_Precache("monster_tentacle.alert"); - Sound_Precache("monster_tentacle.attack"); - Sound_Precache("monster_tentacle.die"); - Sound_Precache("monster_tentacle.idle"); - netname = "Tentacle"; - model = "models/tentacle2.mdl"; - base_mins = [-32,-32,0]; - base_maxs = [32,32,64]; - - super::Spawned(); -} - -void -monster_tentacle::monster_tentacle(void) -{ -} diff --git a/src/server/monster_turret.qc b/src/server/monster_turret.qc deleted file mode 100644 index 08472ed..0000000 --- a/src/server/monster_turret.qc +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * 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. - */ - -/*QUAKED monster_turret (0 0.8 0.8) (-16 -16 0) (16 16 72) - -HALF-LIFE (1998) ENTITY - -Automatic Turret (large) - -*/ - -enum -{ - TUR_IDLE, - TUR_FIRE, - TUR_SPIN, - TUR_DEPLOY, - TUR_RETIRE, - TUR_DIE -}; - -class monster_turret:NSMonster -{ - void(void) monster_turret; - - virtual void Spawned(void); -}; - -void monster_turret::monster_turret(void) -{ -} - -void monster_turret::Spawned(void) -{ - netname = "Turret"; - model = "models/turret.mdl"; - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; - - super::Spawned(); -} diff --git a/src/shared/fx_corpse.qc b/src/shared/fx_corpse.qc index 990aa6e..3c12f7a 100644 --- a/src/shared/fx_corpse.qc +++ b/src/shared/fx_corpse.qc @@ -68,6 +68,7 @@ FX_Corpse_Spawn(player pl, float anim) body_next.velocity = (pl.velocity) + [0,0,120]; body_next.colormap = pl.colormap; body_next.SetFrame(anim); + body_next.frame1time = 0.0f; body_next.ScheduleThink(FX_Corpse_Update, 0.0f); return (entity)body_next; } diff --git a/src/shared/player.qc b/src/shared/player.qc index 78d214c..dfb3644 100644 --- a/src/shared/player.qc +++ b/src/shared/player.qc @@ -582,6 +582,10 @@ player::SendEntity float player::SendEntity(entity ePEnt, float flChanged) { + /* just-in-case. */ + if (classname != "player") + return (0); + /* don't broadcast invisible players */ if (IsFakeSpectator() && ePEnt != this) return (0); diff --git a/src/shared/w_tripmine.qc b/src/shared/w_tripmine.qc index c293c94..80b0c77 100644 --- a/src/shared/w_tripmine.qc +++ b/src/shared/w_tripmine.qc @@ -65,20 +65,22 @@ monster_tripmine::SendEntity(entity pvsent, float flags) void monster_tripmine::Trip(int walkthrough) { - float dmg; + vector explosionPos = GetOrigin(); + float explosionDamage = Skill_GetValue("plr_tripmine", 150); + float explosionRadius = explosionDamage * 2.5f; + if (!walkthrough) { real_owner = g_dmg_eAttacker; } /* This is to prevent infinite loops in Damage_Radius */ - Death = - Pain = __NULL__; - takedamage = DAMAGE_NO; - dmg = Skill_GetValue("plr_tripmine", 150); - - pointparticles(particleeffectnum("fx_explosion.main"), origin, [0,0,0], 1); - Damage_Radius(origin, real_owner, dmg, dmg * 2.5f, TRUE, WEAPON_TRIPMINE); - Sound_Play(self, CHAN_VOICE, "fx.explosion"); + SetPainCallback(__NULL__); + SetDeathCallback(__NULL__); + SetTakedamage(DAMAGE_NO); + + pointparticles(particleeffectnum("fx_explosion.main"), GetOrigin(), [0,0,0], 1); + Damage_Radius(explosionPos, real_owner, explosionDamage, explosionRadius, true, WEAPON_TRIPMINE); + StartSoundDef("fx.explosion", CHAN_VOICE, true); Destroy(); } @@ -94,16 +96,16 @@ monster_tripmine::Ready(void) traceline(origin, origin + GetForward() * 2048, FALSE, this); /* first time we're marked as ready, we play a sound and set the distance */ - if (takedamage == DAMAGE_NO) { + if (CanBeDamaged() == false) { /* Laser calibrated to N units! */ m_vecEndPos = trace_endpos; SetHealth(1); SetTakedamage(DAMAGE_YES); StartSoundDef("weapon_tripmine.activate", CHAN_WEAPON, true); SetSolid(SOLID_BBOX); - Death = - Pain = Damaged; - SendFlags = -1; + SetPainCallback(Damaged); + SetDeathCallback(Damaged); + ForceNetworkUpdate(); } /* laser shorter than when calibrated, explode! */ @@ -204,6 +206,7 @@ void w_tripmine_precache(void) precache_model("models/v_tripmine.mdl"); #else precache_model("models/p_tripmine.mdl"); + precache_model("models/v_tripmine.mdl"); #endif } diff --git a/zpak001.pk3dir/def/monsters/scientist.def b/zpak001.pk3dir/def/monsters/scientist.def index 3168251..ac805b4 100644 --- a/zpak001.pk3dir/def/monsters/scientist.def +++ b/zpak001.pk3dir/def/monsters/scientist.def @@ -63,7 +63,7 @@ entityDef monster_scientist } // pre-disaster - when "spawnflags" equals "256" { + when "spawnflags" contains "256" { "talk_ask" "" "talk_player_ask" "!SC_PQUEST" "talk_player_greet" "!SC_PHELLO" diff --git a/zpak001.pk3dir/def/weapons/357.def b/zpak001.pk3dir/def/weapons/357.def index a07fb57..c33a202 100644 --- a/zpak001.pk3dir/def/weapons/357.def +++ b/zpak001.pk3dir/def/weapons/357.def @@ -7,8 +7,8 @@ entityDef weapon_357 "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_357.mdl" - "inv_item" "$WEAPON_PYTHON" + "model" "models/w_357.mdl" + "inv_item" "$WEAPON_PYTHON" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } diff --git a/zpak001.pk3dir/def/weapons/9mmAR.def b/zpak001.pk3dir/def/weapons/9mmAR.def index d8559db..8605a2b 100644 --- a/zpak001.pk3dir/def/weapons/9mmAR.def +++ b/zpak001.pk3dir/def/weapons/9mmAR.def @@ -7,8 +7,8 @@ entityDef weapon_9mmAR "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_9mmAR.mdl" - "inv_item" "$WEAPON_MP5" + "model" "models/w_9mmAR.mdl" + "inv_item" "$WEAPON_MP5" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } @@ -21,22 +21,22 @@ entityDef weapon_mp5 entityDef projectile_ARgrenade { "spawnclass" "NSProjectile" - "model" "models/grenade.mdl" - "offset" "16 0 0" - "velocity" "800 0 0" + "model" "models/grenade.mdl" + "offset" "16 0 0" + "velocity" "800 0 0" "angular_velocity" "-300 0 0" - "gravity" "0.5" - "bounce" "1" - "mins" "0 0 0" - "maxs" "0 0 0" + "gravity" "0.5" + "bounce" "1" + "mins" "0 0 0" + "maxs" "0 0 0" "detonate_on_fuse" "0" "detonate_on_death" "1" "detonate_on_world" "1" "detonate_on_actor" "1" "snd_explode" "fx.explosion" - "model_detonate" "fx_explosion.main" - "decal_detonate" "ExplosionScorch" - "smoke_fly" "weapon_9mmAR.nadetrail" + "model_detonate" "fx_explosion.main" + "decal_detonate" "ExplosionScorch" + "smoke_fly" "weapon_9mmAR.nadetrail" "def_damage" "damage_ARgrneadeDirect" "def_splash_damage" "damage_ARgrneadeSplash" diff --git a/zpak001.pk3dir/def/weapons/9mmhandgun.def b/zpak001.pk3dir/def/weapons/9mmhandgun.def index 490dbbb..5eb9c27 100644 --- a/zpak001.pk3dir/def/weapons/9mmhandgun.def +++ b/zpak001.pk3dir/def/weapons/9mmhandgun.def @@ -7,8 +7,8 @@ entityDef weapon_9mmhandgun "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_9mmhandgun.mdl" - "inv_item" "$WEAPON_GLOCK" + "model" "models/w_9mmhandgun.mdl" + "inv_item" "$WEAPON_GLOCK" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } diff --git a/zpak001.pk3dir/def/weapons/crossbow.def b/zpak001.pk3dir/def/weapons/crossbow.def index 807f0ea..ffa7bab 100644 --- a/zpak001.pk3dir/def/weapons/crossbow.def +++ b/zpak001.pk3dir/def/weapons/crossbow.def @@ -7,8 +7,8 @@ entityDef weapon_crossbow "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_crossbow.mdl" - "inv_item" "$WEAPON_CROSSBOW" + "model" "models/w_crossbow.mdl" + "inv_item" "$WEAPON_CROSSBOW" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } @@ -16,13 +16,13 @@ entityDef weapon_crossbow entityDef projectile_arrow { "spawnclass" "NSProjectile" - "model" "models/crossbow_bolt.mdl" - "velocity" "2000 0 0" + "model" "models/crossbow_bolt.mdl" + "velocity" "2000 0 0" "angular_velocity" "0 0 20" - "mins" "0 0 0" - "maxs" "0 0 0" + "mins" "0 0 0" + "maxs" "0 0 0" "def_damage" "damage_arrowDirect" - "model_detonate" "fx_spark.main" + "model_detonate" "fx_spark.main" "snd_explode" "fx.spark" "detonate_on_fuse" "0" "detonate_on_death" "1" @@ -37,13 +37,13 @@ entityDef damage_arrowDirect entityDef projectile_arrowExplosive { - "inherit" "projectile_arrow" - "smoke_fly" "weapon_crossbow.trail" + "inherit" "projectile_arrow" + "smoke_fly" "weapon_crossbow.trail" "def_damage" "" "def_splash_damage" "damage_arrowSplash" - "model_detonate" "fx_explosion.main" + "model_detonate" "fx_explosion.main" "snd_explode" "fx.explosion" - "decal_detonate" "ExplosionScorch" + "decal_detonate" "ExplosionScorch" } entityDef damage_arrowSplash diff --git a/zpak001.pk3dir/def/weapons/crowbar.def b/zpak001.pk3dir/def/weapons/crowbar.def index d848624..faab1d3 100644 --- a/zpak001.pk3dir/def/weapons/crowbar.def +++ b/zpak001.pk3dir/def/weapons/crowbar.def @@ -7,8 +7,8 @@ entityDef weapon_crowbar "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_crowbar.mdl" - "inv_item" "$WEAPON_CROWBAR" + "model" "models/w_crowbar.mdl" + "inv_item" "$WEAPON_CROWBAR" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } \ No newline at end of file diff --git a/zpak001.pk3dir/def/weapons/egon.def b/zpak001.pk3dir/def/weapons/egon.def index c319a9a..847877f 100644 --- a/zpak001.pk3dir/def/weapons/egon.def +++ b/zpak001.pk3dir/def/weapons/egon.def @@ -7,8 +7,8 @@ entityDef weapon_egon "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_egon.mdl" - "inv_item" "$WEAPON_EGON" + "model" "models/w_egon.mdl" + "inv_item" "$WEAPON_EGON" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } \ No newline at end of file diff --git a/zpak001.pk3dir/def/weapons/gauss.def b/zpak001.pk3dir/def/weapons/gauss.def index 0fabf16..9b945e3 100644 --- a/zpak001.pk3dir/def/weapons/gauss.def +++ b/zpak001.pk3dir/def/weapons/gauss.def @@ -7,8 +7,8 @@ entityDef weapon_gauss "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_gauss.mdl" - "inv_item" "$WEAPON_GAUSS" + "model" "models/w_gauss.mdl" + "inv_item" "$WEAPON_GAUSS" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } \ No newline at end of file diff --git a/zpak001.pk3dir/def/weapons/handgrenade.def b/zpak001.pk3dir/def/weapons/handgrenade.def index 1fc72c6..c6d86c1 100644 --- a/zpak001.pk3dir/def/weapons/handgrenade.def +++ b/zpak001.pk3dir/def/weapons/handgrenade.def @@ -7,8 +7,8 @@ entityDef weapon_handgrenade "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_grenade.mdl" - "inv_item" "$WEAPON_HANDGRENADE" + "model" "models/w_grenade.mdl" + "inv_item" "$WEAPON_HANDGRENADE" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } @@ -16,16 +16,16 @@ entityDef weapon_handgrenade entityDef projectile_handgrenade { "spawnclass" "NSProjectile" - "model" "models/w_grenade.mdl" - "frame" "1" - "fuse" "4" + "model" "models/w_grenade.mdl" + "frame" "1" + "fuse" "4" "detonate_on_fuse" "1" - "bounce" "1" + "bounce" "1" "angular_velocity" "-350 0 0" - "model_detonate" "fx_explosion.main" + "model_detonate" "fx_explosion.main" "snd_explode" "fx.explosion" "snd_bounce" "weapon_handgrenade.bounce" - "decal_detonate" "ExplosionScorch" + "decal_detonate" "ExplosionScorch" "def_damage" "damage_handgrenadeDirect" "def_splash_damage" "damage_handgrenadeSplash" diff --git a/zpak001.pk3dir/def/weapons/hornetgun.def b/zpak001.pk3dir/def/weapons/hornetgun.def index 8647bc3..395392e 100644 --- a/zpak001.pk3dir/def/weapons/hornetgun.def +++ b/zpak001.pk3dir/def/weapons/hornetgun.def @@ -7,8 +7,8 @@ entityDef weapon_hornetgun "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_hgun.mdl" - "inv_item" "$WEAPON_HORNETGUN" + "model" "models/w_hgun.mdl" + "inv_item" "$WEAPON_HORNETGUN" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } \ No newline at end of file diff --git a/zpak001.pk3dir/def/weapons/rpg.def b/zpak001.pk3dir/def/weapons/rpg.def index a8c5be4..9bb11a8 100644 --- a/zpak001.pk3dir/def/weapons/rpg.def +++ b/zpak001.pk3dir/def/weapons/rpg.def @@ -7,8 +7,8 @@ entityDef weapon_rpg "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_rpg.mdl" - "inv_item" "$WEAPON_RPG" + "model" "models/w_rpg.mdl" + "inv_item" "$WEAPON_RPG" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } @@ -16,49 +16,49 @@ entityDef weapon_rpg entityDef projectile_rocket { "spawnclass" "NSProjectile" - "model" "models/rpgrocket.mdl" + "model" "models/rpgrocket.mdl" "def_damage" "damage_rocketDirect" "def_splash_damage" "damage_rocketSplash" - "health" "0" - "velocity" "250" - "angular_velocity" "0 0 200" - "fuse" "10" - "detonate_on_fuse" "0" - "detonate_on_death" "1" - "detonate_on_world" "1" - "detonate_on_actor" "1" + "health" "0" + "velocity" "250" + "angular_velocity" "0 0 200" + "fuse" "10" + "detonate_on_fuse" "0" + "detonate_on_death" "1" + "detonate_on_world" "1" + "detonate_on_actor" "1" "impact_damage_effect" "1" - "impact_gib" "1" + "impact_gib" "1" - "thrust" "2000" + "thrust" "2000" "thrust_start" "0.1" "thrust_end" "2" - "smoke_fly" "weapon_rpg.trail" - "decal_detonate" "ExplosionScorch" - "model_detonate" "fx_explosion.main" + "smoke_fly" "weapon_rpg.trail" + "decal_detonate" "ExplosionScorch" + "model_detonate" "fx_explosion.main" "light_color" "1 0.8 0.4" "light_radius" "160" "light_offset" "0 0 0" - "explode_light_color" "2 1.6 0.8" - "explode_light_radius" "320" + "explode_light_color" "2 1.6 0.8" + "explode_light_radius" "320" "explode_light_fadetime" "0.5" - "snd_explode" "fx.explosion" + "snd_explode" "fx.explosion" } entityDef projectile_rocket_homing { - "inherit" "projectile_rocket" + "inherit" "projectile_rocket" "thrust_homing" "1" } entityDef damage_rocketDirect { - "damage" "skill:plr_rocketlauncher_impact" + "damage" "skill:plr_rocketlauncher_impact" "damage_random" "skill:plr_rocketlauncher_impact_rand" } diff --git a/zpak001.pk3dir/def/weapons/satchel.def b/zpak001.pk3dir/def/weapons/satchel.def index 02ad443..6ea80ff 100644 --- a/zpak001.pk3dir/def/weapons/satchel.def +++ b/zpak001.pk3dir/def/weapons/satchel.def @@ -7,8 +7,8 @@ entityDef weapon_satchel "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_satchel.mdl" - "inv_item" "$WEAPON_SATCHEL" + "model" "models/w_satchel.mdl" + "inv_item" "$WEAPON_SATCHEL" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } @@ -16,22 +16,22 @@ entityDef weapon_satchel entityDef projectile_satchel { "spawnclass" "NSProjectile" - "model" "models/w_satchel.mdl" - "velocity" "274 0 0" + "model" "models/w_satchel.mdl" + "velocity" "274 0 0" "angular_velocity" "0 400 0" - "friction" "0.8" - "gravity" "0.5" - "bounce" "1" - "frame" "1" - "mins" "-1 -1 -4" - "maxs" "1 1 4" + "friction" "0.8" + "gravity" "0.5" + "bounce" "1" + "frame" "1" + "mins" "-1 -1 -4" + "maxs" "1 1 4" "snd_bounce" "weapon_satchel.bounce" "inherit_velocity" "1" "def_splash_damage" "damage_satchelExplosion" - "model_detonate" "fx_explosion.main" + "model_detonate" "fx_explosion.main" "snd_explode" "fx.explosion" - "decal_detonate" "ExplosionScorch" + "decal_detonate" "ExplosionScorch" } diff --git a/zpak001.pk3dir/def/weapons/shotgun.def b/zpak001.pk3dir/def/weapons/shotgun.def index 2bcf1f1..511e938 100644 --- a/zpak001.pk3dir/def/weapons/shotgun.def +++ b/zpak001.pk3dir/def/weapons/shotgun.def @@ -7,8 +7,8 @@ entityDef weapon_shotgun "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_shotgun.mdl" - "inv_item" "$WEAPON_SHOTGUN" + "model" "models/w_shotgun.mdl" + "inv_item" "$WEAPON_SHOTGUN" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } \ No newline at end of file diff --git a/zpak001.pk3dir/def/weapons/snark.def b/zpak001.pk3dir/def/weapons/snark.def index fb4bf40..d98082d 100644 --- a/zpak001.pk3dir/def/weapons/snark.def +++ b/zpak001.pk3dir/def/weapons/snark.def @@ -7,9 +7,9 @@ entityDef weapon_snark "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/w_sqknest.mdl" - "frame" "1" - "inv_item" "$WEAPON_SNARK" + "model" "models/w_sqknest.mdl" + "frame" "1" + "inv_item" "$WEAPON_SNARK" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } \ No newline at end of file diff --git a/zpak001.pk3dir/def/weapons/tripmine.def b/zpak001.pk3dir/def/weapons/tripmine.def index f0790be..b13bf48 100644 --- a/zpak001.pk3dir/def/weapons/tripmine.def +++ b/zpak001.pk3dir/def/weapons/tripmine.def @@ -7,11 +7,11 @@ entityDef weapon_tripmine "editor_rotatable" "1" "spawnclass" "NSItem" - "model" "models/v_tripmine.mdl" - "body0" "2" - "body1" "2" - "frame" "8" - "inv_item" "$WEAPON_TRIPMINE" + "model" "models/v_tripmine.mdl" + "body0" "2" + "body1" "2" + "frame" "8" + "inv_item" "$WEAPON_TRIPMINE" "snd_acquire" "weapon.pickup" "snd_respawn" "item.respawn" } \ No newline at end of file diff --git a/zpak001.pk3dir/particles/fx_explosion.cfg b/zpak001.pk3dir/particles/fx_explosion.cfg index eac3ce1..50938fe 100644 --- a/zpak001.pk3dir/particles/fx_explosion.cfg +++ b/zpak001.pk3dir/particles/fx_explosion.cfg @@ -77,17 +77,17 @@ r_part hotbits } r_part +main -{ +{ lighttime 1 - lightradius 350 - lightradiusfade 300 - lightrgb 1.0 0.5 0.4 - lightrgbfade 0.36 0.19 0.19 + lightradius 350 + lightradiusfade 300 + lightrgb 1.0 0.5 0.4 + lightrgbfade 0.36 0.19 0.19 count 0 0 2 spawnorg 0 32 orgadd 32 model "sprites/fexplo.spr" framestart=0 framecount=29 framerate=20 additive scalemin=0.5 scalemax=2.5 -} +} r_part +main { @@ -161,12 +161,12 @@ r_part spark } r_part +spark -{ +{ lighttime 1 - lightradius 64 - lightradiusfade 300 - lightrgb 1.0 0.5 0.4 - lightrgbfade 0.36 0.19 0.19 + lightradius 64 + lightradiusfade 300 + lightrgb 1.0 0.5 0.4 + lightrgbfade 0.36 0.19 0.19 count 0 0 1 model "sprites/muzzleflash.spr" framestart=0 framecount=2 framerate=20 additive scalemin=0.1 scalemax=0.5 -} +} diff --git a/zpak001.pk3dir/particles/fx_impact.cfg b/zpak001.pk3dir/particles/fx_impact.cfg index a9c2f36..1bd9d3d 100644 --- a/zpak001.pk3dir/particles/fx_impact.cfg +++ b/zpak001.pk3dir/particles/fx_impact.cfg @@ -72,19 +72,19 @@ r_part smoke_grey } r_part water -{ +{ count 0 0 1 model "sprites/wsplash3.spr" framestart=0 frameend=14 framerate=20 additive -} +} r_part slime -{ - lighttime 0.5 - lightradius 256 - lightradiusfade 300 - lightrgb 0.0 1.0 0.0 - lightrgbfade 0.0 0.0 0.0 -} +{ + lighttime 0.5 + lightradius 256 + lightradiusfade 300 + lightrgb 0.0 1.0 0.0 + lightrgbfade 0.0 0.0 0.0 +} r_part +slime { @@ -93,16 +93,16 @@ r_part +slime } r_part lava -{ - lighttime 0.5 - lightradius 256 - lightradiusfade 300 +{ + lighttime 0.5 + lightradius 256 + lightradiusfade 300 lightrgb 1.0 0.0 0.0 - lightrgbfade 0.0 0.0 0.0 -} + lightrgbfade 0.0 0.0 0.0 +} r_part +lava { count 0 0 1 model "sprites/wsplash3.spr" framestart=0 frameend=14 framerate=20 additive -} \ No newline at end of file +} diff --git a/zpak001.pk3dir/particles/fx_spark.cfg b/zpak001.pk3dir/particles/fx_spark.cfg index 4d546bd..9b0400c 100644 --- a/zpak001.pk3dir/particles/fx_spark.cfg +++ b/zpak001.pk3dir/particles/fx_spark.cfg @@ -17,12 +17,12 @@ r_part main } r_part +main -{ +{ lighttime 1 - lightradius 64 - lightradiusfade 300 - lightrgb 1.0 0.5 0.4 - lightrgbfade 0.36 0.19 0.19 + lightradius 64 + lightradiusfade 300 + lightrgb 1.0 0.5 0.4 + lightrgbfade 0.36 0.19 0.19 count 0 0 1 model "sprites/muzzleflash.spr" framestart=0 framecount=2 framerate=20 additive scalemin=0.1 scalemax=0.5 -} \ No newline at end of file +} diff --git a/zpak001.pk3dir/particles/impact_default.cfg b/zpak001.pk3dir/particles/impact_default.cfg index 0f633fe..e5257da 100644 --- a/zpak001.pk3dir/particles/impact_default.cfg +++ b/zpak001.pk3dir/particles/impact_default.cfg @@ -39,11 +39,11 @@ r_part +main // unused ricochet sprite, reactivated r_part +main -{ +{ count 0 0 1 orgadd 8 model "sprites/richo2.spr" framestart=0 framecount=15 framerate=20 additive scalemin=0.25 scalemax=0.55 alpha=0.65 -} +} // emitter for our bullet hole dust r_part +main @@ -73,4 +73,4 @@ r_part dustparts randomvel 10 veladd 50 gravity 800 -} \ No newline at end of file +} diff --git a/zpak001.pk3dir/particles/impact_unbreakable.cfg b/zpak001.pk3dir/particles/impact_unbreakable.cfg index fa35b26..421cb74 100644 --- a/zpak001.pk3dir/particles/impact_unbreakable.cfg +++ b/zpak001.pk3dir/particles/impact_unbreakable.cfg @@ -18,13 +18,13 @@ r_part main } r_part +main -{ +{ count 0 0 1 orgadd 8 model "sprites/richo1.spr" framestart=0 framecount=3 framerate=20 additive scalemin=0.5 scalemax=0.5 lighttime 1 - lightradius 64 - lightradiusfade 300 - lightrgb 1.0 0.5 0.4 - lightrgbfade 0.36 0.19 0.19 -} \ No newline at end of file + lightradius 64 + lightradiusfade 300 + lightrgb 1.0 0.5 0.4 + lightrgbfade 0.36 0.19 0.19 +} diff --git a/zpak001.pk3dir/particles/weapon_9mmAR.cfg b/zpak001.pk3dir/particles/weapon_9mmAR.cfg index 1940045..3900b1f 100644 --- a/zpak001.pk3dir/particles/weapon_9mmAR.cfg +++ b/zpak001.pk3dir/particles/weapon_9mmAR.cfg @@ -1,6 +1,5 @@ r_part nadetrail { - step 4 die 1 type beam @@ -9,7 +8,6 @@ r_part nadetrail emitinterval 5 } - r_part smoke { texture "particles/fteparticlefont.tga" @@ -23,4 +21,4 @@ r_part smoke spawnmode ball randomvel 10 gravity -25 -} \ No newline at end of file +} diff --git a/zpak001.pk3dir/sound/fx_valve.sndshd b/zpak001.pk3dir/sound/fx_valve.sndshd index 61799c2..0bdad40 100644 --- a/zpak001.pk3dir/sound/fx_valve.sndshd +++ b/zpak001.pk3dir/sound/fx_valve.sndshd @@ -4,7 +4,7 @@ fx.explosion sample weapons/explode3.wav sample weapons/explode4.wav sample weapons/explode5.wav - shakes 1.5 + shakes 3.0 } fx.explosion_dist diff --git a/zpak001.pk3dir/sound/player.sndshd b/zpak001.pk3dir/sound/player.sndshd index 6c6503d..06d1ce6 100644 --- a/zpak001.pk3dir/sound/player.sndshd +++ b/zpak001.pk3dir/sound/player.sndshd @@ -97,4 +97,20 @@ Player.FlashLightOff SprayCan.Paint { sample player/sprayer.wav +} + +Player.Wade +{ + sample player/pl_wade1.wav + sample player/pl_wade2.wav + sample player/pl_wade3.wav + sample player/pl_wade4.wav +} + +Player.Swim +{ + sample player/pl_swim1.wav + sample player/pl_swim2.wav + sample player/pl_swim3.wav + sample player/pl_swim4.wav } \ No newline at end of file