Fix combat facing, tab-target filtering, and spirit healer resurrection

- Add Entity::setOrientation() to update facing without cancelling movement
- Force attacker and victim to face each other on SMSG_ATTACKSTART
- Fix orientation sign error in MonsterMove: use atan2(-dy, dx) throughout so
  NPCs don't glide backward; clamp FacingAngle moves that are >90° off travel vector
- Tab-target: skip dead units and non-hostiles at both build and advance time;
  stale entries (killed between presses) are skipped inline rather than cycling to them
- Spirit healer resurrection: detect same-map SMSG_NEW_WORLD with resurrectPending_
  and skip the full world reload/entity clear, preventing the fall-forever bug
This commit is contained in:
Kelsi 2026-02-18 04:43:23 -08:00
parent 24be81c679
commit 2dffba63d8
2 changed files with 111 additions and 14 deletions

View file

@ -66,6 +66,8 @@ public:
float getY() const { return y; }
float getZ() const { return z; }
float getOrientation() const { return orientation; }
// Update orientation only, without disrupting an in-progress movement interpolation.
void setOrientation(float o) { orientation = o; }
void setPosition(float px, float py, float pz, float o) {
x = px;