From 88b194fde200bd107bf25f39e646a2e043aa1030 Mon Sep 17 00:00:00 2001 From: Mazo Date: Fri, 3 Jul 2020 01:16:56 +0100 Subject: [PATCH] Correctly show ANT capacitor on zoning (#504) * Correctly show ANT capacitor on zoning * Remove log * Move vehicle shields / ntu capacitor packets to HandleSetCurrentAvatar --- .../scala/net/psforever/objects/Vehicle.scala | 8 +++++++ .../src/main/scala/WorldSessionActor.scala | 24 ++++++++++++------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/common/src/main/scala/net/psforever/objects/Vehicle.scala b/common/src/main/scala/net/psforever/objects/Vehicle.scala index 11602d439..daef0288b 100644 --- a/common/src/main/scala/net/psforever/objects/Vehicle.scala +++ b/common/src/main/scala/net/psforever/objects/Vehicle.scala @@ -209,6 +209,14 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner NtuCapacitor } + def NtuCapacitorScaled : Int = { + if(Definition.MaxNtuCapacitor > 0) { + scala.math.ceil((NtuCapacitor.toFloat / Definition.MaxNtuCapacitor.toFloat) * 10).toInt + } else { + 0 + } + } + def Capacitor : Int = capacitor def Capacitor_=(value: Int) : Int = { diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index ceae0ab2f..a5d6c0226 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -2463,8 +2463,7 @@ class WorldSessionActor extends Actor sendResponse(PlanetsideAttributeMessage(obj_guid, 0, obj.Health)) sendResponse(PlanetsideAttributeMessage(obj_guid, 68, obj.Shields)) //shield health if(obj.Definition.MaxNtuCapacitor > 0) { - val ntuCapacitor = scala.math.ceil((obj.NtuCapacitor.toFloat / obj.Definition.MaxNtuCapacitor.toFloat) * 10).toInt - sendResponse(PlanetsideAttributeMessage(obj_guid, 45, ntuCapacitor)) + sendResponse(PlanetsideAttributeMessage(obj_guid, 45, obj.NtuCapacitorScaled)) } if(obj.Definition.MaxCapacitor > 0) { val capacitor = scala.math.ceil((obj.Capacitor.toFloat / obj.Definition.MaxCapacitor.toFloat) * 10).toInt @@ -2979,7 +2978,7 @@ class WorldSessionActor extends Actor if(vehicle.NtuCapacitor < vehicle.Definition.MaxNtuCapacitor) { // Charging - ANTs would charge from 0-100% in roughly 75s on live (https://www.youtube.com/watch?v=veOWToR2nSk&feature=youtu.be&t=1194) vehicle.NtuCapacitor += vehicle.Definition.MaxNtuCapacitor / 75 - sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, scala.math.ceil((vehicle.NtuCapacitor.toFloat / vehicle.Definition.MaxNtuCapacitor.toFloat) * 10).toInt)) // set ntu on vehicle UI + sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, vehicle.NtuCapacitorScaled)) // set ntu on vehicle UI continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(vehicle.GUID, 52, 1L)) // panel glow on continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(vehicle.GUID, 49, 1L)) // orb particle effect on @@ -2987,7 +2986,7 @@ class WorldSessionActor extends Actor } else { // Fully charged - sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, scala.math.ceil((vehicle.NtuCapacitor.toFloat / vehicle.Definition.MaxNtuCapacitor.toFloat) * 10).toInt)) // set ntu on vehicle UI + sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, vehicle.NtuCapacitorScaled)) // set ntu on vehicle UI // Turning off glow/orb effects on ANT doesn't seem to work when deployed. Try to undeploy ANT from server side context.system.scheduler.scheduleOnce(vehicle.UndeployTime milliseconds, vehicle.Actor, Deployment.TryUndeploy(DriveState.Undeploying)) @@ -3016,7 +3015,7 @@ class WorldSessionActor extends Actor vehicle.NtuCapacitor -= chargeToDeposit silo.Actor ! ResourceSilo.UpdateChargeLevel(chargeToDeposit) continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(silo_guid, 49, 1L)) // panel glow on & orb particles on - sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, scala.math.ceil((vehicle.NtuCapacitor.toFloat / vehicle.Definition.MaxNtuCapacitor.toFloat) * 10).toInt)) // set ntu on vehicle UI + sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, vehicle.NtuCapacitorScaled)) // set ntu on vehicle UI //todo: grant BEP to user //todo: grant BEP to squad in range @@ -3253,6 +3252,17 @@ class WorldSessionActor extends Actor vehicle.Actor ! JammableUnit.ClearJammeredStatus() vehicle.Actor ! JammableUnit.ClearJammeredSound() } + + //positive shield strength + if(vehicle.Shields > 0) { + sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 68, vehicle.Shields)) + } + + // ANT capacitor + if(vehicle.Definition.MaxNtuCapacitor > 0) { + sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, vehicle.NtuCapacitorScaled)) // set ntu on vehicle UI + } + LoadZoneTransferPassengerMessages( guid, continent.Id, @@ -3748,10 +3758,6 @@ class WorldSessionActor extends Actor (0 to 3).foreach { group => sendResponse(PlanetsideAttributeMessage(vguid, group + 10, vehicle.PermissionGroup(group).get.id)) } - //positive shield strength - if(vehicle.Shields > 0) { - sendResponse(PlanetsideAttributeMessage(vguid, 68, vehicle.Shields)) - } case _ => ; //no vehicle } //vehicle wreckages