diff --git a/src/main/scala/net/psforever/actors/session/normal/AvatarHandlerLogic.scala b/src/main/scala/net/psforever/actors/session/normal/AvatarHandlerLogic.scala index 03d6fe63..fdf8ed17 100644 --- a/src/main/scala/net/psforever/actors/session/normal/AvatarHandlerLogic.scala +++ b/src/main/scala/net/psforever/actors/session/normal/AvatarHandlerLogic.scala @@ -482,6 +482,9 @@ class AvatarHandlerLogic(val ops: SessionAvatarHandlers, implicit val context: A case AvatarResponse.ShareAntExperienceWithSquad(owner, exp, vehicle) => ops.shareAntExperienceWithSquad(owner, exp, vehicle) + case AvatarResponse.RemoveFromOutfitChat(outfit_id) => + ops.removeFromOutfitChat(outfit_id) + case AvatarResponse.SendResponse(msg) => sendResponse(msg) diff --git a/src/main/scala/net/psforever/actors/session/support/SessionAvatarHandlers.scala b/src/main/scala/net/psforever/actors/session/support/SessionAvatarHandlers.scala index da4cc1c9..9c54321d 100644 --- a/src/main/scala/net/psforever/actors/session/support/SessionAvatarHandlers.scala +++ b/src/main/scala/net/psforever/actors/session/support/SessionAvatarHandlers.scala @@ -9,6 +9,7 @@ import net.psforever.packet.game.objectcreate.ConstructorData import net.psforever.objects.zones.exp import net.psforever.services.Service import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage, AvatarServiceResponse} +import net.psforever.services.chat.OutfitChannel import scala.collection.mutable // @@ -237,6 +238,10 @@ class SessionAvatarHandlers( } player.VehicleSeated = None } + + def removeFromOutfitChat(outfit_id: Long): Unit = { + sessionLogic.chat.LeaveChannel(OutfitChannel(outfit_id)) + } } object SessionAvatarHandlers { diff --git a/src/main/scala/net/psforever/actors/session/support/SessionOutfitHandlers.scala b/src/main/scala/net/psforever/actors/session/support/SessionOutfitHandlers.scala index 599adf70..a3bbbb0a 100644 --- a/src/main/scala/net/psforever/actors/session/support/SessionOutfitHandlers.scala +++ b/src/main/scala/net/psforever/actors/session/support/SessionOutfitHandlers.scala @@ -260,6 +260,9 @@ object SessionOutfitHandlers { kicked.Zone.AvatarEvents ! AvatarServiceMessage(kicked.Zone.id, AvatarAction.PlanetsideStringAttribute(kicked.GUID, 0, "")) + kicked.Zone.AvatarEvents ! AvatarServiceMessage( + kicked.Name, AvatarAction.RemoveFromOutfitChat(kickedBy.outfit_id)) + kicked.outfit_id = 0 kicked.outfit_name = "" PlayerControl.sendResponse(kicked.Zone, kicked.Name, diff --git a/src/main/scala/net/psforever/services/avatar/AvatarService.scala b/src/main/scala/net/psforever/services/avatar/AvatarService.scala index 6b5caaf0..bbdf1f99 100644 --- a/src/main/scala/net/psforever/services/avatar/AvatarService.scala +++ b/src/main/scala/net/psforever/services/avatar/AvatarService.scala @@ -484,6 +484,15 @@ class AvatarService(zone: Zone) extends Actor { ) ) + case AvatarAction.RemoveFromOutfitChat(outfit_id) => + AvatarEvents.publish( + AvatarServiceResponse( + s"/$forChannel/Avatar", + Service.defaultPlayerGUID, + AvatarResponse.RemoveFromOutfitChat(outfit_id) + ) + ) + case _ => () } diff --git a/src/main/scala/net/psforever/services/avatar/AvatarServiceMessage.scala b/src/main/scala/net/psforever/services/avatar/AvatarServiceMessage.scala index 3ab388de..e17cfe0a 100644 --- a/src/main/scala/net/psforever/services/avatar/AvatarServiceMessage.scala +++ b/src/main/scala/net/psforever/services/avatar/AvatarServiceMessage.scala @@ -164,6 +164,7 @@ object AvatarAction { final case class FacilityCaptureRewards(building_id: Int, zone_number: Int, exp: Long) extends Action final case class ShareKillExperienceWithSquad(killer: Player, exp: Long) extends Action final case class ShareAntExperienceWithSquad(owner: UniquePlayer, exp: Long, vehicle: Vehicle) extends Action + final case class RemoveFromOutfitChat(outfit_id: Long) extends Action final case class TeardownConnection() extends Action // final case class PlayerStateShift(killer : PlanetSideGUID, victim : PlanetSideGUID) extends Action diff --git a/src/main/scala/net/psforever/services/avatar/AvatarServiceResponse.scala b/src/main/scala/net/psforever/services/avatar/AvatarServiceResponse.scala index 370ec9fc..87560d29 100644 --- a/src/main/scala/net/psforever/services/avatar/AvatarServiceResponse.scala +++ b/src/main/scala/net/psforever/services/avatar/AvatarServiceResponse.scala @@ -135,4 +135,5 @@ object AvatarResponse { final case class FacilityCaptureRewards(building_id: Int, zone_number: Int, exp: Long) extends Response final case class ShareKillExperienceWithSquad(killer: Player, exp: Long) extends Response final case class ShareAntExperienceWithSquad(owner: UniquePlayer, exp: Long, vehicle: Vehicle) extends Response + final case class RemoveFromOutfitChat(outfit_id: Long) extends Response }