Flaky Facility Faction Fix (#751)

* constantly starting at full power

* created a token control agency for llu sockets
This commit is contained in:
Fate-JH 2021-04-07 14:11:47 -04:00 committed by GitHub
parent ee969b2737
commit 41b3eb5f66
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 37 additions and 11 deletions

View file

@ -355,6 +355,8 @@ class ChatActor(
val soi2 = building.Definition.SOIRadius * building.Definition.SOIRadius val soi2 = building.Definition.SOIRadius * building.Definition.SOIRadius
Vector3.DistanceSquared(building.Position, position) < soi2 Vector3.DistanceSquared(building.Position, position) < soi2
} }
case Some(all) if all.toLowerCase.startsWith("all") =>
session.zone.Buildings.values
case Some(x) => case Some(x) =>
session.zone.Buildings.values.find { _.Name.equalsIgnoreCase(x) }.toList session.zone.Buildings.values.find { _.Name.equalsIgnoreCase(x) }.toList
case _ => case _ =>

View file

@ -6833,7 +6833,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
//silo capacity //silo capacity
sendResponse(PlanetsideAttributeMessage(amenityId, 45, silo.CapacitorDisplay)) sendResponse(PlanetsideAttributeMessage(amenityId, 45, silo.CapacitorDisplay))
//warning lights //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) { if (silo.NtuCapacitor == 0) {
sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 48, 1)) sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 48, 1))
} }

View file

@ -1,6 +1,6 @@
package net.psforever.objects.serverobject.llu package net.psforever.objects.serverobject.llu
import akka.actor.ActorContext import akka.actor.{ActorContext, Props}
import net.psforever.objects.GlobalDefinitions import net.psforever.objects.GlobalDefinitions
import net.psforever.objects.serverobject.structures.Amenity import net.psforever.objects.serverobject.structures.Amenity
import net.psforever.types.Vector3 import net.psforever.types.Vector3
@ -24,9 +24,10 @@ object CaptureFlagSocket {
Constructor(GlobalDefinitions.llm_socket, pos)(id, context) 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) val obj = CaptureFlagSocket(tdef)
obj.Position = pos obj.Position = pos
obj.Actor = context.actorOf(Props(classOf[CaptureFlagSocketControl], obj), s"${obj.Definition.Name}_$id")
obj obj
} }
} }

View file

@ -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 _ => ;
}
}

View file

@ -15,6 +15,7 @@ class ResourceSilo extends Amenity with CommonNtuContainer {
// For the NTU display bar // For the NTU display bar
private var capacitorDisplay: Long = 0 private var capacitorDisplay: Long = 0
NtuCapacitor = Definition.MaxNtuCapacitor
def MaxNtuCapacitor : Float = Definition.MaxNtuCapacitor def MaxNtuCapacitor : Float = Definition.MaxNtuCapacitor

View file

@ -32,9 +32,10 @@ class ResourceSiloControl(resourceSilo: ResourceSilo)
var panelAnimationFunc: (ActorRef, Float) => Unit = PanelAnimation var panelAnimationFunc: (ActorRef, Float) => Unit = PanelAnimation
def receive: Receive = { def receive: Receive = {
case "startup" => case Service.Startup() =>
resourceSilo.Owner match { resourceSilo.Owner match {
case building: Building => case building: Building =>
UpdateChargeLevel(amount = 0)
building.Actor ! (if (resourceSilo.NtuCapacitor <= 0f ) { building.Actor ! (if (resourceSilo.NtuCapacitor <= 0f ) {
BuildingActor.NtuDepleted() BuildingActor.NtuDepleted()
} else { } else {

View file

@ -663,7 +663,7 @@ class Zone(val id: String, val map: ZoneMap, zoneNumber: Int) {
.flatMap(_.Amenities.filter(_.Definition == GlobalDefinitions.resource_silo)) .flatMap(_.Amenities.filter(_.Definition == GlobalDefinitions.resource_silo))
.collect { .collect {
case silo: ResourceSilo => case silo: ResourceSilo =>
silo.Actor ! "startup" silo.Actor ! Service.Startup()
} }
//some painfields need to look for their closest door //some painfields need to look for their closest door
buildings.values buildings.values

View file

@ -621,12 +621,13 @@ object Zones {
def initResourceSilos(zone: Zone): Unit = { def initResourceSilos(zone: Zone): Unit = {
// todo: load silo charge from database // todo: load silo charge from database
zone.Buildings.values.flatMap { // todo: load silo charge from this function call
_.Amenities.collect { // zone.Buildings.values.flatMap {
case silo: ResourceSilo => // _.Amenities.collect {
silo.Actor ! ResourceSilo.UpdateChargeLevel(silo.MaxNtuCapacitor) // case silo: ResourceSilo =>
} // silo.Actor ! ResourceSilo.UpdateChargeLevel(silo.MaxNtuCapacitor)
} // }
// }
} }
} }