promoted generator destruction to flag when to power down facility

This commit is contained in:
Jason_DiDonato@yahoo.com 2020-10-21 19:21:54 -04:00
parent 54f6588439
commit 924c78ea0b
5 changed files with 20 additions and 9 deletions

View file

@ -6558,9 +6558,9 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
sendResponse(SetEmpireMessage(guid, building.Faction)) sendResponse(SetEmpireMessage(guid, building.Faction))
// power // power
building.Generator match { building.Generator match {
case Some(obj) if obj.Condition != PlanetSideGeneratorState.Normal => case Some(obj) if obj.Condition == PlanetSideGeneratorState.Destroyed || building.NtuLevel == 0 =>
sendResponse(PlanetsideAttributeMessage(guid, 48, 1)) sendResponse(PlanetsideAttributeMessage(guid, 48, 1)) //amenities disabled; red warning lights
sendResponse(PlanetsideAttributeMessage(guid, 38, 0)) sendResponse(PlanetsideAttributeMessage(guid, 38, 0)) //disable spawn target on deployment map
case _ => ; case _ => ;
} }
// capitol force dome state // capitol force dome state

View file

@ -24,6 +24,16 @@ class Generator(private val gdef: GeneratorDefinition) extends Amenity {
Condition Condition
} }
override def Destroyed_=(state : Boolean) : Boolean = {
val isDestroyed = super.Destroyed_=(state)
condition = if (isDestroyed) {
PlanetSideGeneratorState.Destroyed
} else {
PlanetSideGeneratorState.Normal
}
isDestroyed
}
def Definition: GeneratorDefinition = gdef def Definition: GeneratorDefinition = gdef
} }

View file

@ -80,6 +80,8 @@ class GeneratorControl(gen: Generator)
.orElse { .orElse {
case GeneratorControl.Destabilized() => case GeneratorControl.Destabilized() =>
imminentExplosion = true imminentExplosion = true
//the generator's condition is technically destroyed, but avoid official reporting until the explosion
gen.Condition = PlanetSideGeneratorState.Destroyed
GeneratorControl.UpdateOwner(gen, Some(GeneratorControl.Event.Destabilized)) GeneratorControl.UpdateOwner(gen, Some(GeneratorControl.Event.Destabilized))
queuedExplosion.cancel() queuedExplosion.cancel()
queuedExplosion = context.system.scheduler.scheduleOnce(10 seconds, self, GeneratorControl.GeneratorExplodes()) queuedExplosion = context.system.scheduler.scheduleOnce(10 seconds, self, GeneratorControl.GeneratorExplodes())
@ -89,7 +91,6 @@ class GeneratorControl(gen: Generator)
val zone = gen.Zone val zone = gen.Zone
gen.Health = 0 gen.Health = 0
super.DestructionAwareness(gen, gen.LastShot.get) super.DestructionAwareness(gen, gen.LastShot.get)
gen.Condition = PlanetSideGeneratorState.Destroyed
GeneratorControl.UpdateOwner(gen, Some(GeneratorControl.Event.Destroyed)) GeneratorControl.UpdateOwner(gen, Some(GeneratorControl.Event.Destroyed))
//kaboom //kaboom
zone.AvatarEvents ! AvatarServiceMessage( zone.AvatarEvents ! AvatarServiceMessage(

View file

@ -160,7 +160,7 @@ object AutoRepairIntegrationTest {
MaxHealth = 500 MaxHealth = 500
Damageable = true Damageable = true
Repairable = true Repairable = true
autoRepair = AutoRepairStats(1, 500, 500, 1) autoRepair = AutoRepairStats(200, 500, 500, 1)
RepairIfDestroyed = true RepairIfDestroyed = true
} }
} }

View file

@ -287,7 +287,7 @@ class GeneratorControlDestroyedTest extends ActorTest {
) )
assert(gen.Health == 1) assert(gen.Health == 1)
assert(!gen.Destroyed) assert(!gen.Destroyed)
assert(gen.Condition == PlanetSideGeneratorState.Normal) assert(gen.Condition == PlanetSideGeneratorState.Destroyed)
avatarProbe.expectNoMessage(9500 milliseconds) avatarProbe.expectNoMessage(9500 milliseconds)
val msg_avatar2 = avatarProbe.receiveN(3, 1000 milliseconds) //see DamageableEntity test file val msg_avatar2 = avatarProbe.receiveN(3, 1000 milliseconds) //see DamageableEntity test file
@ -421,7 +421,7 @@ class GeneratorControlKillsTest extends ActorTest {
) )
assert(gen.Health == 1) assert(gen.Health == 1)
assert(!gen.Destroyed) assert(!gen.Destroyed)
assert(gen.Condition == PlanetSideGeneratorState.Normal) assert(gen.Condition == PlanetSideGeneratorState.Destroyed)
avatarProbe.expectNoMessage(9500 milliseconds) avatarProbe.expectNoMessage(9500 milliseconds)
val msg_avatar2 = avatarProbe.receiveN(3, 1000 milliseconds) //see DamageableEntity test file val msg_avatar2 = avatarProbe.receiveN(3, 1000 milliseconds) //see DamageableEntity test file
@ -631,7 +631,7 @@ class GeneratorControlNotDamageIfExplodingTest extends ActorTest {
) )
assert(gen.Health == 1) assert(gen.Health == 1)
assert(!gen.Destroyed) assert(!gen.Destroyed)
assert(gen.Condition == PlanetSideGeneratorState.Normal) assert(gen.Condition == PlanetSideGeneratorState.Destroyed)
//going to explode state //going to explode state
//once //once
@ -732,7 +732,7 @@ class GeneratorControlNotRepairIfExplodingTest extends ActorTest {
) )
assert(gen.Health == 1) assert(gen.Health == 1)
assert(!gen.Destroyed) assert(!gen.Destroyed)
assert(gen.Condition == PlanetSideGeneratorState.Normal) assert(gen.Condition == PlanetSideGeneratorState.Destroyed)
//going to explode state //going to explode state
//once //once