Fixed DetectSmokeGrenades and LookAt crash

This commit is contained in:
smallmodel 2023-10-18 19:59:23 +02:00
parent 3486b590eb
commit f82b6b75ff
No known key found for this signature in database
GPG key ID: 9F2D623CEDF08512

View file

@ -4493,8 +4493,10 @@ Change current look entity.
void Actor::LookAt(Listener *l) void Actor::LookAt(Listener *l)
{ {
ClearLookEntity(); ClearLookEntity();
if (!l && (g_showlookat->integer == entnum || g_showlookat->integer == -1)) { if (!l) {
if (g_showlookat->integer == entnum || g_showlookat->integer == -1) {
Com_Printf("Script lookat: %i %i %s cleared lookat\n", entnum, radnum, TargetName().c_str()); Com_Printf("Script lookat: %i %i %s cleared lookat\n", entnum, radnum, TargetName().c_str());
}
return; return;
} }
@ -4856,7 +4858,7 @@ Give weapon to actor.
*/ */
void Actor::EventGiveWeapon(Event *ev) void Actor::EventGiveWeapon(Event *ev)
{ {
Event e1(EV_Listener_ExecuteScript); Event event(EV_Listener_ExecuteScript);
str weapName = ev->GetString(1); str weapName = ev->GetString(1);
weapName.tolower(); weapName.tolower();
@ -4871,14 +4873,10 @@ void Actor::EventGiveWeapon(Event *ev)
setModel(); setModel();
e1.AddConstString(STRING_GLOBAL_WEAPON_SCR); event.AddConstString(STRING_GLOBAL_WEAPON_SCR);
e1.AddString(weapName); event.AddString(weapName);
gi.Printf(
"EventGiveWeapon script: %s weapName: %s \n", ExecuteScript(&event);
Director.GetString(STRING_GLOBAL_WEAPON_SCR).c_str(),
weapName.c_str()
);
ExecuteScript(&e1);
} }
/* /*
@ -6433,13 +6431,18 @@ void Actor::DetectSmokeGrenades(void)
} }
sprite = G_GetRandomSmokeSprite(); sprite = G_GetRandomSmokeSprite();
if (!sprite || !sprite->owner || sprite->owner->m_Team == m_Team) { if (!sprite || !sprite->owner) {
Vector eyePos; return;
float fDistSquared; }
eyePos = VirtualEyePosition(); if (sprite->owner->m_Team != m_Team) {
fDistSquared = (sprite->origin - eyePos).lengthSquared(); return;
if (fDistSquared > 65536 || InFOV(sprite->origin) == true) { }
const Vector eyePos = VirtualEyePosition();
const float fDistSquared = (sprite->origin - eyePos).lengthSquared();
if (fDistSquared > Square(256) || InFOV(sprite->origin)) {
if (G_SightTrace( if (G_SightTrace(
eyePos, eyePos,
vec_zero, vec_zero,
@ -6455,7 +6458,6 @@ void Actor::DetectSmokeGrenades(void)
} }
} }
} }
}
/* /*
=============== ===============