fixed facility occupation recognition

This commit is contained in:
Fate-JH 2024-11-14 00:44:22 -05:00
parent d03954d6a6
commit 9302c1beae
2 changed files with 24 additions and 4 deletions

View file

@ -999,10 +999,17 @@ class ChatOperations(
private def captureBaseCurrSoi( private def captureBaseCurrSoi(
session: Session session: Session
): Iterable[Building] = { ): Iterable[Building] = {
val charId = session.player.CharId val player = session.player
session.zone.Buildings.values.filter { building => val positionxy = player.Position.xy
building.PlayersInSOI.exists(_.CharId == charId) session
} .zone
.blockMap
.sector(player)
.buildingList
.filter { building =>
val radius = building.Definition.SOIRadius
Vector3.DistanceSquared(building.Position.xy, positionxy) < radius * radius
}
} }
private def captureBaseParamFaction( private def captureBaseParamFaction(

View file

@ -17,6 +17,7 @@ import net.psforever.objects.serverobject.tube.SpawnTube
import net.psforever.objects.serverobject.turret.auto.AutomatedTurret import net.psforever.objects.serverobject.turret.auto.AutomatedTurret
import net.psforever.objects.sourcing.{PlayerSource, SourceEntry, VehicleSource} import net.psforever.objects.sourcing.{PlayerSource, SourceEntry, VehicleSource}
import net.psforever.objects.vital.{InGameHistory, IncarnationActivity, ReconstructionActivity, SpawningActivity} import net.psforever.objects.vital.{InGameHistory, IncarnationActivity, ReconstructionActivity, SpawningActivity}
import net.psforever.objects.zones.blockmap.BlockMapEntity
import net.psforever.packet.game.{CampaignStatistic, ChangeFireStateMessage_Start, HackState7, MailMessage, ObjectDetectedMessage, SessionStatistic, TriggeredSound} import net.psforever.packet.game.{CampaignStatistic, ChangeFireStateMessage_Start, HackState7, MailMessage, ObjectDetectedMessage, SessionStatistic, TriggeredSound}
import net.psforever.services.chat.DefaultChannel import net.psforever.services.chat.DefaultChannel
@ -159,6 +160,18 @@ object ZoningOperations {
} }
} }
def findBuildingsBySoiOccupancy(zone: Zone, obj: PlanetSideGameObject with BlockMapEntity): List[Building] = {
val positionxy = obj.Position.xy
zone
.blockMap
.sector(obj)
.buildingList
.filter { building =>
val radius = building.Definition.SOIRadius
Vector3.DistanceSquared(building.Position.xy, positionxy) < radius * radius
}
}
def findBuildingsBySoiOccupancy(zone: Zone, position: Vector3): List[Building] = { def findBuildingsBySoiOccupancy(zone: Zone, position: Vector3): List[Building] = {
val positionxy = position.xy val positionxy = position.xy
zone zone