diff --git a/server/src/events/invite.rs b/server/src/events/invite.rs index b27e3c5d0b..89acc101d2 100644 --- a/server/src/events/invite.rs +++ b/server/src/events/invite.rs @@ -10,7 +10,7 @@ use common::{ agent::{Agent, AgentEvent}, group::GroupManager, invite::{Invite, InviteKind, InviteResponse, PendingInvites}, - ChatType, Group, Pos, + ChatType, Group, Health, Pos, }, consts::MAX_TRADE_RANGE, event::{InitiateInviteEvent, InviteResponseEvent}, @@ -48,6 +48,7 @@ impl ServerEvent for InitiateInviteEvent { ReadStorage<'a, Client>, ReadStorage<'a, Pos>, ReadStorage<'a, Group>, + ReadStorage<'a, Health>, ); fn handle( @@ -64,6 +65,7 @@ impl ServerEvent for InitiateInviteEvent { clients, positions, groups, + healths, ): Self::SystemData<'_>, ) { for InitiateInviteEvent(inviter, invitee_uid, kind) in events { @@ -92,8 +94,11 @@ impl ServerEvent for InitiateInviteEvent { } if matches!(kind, InviteKind::Trade) { - // Check whether the inviter is in range of the invitee - if !within_trading_range(positions.get(inviter), positions.get(invitee)) { + // Check whether the inviter is in range of the invitee or dead + if !within_trading_range(positions.get(inviter), positions.get(invitee)) + || healths.get(inviter).is_some_and(|h| h.is_dead) + || healths.get(invitee).is_some_and(|h| h.is_dead) + { continue; } }