diff --git a/src/main/scala/net/psforever/objects/serverobject/dome/ForceDomeControl.scala b/src/main/scala/net/psforever/objects/serverobject/dome/ForceDomeControl.scala index ffbb7c745..fa9a8553a 100644 --- a/src/main/scala/net/psforever/objects/serverobject/dome/ForceDomeControl.scala +++ b/src/main/scala/net/psforever/objects/serverobject/dome/ForceDomeControl.scala @@ -123,14 +123,12 @@ object ForceDomeControl { building: Building, state: Boolean ): Unit = { - val events = building.Zone.LocalEvents + val zone = building.Zone val message = LocalAction.SendResponse(ChatMsg( - ChatMessageType.UNK_227, - s"Capitol force dome state change was suppressed. ${building.Name} will remain ${if (state) "enveloped" else "exposed"}." + ChatMessageType.UNK_229, + s"The Capitol force dome at ${building.Name} will remain ${if (state) "activated" else "deactivated"}." )) - building.PlayersInSOI.foreach { player => - events ! LocalServiceMessage(player.Name, message) - } + zone.LocalEvents ! LocalServiceMessage(zone.id, message) } /** @@ -473,7 +471,6 @@ class ForceDomeControl(dome: ForceDomePhysics) private def blockedByCustomStateOr(func: (Building, ForceDomePhysics) => Boolean): Boolean = { import scala.concurrent.duration._ import scala.concurrent.ExecutionContext.Implicits.global - customState match { case None => val oldState = dome.Energized @@ -484,9 +481,12 @@ class ForceDomeControl(dome: ForceDomePhysics) context.system.scheduler.scheduleOnce(delay = 4000 milliseconds, self, ForceDomeControl.ApplyProtection) } newState - case Some(state) => + case Some(state) + if !ForceDomeControl.CheckForceDomeStatus(domeOwnerAsABuilding, dome).contains(state) => ForceDomeControl.CustomDomeStateEnforcedMessage(domeOwnerAsABuilding, state) state + case Some(state) => + state } } } diff --git a/src/main/scala/net/psforever/objects/vehicles/control/VehicleControl.scala b/src/main/scala/net/psforever/objects/vehicles/control/VehicleControl.scala index fb3bc6459..d110fdc98 100644 --- a/src/main/scala/net/psforever/objects/vehicles/control/VehicleControl.scala +++ b/src/main/scala/net/psforever/objects/vehicles/control/VehicleControl.scala @@ -119,7 +119,7 @@ class VehicleControl(vehicle: Vehicle) sender() ! Mountable.MountMessages(user, Mountable.CanNotMount(vehicle, mountPoint)) } - private val disountingFailureReasons: Receive = { + private val dismountingFailureReasons: Receive = { case Mountable.TryDismount(user, seat_num, bailType) if vehicle.DeploymentState == DriveState.AutoPilot => sender() ! Mountable.MountMessages(user, Mountable.CanNotDismount(vehicle, seat_num, bailType)) @@ -142,7 +142,7 @@ class VehicleControl(vehicle: Vehicle) case Mountable.TryDismount(user, seat_num, bailType) if vehicle.Health <= (vehicle.Definition.MaxHealth * .1).round && bailType == BailType.Bailed && GlobalDefinitions.isFlightVehicle(vehicle.Definition) - && (seat_num == 0 || vehicle.SeatPermissionGroup(seat_num).getOrElse(0) == AccessPermissionGroup.Gunner) + && (seat_num == 0 || vehicle.SeatPermissionGroup(seat_num).contains(AccessPermissionGroup.Gunner)) && (vehicle.History.findLast { entry => entry.isInstanceOf[DamagingActivity] } match { case Some(entry) if System.currentTimeMillis() - entry.time < 4000L => true case _ if Random.nextInt(10) == 1 => false @@ -152,7 +152,7 @@ class VehicleControl(vehicle: Vehicle) case Mountable.TryDismount(user, seat_num, bailType) if vehicle.Health <= (vehicle.Definition.MaxHealth * .2).round && bailType == BailType.Bailed && GlobalDefinitions.isFlightVehicle(vehicle.Definition) - && (seat_num == 0 || vehicle.SeatPermissionGroup(seat_num).getOrElse(0) == AccessPermissionGroup.Gunner) + && (seat_num == 0 || vehicle.SeatPermissionGroup(seat_num).contains(AccessPermissionGroup.Gunner)) && (vehicle.History.findLast { entry => entry.isInstanceOf[DamagingActivity] } match { case Some(entry) if System.currentTimeMillis() - entry.time < 3500L => true case _ if Random.nextInt(5) == 1 => false @@ -162,7 +162,7 @@ class VehicleControl(vehicle: Vehicle) case Mountable.TryDismount(user, seat_num, bailType) if vehicle.Health <= (vehicle.Definition.MaxHealth * .35).round && bailType == BailType.Bailed && GlobalDefinitions.isFlightVehicle(vehicle.Definition) - && (seat_num == 0 || vehicle.SeatPermissionGroup(seat_num).getOrElse(0) == AccessPermissionGroup.Gunner) + && (seat_num == 0 || vehicle.SeatPermissionGroup(seat_num).contains(AccessPermissionGroup.Gunner)) && (vehicle.History.findLast { entry => entry.isInstanceOf[DamagingActivity] } match { case Some(entry) if System.currentTimeMillis() - entry.time < 3000L => true case _ if Random.nextInt(4) == 1 => false @@ -177,7 +177,7 @@ class VehicleControl(vehicle: Vehicle) def commonEnabledBehavior: Receive = checkBehavior .orElse(mountingFailureReasons) .orElse(mountBehavior) - .orElse(disountingFailureReasons) + .orElse(dismountingFailureReasons) .orElse(dismountBehavior) .orElse(attributeBehavior) .orElse(jammableBehavior)