func_breakable: ensure the 'break' sound is played when present. also ensure we precache the break sound ahead of time.
This commit is contained in:
parent
d45d2f1dc4
commit
3419c0df31
3 changed files with 21 additions and 6 deletions
|
@ -281,11 +281,16 @@ func_breakable::Respawn(void)
|
||||||
void
|
void
|
||||||
func_breakable::Pain(void)
|
func_breakable::Pain(void)
|
||||||
{
|
{
|
||||||
|
string painSound;
|
||||||
|
|
||||||
if (HasSpawnFlags(SF_TRIGGER)) {
|
if (HasSpawnFlags(SF_TRIGGER)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sound_Play(this, CHAN_VOICE, GetSurfaceData(SURFDATA_SND_BULLETIMPACT));
|
painSound = GetSurfaceData(SURFDATA_SND_BULLETIMPACT);
|
||||||
|
|
||||||
|
if (painSound)
|
||||||
|
StartSoundDef(painSound, CHAN_VOICE, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -294,13 +299,14 @@ func_breakable::Explode(void)
|
||||||
{
|
{
|
||||||
vector rp = WorldSpaceCenter();
|
vector rp = WorldSpaceCenter();
|
||||||
vector vecDir = vectoangles(rp - g_dmg_vecLocation);
|
vector vecDir = vectoangles(rp - g_dmg_vecLocation);
|
||||||
|
string breakModel = GetPropData(PROPINFO_BREAKMODEL);
|
||||||
|
|
||||||
BreakModel_Spawn(absmin, absmax, [0,0,0], m_flExplodeMag, vlen(size) / 10, GetPropData(PROPINFO_BREAKMODEL));
|
BreakModel_Spawn(absmin, absmax, [0,0,0], m_flExplodeMag, vlen(size) / 10, breakModel);
|
||||||
FX_Explosion(rp);
|
FX_Explosion(rp);
|
||||||
Damage_Radius(rp, this, m_flExplodeMag, m_flExplodeRad, TRUE, 0);
|
Damage_Radius(rp, this, m_flExplodeMag, m_flExplodeRad, TRUE, 0);
|
||||||
UseTargets(this, TRIG_TOGGLE, 0.0f); /* delay... ignored. */
|
UseTargets(this, TRIG_TOGGLE, 0.0f); /* delay... ignored. */
|
||||||
Disappear();
|
|
||||||
SetTakedamage(DAMAGE_NO);
|
SetTakedamage(DAMAGE_NO);
|
||||||
|
Disappear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -347,10 +353,15 @@ func_breakable::Death(void)
|
||||||
ScheduleThink(Explode, random(0.0f, 0.5f));
|
ScheduleThink(Explode, random(0.0f, 0.5f));
|
||||||
} else {
|
} else {
|
||||||
vector vecDir = vectoangles(WorldSpaceCenter() - g_dmg_vecLocation);
|
vector vecDir = vectoangles(WorldSpaceCenter() - g_dmg_vecLocation);
|
||||||
BreakModel_Spawn(absmin, absmax, vecDir, g_dmg_iDamage * 2.5, vlen(size) / 10, GetPropData(PROPINFO_BREAKMODEL));
|
string sndBreak = GetSurfaceData(SURFDATA_SND_BREAK);
|
||||||
|
string breakModel = GetPropData(PROPINFO_BREAKMODEL);
|
||||||
|
BreakModel_Spawn(absmin, absmax, vecDir, g_dmg_iDamage * 2.5, vlen(size) / 10, breakModel);
|
||||||
Disappear();
|
Disappear();
|
||||||
SetTakedamage(DAMAGE_NO);
|
SetTakedamage(DAMAGE_NO);
|
||||||
UseTargets(eActivator, TRIG_TOGGLE, 0.0f);
|
UseTargets(eActivator, TRIG_TOGGLE, 0.0f);
|
||||||
|
|
||||||
|
if (sndBreak)
|
||||||
|
StartSoundDef(sndBreak, CHAN_BODY, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,9 @@ NSClientPlayer::IsDead(void)
|
||||||
bool
|
bool
|
||||||
NSClientPlayer::IsPlayer(void)
|
NSClientPlayer::IsPlayer(void)
|
||||||
{
|
{
|
||||||
|
if (HasFlags(FL_FAKESPEC))
|
||||||
|
return (false);
|
||||||
|
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,11 +74,11 @@ SurfData_ParseField(int i, int a)
|
||||||
g_surfdata[i].m_sndStrain = argv(1);
|
g_surfdata[i].m_sndStrain = argv(1);
|
||||||
break;
|
break;
|
||||||
case "break":
|
case "break":
|
||||||
g_surfdata[i].m_sndRoll = argv(1);
|
g_surfdata[i].m_sndBreak = argv(1);
|
||||||
break;
|
break;
|
||||||
case "roll":
|
case "roll":
|
||||||
case "rolling":
|
case "rolling":
|
||||||
g_surfdata[i].m_sndBreak = argv(1);
|
g_surfdata[i].m_sndRoll = argv(1);
|
||||||
break;
|
break;
|
||||||
case "fx_bulletimpact":
|
case "fx_bulletimpact":
|
||||||
case "part_bulletimpact":
|
case "part_bulletimpact":
|
||||||
|
@ -332,6 +332,7 @@ SurfData_Init(void)
|
||||||
Sound_Precache(g_surfdata[i].m_sndStepLeft);
|
Sound_Precache(g_surfdata[i].m_sndStepLeft);
|
||||||
Sound_Precache(g_surfdata[i].m_sndStepRight);
|
Sound_Precache(g_surfdata[i].m_sndStepRight);
|
||||||
Sound_Precache(g_surfdata[i].m_sndBulletImpact);
|
Sound_Precache(g_surfdata[i].m_sndBulletImpact);
|
||||||
|
Sound_Precache(g_surfdata[i].m_sndBreak);
|
||||||
}
|
}
|
||||||
|
|
||||||
print(sprintf("surface data initialized with %i entries.\n", g_surfdata_count));
|
print(sprintf("surface data initialized with %i entries.\n", g_surfdata_count));
|
||||||
|
|
Loading…
Reference in a new issue