diff --git a/src/character.h b/src/character.h index 7e86944..9c67ef4 100644 --- a/src/character.h +++ b/src/character.h @@ -69,6 +69,10 @@ struct Character : Controller { updateZone(); } + bool isActiveTarget() { + return flags.state == TR::Entity::asActive && !flags.invisible && health > 0.0f; + } + virtual int getRoomIndex() const { int index = Controller::getRoomIndex(); diff --git a/src/lara.h b/src/lara.h index aa35873..747babf 100644 --- a/src/lara.h +++ b/src/lara.h @@ -1246,7 +1246,7 @@ struct Lara : Character { bool retarget = false; if (Core::settings.controls[camera->cameraIndex].retarget) { for (int i = 0; i < 2; i++) - if (!arms[i].tracking || ((Character*)arms[i].tracking)->health <= 0.0f) { + if (!arms[i].tracking || !((Character*)arms[i].tracking)->isActiveTarget()) { retarget = true; break; } @@ -1331,7 +1331,7 @@ struct Lara : Character { continue; Character *enemy = (Character*)c; - if (enemy->health <= 0) + if (!enemy->isActiveTarget()) continue; Box box = enemy->getBoundingBox();