mirror of
https://github.com/yquake2/rogue.git
synced 2024-11-22 12:21:44 +00:00
Change show_hostile from int to float and remove unnecessary casts.
In the vanilla code show_hostile was a qboolean what's clearly wrong. For wome reasons I don't remember I changed it to an integer and added the casts. This is problematic because show_hostile is derived from level.time which is a float. The loss in precision broke some corner cases like monsters becoming activated when they shouldn't. Found, analyzed and reported by @BjossiAlfreds in yquake2/yquake2#525.
This commit is contained in:
parent
6fb2d6e4da
commit
f0793d17f8
2 changed files with 5 additions and 5 deletions
|
@ -503,7 +503,7 @@ FoundTarget(edict_t *self)
|
|||
level.sight_entity->light_level = 128;
|
||||
}
|
||||
|
||||
self->show_hostile = (int)level.time + 1; /* wake up other monsters */
|
||||
self->show_hostile = level.time + 1; /* wake up other monsters */
|
||||
|
||||
VectorCopy(self->enemy->s.origin, self->monsterinfo.last_sighting);
|
||||
self->monsterinfo.trail_time = level.time;
|
||||
|
@ -692,7 +692,7 @@ FindTarget(edict_t *self)
|
|||
|
||||
if (r == RANGE_NEAR)
|
||||
{
|
||||
if ((client->show_hostile < (int)level.time) && !infront(self, client))
|
||||
if ((client->show_hostile < level.time) && !infront(self, client))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -1199,7 +1199,7 @@ ai_checkattack(edict_t *self, float dist)
|
|||
}
|
||||
else
|
||||
{
|
||||
self->show_hostile = (int)level.time + 1;
|
||||
self->show_hostile = level.time + 1;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1279,7 +1279,7 @@ ai_checkattack(edict_t *self, float dist)
|
|||
}
|
||||
}
|
||||
|
||||
self->show_hostile = (int)level.time + 1; /* wake up other monsters */
|
||||
self->show_hostile = level.time + 1; /* wake up other monsters */
|
||||
|
||||
/* check knowledge of enemy */
|
||||
enemy_vis = visible(self, self->enemy);
|
||||
|
|
|
@ -1238,8 +1238,8 @@ struct edict_s
|
|||
int max_health;
|
||||
int gib_health;
|
||||
int deadflag;
|
||||
int show_hostile;
|
||||
|
||||
float show_hostile;
|
||||
float powerarmor_time;
|
||||
|
||||
char *map; /* target_changelevel */
|
||||
|
|
Loading…
Reference in a new issue