From 0d046dedeb6d90437b3ce555ebdaf20a358b38e2 Mon Sep 17 00:00:00 2001 From: Mazo Date: Sat, 3 Apr 2021 20:05:03 +0100 Subject: [PATCH] Fix capturing neutral LLU bases with no friendly neighbours as a timed hack --- .../services/local/support/HackCaptureActor.scala | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/scala/net/psforever/services/local/support/HackCaptureActor.scala b/src/main/scala/net/psforever/services/local/support/HackCaptureActor.scala index 477f7f1c..b8652329 100644 --- a/src/main/scala/net/psforever/services/local/support/HackCaptureActor.scala +++ b/src/main/scala/net/psforever/services/local/support/HackCaptureActor.scala @@ -81,8 +81,9 @@ class HackCaptureActor(val taskResolver: ActorRef) extends Actor { val hackedByFaction = entry.target.HackedBy.get.hackerFaction entry.target.Actor ! CommonMessages.ClearHack() - entry.target.Owner.asInstanceOf[Building].GetFlagSocket match { - case Some(socket) => + // If the base has a socket, but no flag spawned it means the hacked base is neutral with no friendly neighbouring bases to deliver to, making it a timed hack. + (entry.target.Owner.asInstanceOf[Building].GetFlagSocket, entry.target.Owner.asInstanceOf[Building].GetFlag) match { + case (Some(socket), Some(_)) => // LLU was not delivered in time. Send resecured notifications entry.target.Owner.asInstanceOf[Building].GetFlag match { case Some(flag: CaptureFlag) => entry.target.Zone.LocalEvents ! CaptureFlagManager.Lost(flag, CaptureFlagLostReasonEnum.TimedOut) @@ -90,8 +91,8 @@ class HackCaptureActor(val taskResolver: ActorRef) extends Actor { } NotifyHackStateChange(entry.target, isResecured = true) - case None => - // Timed hack finished, capture the base + case _ => + // Timed hack finished (or neutral LLU base with no neighbour as timed hack), capture the base HackCompleted(entry.target, hackedByFaction) } })