From 0ae901f5e17cf2674773ebc9b59a5b94e260fc3d Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Mon, 18 Jul 2022 09:22:18 -0700 Subject: [PATCH] NSMonster: Add InAnimation() method. Also prohibit movement when in an animation. --- src/gs-entbase/shared/NSMonster.h | 1 + src/gs-entbase/shared/NSMonster.qc | 18 +++++++++++++++--- src/gs-entbase/shared/NSNavAI.qc | 8 +++++++- src/server/entry.qc | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/gs-entbase/shared/NSMonster.h b/src/gs-entbase/shared/NSMonster.h index 43d79f03..9a637eec 100644 --- a/src/gs-entbase/shared/NSMonster.h +++ b/src/gs-entbase/shared/NSMonster.h @@ -271,6 +271,7 @@ class NSMonster:NSNavAI virtual int(void) AnimRun; virtual void(float) AnimPlay; virtual void(void) AnimationUpdate; + virtual bool(void) InAnimation; /* states */ virtual void(monsterState_e, monsterState_e) StateChanged; diff --git a/src/gs-entbase/shared/NSMonster.qc b/src/gs-entbase/shared/NSMonster.qc index 3cb45280..8a308ebe 100644 --- a/src/gs-entbase/shared/NSMonster.qc +++ b/src/gs-entbase/shared/NSMonster.qc @@ -91,6 +91,12 @@ NSMonster::AnimPlay(float seq) m_flAnimTime = time + frameduration(modelindex, frame); } +bool +NSMonster::InAnimation(void) +{ + return (m_flAnimTime > time) ? true : false; +} + void NSMonster::Sound(string msg) { @@ -100,7 +106,7 @@ NSMonster::Sound(string msg) void NSMonster::Gib(void) { - takedamage = DAMAGE_NO; + SetTakedamage(DAMAGE_NO); FX_GibHuman(origin, vectoangles(origin - g_dmg_eAttacker.origin), g_dmg_iDamage * 2.0f); Hide(); } @@ -594,8 +600,14 @@ NSMonster::Physics(void) AnimationUpdate(); } - CheckRoute(); - WalkRoute(); + if (InAnimation() == false) { + CheckRoute(); + WalkRoute(); + } else { + input_movevalues = [0,0,0]; + + } + hitcontentsmaski = CONTENTBITS_MONSTER; if (CanCrouch()) diff --git a/src/gs-entbase/shared/NSNavAI.qc b/src/gs-entbase/shared/NSNavAI.qc index 0ea02719..6dccdb28 100644 --- a/src/gs-entbase/shared/NSNavAI.qc +++ b/src/gs-entbase/shared/NSNavAI.qc @@ -206,5 +206,11 @@ NSNavAI::ClearRoute(void) void NSNavAI::NSNavAI(void) { - +#ifdef SERVER + m_iNodes = 0; + m_iCurNode = -1; + m_pRoute = __NULL__; + m_vecLastNode = [0,0,0]; + m_vecTurnAngle = [0,0,0]; +#endif } \ No newline at end of file diff --git a/src/server/entry.qc b/src/server/entry.qc index d09da8ed..13a5eb14 100644 --- a/src/server/entry.qc +++ b/src/server/entry.qc @@ -639,7 +639,7 @@ ConsoleCmd(string cmd) makevectors(pl.v_angle); if (unit.identity == 1) { - NSEntity ent = (NSEntity)unit + NSEntity ent = (NSEntity)unit; ent.Respawn(); } traceline(pl.origin, pl.origin + (v_forward * 1024), MOVE_NORMAL, pl);