From f415b028a8a49281321a913673976673f25761b7 Mon Sep 17 00:00:00 2001 From: ScrawnyRonnie Date: Tue, 12 Dec 2023 22:07:16 -0500 Subject: [PATCH] last llu change? --- .../local/support/CaptureFlagManager.scala | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/scala/net/psforever/services/local/support/CaptureFlagManager.scala b/src/main/scala/net/psforever/services/local/support/CaptureFlagManager.scala index 42560209..91bf2499 100644 --- a/src/main/scala/net/psforever/services/local/support/CaptureFlagManager.scala +++ b/src/main/scala/net/psforever/services/local/support/CaptureFlagManager.scala @@ -113,6 +113,7 @@ class CaptureFlagManager(zone: Zone) extends Actor { case CaptureFlagManager.DropFlag(flag: CaptureFlag) => flag.Carrier match { case Some(player: Player) => + val newFlag = flag // Set the flag position to where the player is that dropped it flag.Position = player.Position // Remove attached player from flag @@ -121,6 +122,27 @@ class CaptureFlagManager(zone: Zone) extends Actor { flag.Zone.LocalEvents ! LocalServiceMessage(flag.Zone.id, LocalAction.SendPacket(ObjectDetachMessage(player.GUID, flag.GUID, player.Position, 0, 0, 0))) // Send dropped chat message ChatBroadcast(flag.Zone, CaptureFlagChatMessageStrings.CTF_FlagDropped(player.Name, player.Faction, flag.Owner.asInstanceOf[Building].Name), fanfare = false) + HandleFlagDespawn(flag) + // Register LLU object create task and callback to create on clients + val replacementLlu = CaptureFlag.Constructor( + newFlag.Position, + newFlag.Orientation, + newFlag.Target, + newFlag.Owner, + player.Faction + ) + // Add the flag as an amenity and track it internally + val socket = newFlag.Owner.asInstanceOf[Building].GetFlagSocket.get + socket.captureFlag = replacementLlu + TrackFlag(replacementLlu) + TaskWorkflow.execute(WorldSession.CallBackForTask( + GUIDTask.registerObject(socket.Zone.GUID, replacementLlu), + socket.Zone.LocalEvents, + LocalServiceMessage( + socket.Zone.id, + LocalAction.LluSpawned(Service.defaultPlayerGUID, replacementLlu) + ) + )) case _ => log.warn("Tried to drop flag but flag has no carrier") }