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) {
Com_Printf("Script lookat: %i %i %s cleared lookat\n", entnum, radnum, TargetName().c_str()); if (g_showlookat->integer == entnum || g_showlookat->integer == -1) {
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,26 +6431,30 @@ 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) { }
if (G_SightTrace(
eyePos, const Vector eyePos = VirtualEyePosition();
vec_zero, const float fDistSquared = (sprite->origin - eyePos).lengthSquared();
vec_zero,
sprite->origin, if (fDistSquared > Square(256) || InFOV(sprite->origin)) {
this, if (G_SightTrace(
NULL, eyePos,
MASK_CANSEE, vec_zero,
qfalse, vec_zero,
"Actor::DetectSmokeGrenades" sprite->origin,
)) { this,
m_PotentialEnemies.ConfirmEnemy(this, sprite->owner); NULL,
} MASK_CANSEE,
qfalse,
"Actor::DetectSmokeGrenades"
)) {
m_PotentialEnemies.ConfirmEnemy(this, sprite->owner);
} }
} }
} }