int G_BuildableDeconValue(gentity_t *ent) { HealthComponent* healthComponent = ent->entity->Get<HealthComponent>(); if (!healthComponent->Alive()) { return 0; } return (int)roundf((float)BG_Buildable(ent->s.modelindex)->buildPoints * healthComponent->HealthFraction()); }
void G_CheckCkitRepair( gentity_t *self ) { vec3_t viewOrigin, forward, end; trace_t tr; gentity_t *traceEnt; if ( self->client->ps.weaponTime > 0 || self->client->ps.stats[ STAT_MISC ] > 0 ) { return; } BG_GetClientViewOrigin( &self->client->ps, viewOrigin ); AngleVectors( self->client->ps.viewangles, forward, nullptr, nullptr ); VectorMA( viewOrigin, 100, forward, end ); trap_Trace( &tr, viewOrigin, nullptr, nullptr, end, self->s.number, MASK_PLAYERSOLID, 0 ); traceEnt = &g_entities[ tr.entityNum ]; if ( tr.fraction < 1.0f && traceEnt->spawned && traceEnt->s.eType == ET_BUILDABLE && traceEnt->buildableTeam == TEAM_HUMANS ) { HealthComponent *healthComponent = traceEnt->entity->Get<HealthComponent>(); if (healthComponent && healthComponent->Alive() && !healthComponent->FullHealth()) { traceEnt->entity->Heal(HBUILD_HEALRATE, nullptr); if (healthComponent->FullHealth()) { G_AddEvent(self, EV_BUILD_REPAIRED, 0); } else { G_AddEvent(self, EV_BUILD_REPAIR, 0); } self->client->ps.weaponTime += BG_Weapon( self->client->ps.weapon )->repeatRate1; } } }
bool Utility::Dead(Entity &entity) { HealthComponent* healthComponent = entity.Get<HealthComponent>(); return (healthComponent && !healthComponent->Alive()); }