diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 4afa8f1..2c85fd0 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -438,6 +438,10 @@ void Player::Shot() return; } + if (action_type != AT_Reload) { + CancelAction(); + } + if (room->gas_data.gas_mode != GasInactive && !a8::HasBitFlag(status, HS_Fly) && !a8::HasBitFlag(status, HS_Jump) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 3646921..c2088dc 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -594,9 +594,16 @@ bool Room::OverBorder(const Vector2D pos, float radius) Human* Room::GetWatchWarTarget(Human* hum) { + if (hum->team_members) { + for (auto& member : *hum->team_members) { + if (member != hum && !member->dead) { + return member; + } + } + } std::vector humans; for (auto& pair : human_hash_) { - if (pair.first != hum->entity_uniid) { + if (pair.first != hum->entity_uniid && !pair.second->dead) { humans.push_back(pair.second); } }