diff --git a/src/gs-entbase/shared/NSIO.h b/src/gs-entbase/shared/NSIO.h index bf969229..1ce5615c 100644 --- a/src/gs-entbase/shared/NSIO.h +++ b/src/gs-entbase/shared/NSIO.h @@ -19,7 +19,7 @@ which is our basic entity model. This is a very low-level class. You're never meant to use this. - Use NSEntity as a basis for your classes + Use NSEntity as a basis for your classes. */ class NSIO @@ -50,11 +50,15 @@ class NSIO virtual void(float) Save; virtual void(string,string) Restore; + + /* save game */ nonvirtual void(float, string, float) SaveFloat; nonvirtual void(float, string, int) SaveInt; nonvirtual void(float, string, string) SaveString; nonvirtual void(float, string, vector) SaveVector; nonvirtual void(float, string, bool) SaveBool; + + /* load game */ nonvirtual float(string) ReadFloat; nonvirtual int(string) ReadInt; nonvirtual string(string) ReadString; diff --git a/src/gs-entbase/shared/NSMonster.h b/src/gs-entbase/shared/NSMonster.h index 161d6446..11ebc554 100644 --- a/src/gs-entbase/shared/NSMonster.h +++ b/src/gs-entbase/shared/NSMonster.h @@ -222,7 +222,8 @@ class NSMonster:NSSurfacePropEntity void(void) NSMonster; -#ifdef SERVER +#ifdef SERVER + /* overrides */ virtual void(float) Save; virtual void(string,string) Restore; diff --git a/src/gs-entbase/shared/NSTalkMonster.h b/src/gs-entbase/shared/NSTalkMonster.h index 9764240a..df7861f0 100644 --- a/src/gs-entbase/shared/NSTalkMonster.h +++ b/src/gs-entbase/shared/NSTalkMonster.h @@ -72,6 +72,8 @@ class NSTalkMonster:NSMonster sound_t *m_pSentenceQue; int m_iSentenceCount; int m_iSentencePos; + float m_sndVoiceOffs; + bool m_bWasPaused; #endif void(void) NSTalkMonster; diff --git a/src/gs-entbase/shared/NSTalkMonster.qc b/src/gs-entbase/shared/NSTalkMonster.qc index 628e3ac6..81f0097e 100644 --- a/src/gs-entbase/shared/NSTalkMonster.qc +++ b/src/gs-entbase/shared/NSTalkMonster.qc @@ -777,6 +777,19 @@ NSTalkMonster::predraw(void) m_flBaseTime = frame1time; ProcessWordQue(); + if (serverkeyfloat(SERVERKEY_PAUSESTATE) != 1) { + if (m_bWasPaused == true) { + soundupdate(this, CHAN_VOICE, "", 1.0, ATTN_NORM, 0, 0, -m_sndVoiceOffs); + } + m_sndVoiceOffs = getsoundtime(this, CHAN_VOICE); + m_bWasPaused = false; + } else { + if (m_bWasPaused == false) { + soundupdate(this, CHAN_VOICE, "", 0.0, ATTN_NORM, 0, 0, -m_sndVoiceOffs); + } + m_bWasPaused = true; + } + return render; }