mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-01-19 18:44:45 +00:00
Flaky Facility Faction Fix (#751)
* constantly starting at full power * created a token control agency for llu sockets
This commit is contained in:
parent
ee969b2737
commit
41b3eb5f66
|
|
@ -355,6 +355,8 @@ class ChatActor(
|
|||
val soi2 = building.Definition.SOIRadius * building.Definition.SOIRadius
|
||||
Vector3.DistanceSquared(building.Position, position) < soi2
|
||||
}
|
||||
case Some(all) if all.toLowerCase.startsWith("all") =>
|
||||
session.zone.Buildings.values
|
||||
case Some(x) =>
|
||||
session.zone.Buildings.values.find { _.Name.equalsIgnoreCase(x) }.toList
|
||||
case _ =>
|
||||
|
|
|
|||
|
|
@ -6833,7 +6833,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
|
|||
//silo capacity
|
||||
sendResponse(PlanetsideAttributeMessage(amenityId, 45, silo.CapacitorDisplay))
|
||||
//warning lights
|
||||
sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 47, if (silo.LowNtuWarningOn) 1 else 0))
|
||||
sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 47, silo.LowNtuWarningOn))
|
||||
if (silo.NtuCapacitor == 0) {
|
||||
sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 48, 1))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package net.psforever.objects.serverobject.llu
|
||||
|
||||
import akka.actor.ActorContext
|
||||
import akka.actor.{ActorContext, Props}
|
||||
import net.psforever.objects.GlobalDefinitions
|
||||
import net.psforever.objects.serverobject.structures.Amenity
|
||||
import net.psforever.types.Vector3
|
||||
|
|
@ -24,9 +24,10 @@ object CaptureFlagSocket {
|
|||
Constructor(GlobalDefinitions.llm_socket, pos)(id, context)
|
||||
}
|
||||
|
||||
def Constructor(tdef: CaptureFlagSocketDefinition, pos: Vector3)(id: Int, context: ActorContext) : CaptureFlagSocket = {
|
||||
def Constructor(tdef: CaptureFlagSocketDefinition, pos: Vector3)(id: Int, context: ActorContext): CaptureFlagSocket = {
|
||||
val obj = CaptureFlagSocket(tdef)
|
||||
obj.Position = pos
|
||||
obj.Actor = context.actorOf(Props(classOf[CaptureFlagSocketControl], obj), s"${obj.Definition.Name}_$id")
|
||||
obj
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
// Copyright (c) 2020 PSForever
|
||||
package net.psforever.objects.serverobject.llu
|
||||
|
||||
import akka.actor.Actor
|
||||
import net.psforever.objects.serverobject.affinity.FactionAffinityBehavior
|
||||
|
||||
/**
|
||||
* An `Actor` that handles messages being dispatched to a lattice logic unit (LLU) socket.
|
||||
* Actually does nothing lol
|
||||
* @param socket the socket entity being governed
|
||||
*/
|
||||
class CaptureFlagSocketControl(socket: CaptureFlagSocket)
|
||||
extends Actor
|
||||
with FactionAffinityBehavior.Check {
|
||||
def FactionObject = socket
|
||||
|
||||
def receive: Receive = {
|
||||
case _ => ;
|
||||
}
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ class ResourceSilo extends Amenity with CommonNtuContainer {
|
|||
|
||||
// For the NTU display bar
|
||||
private var capacitorDisplay: Long = 0
|
||||
NtuCapacitor = Definition.MaxNtuCapacitor
|
||||
|
||||
def MaxNtuCapacitor : Float = Definition.MaxNtuCapacitor
|
||||
|
||||
|
|
|
|||
|
|
@ -32,9 +32,10 @@ class ResourceSiloControl(resourceSilo: ResourceSilo)
|
|||
var panelAnimationFunc: (ActorRef, Float) => Unit = PanelAnimation
|
||||
|
||||
def receive: Receive = {
|
||||
case "startup" =>
|
||||
case Service.Startup() =>
|
||||
resourceSilo.Owner match {
|
||||
case building: Building =>
|
||||
UpdateChargeLevel(amount = 0)
|
||||
building.Actor ! (if (resourceSilo.NtuCapacitor <= 0f ) {
|
||||
BuildingActor.NtuDepleted()
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -663,7 +663,7 @@ class Zone(val id: String, val map: ZoneMap, zoneNumber: Int) {
|
|||
.flatMap(_.Amenities.filter(_.Definition == GlobalDefinitions.resource_silo))
|
||||
.collect {
|
||||
case silo: ResourceSilo =>
|
||||
silo.Actor ! "startup"
|
||||
silo.Actor ! Service.Startup()
|
||||
}
|
||||
//some painfields need to look for their closest door
|
||||
buildings.values
|
||||
|
|
|
|||
|
|
@ -621,12 +621,13 @@ object Zones {
|
|||
|
||||
def initResourceSilos(zone: Zone): Unit = {
|
||||
// todo: load silo charge from database
|
||||
zone.Buildings.values.flatMap {
|
||||
_.Amenities.collect {
|
||||
case silo: ResourceSilo =>
|
||||
silo.Actor ! ResourceSilo.UpdateChargeLevel(silo.MaxNtuCapacitor)
|
||||
}
|
||||
}
|
||||
// todo: load silo charge from this function call
|
||||
// zone.Buildings.values.flatMap {
|
||||
// _.Amenities.collect {
|
||||
// case silo: ResourceSilo =>
|
||||
// silo.Actor ! ResourceSilo.UpdateChargeLevel(silo.MaxNtuCapacitor)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue