mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-03-03 12:10:22 +00:00
Vehicle fixes (#313)
* Send shield + capacitor state to players mounting a vehicle * Allow players to dismount vehicles that are slightly moving (e.g. rotating magrider, deployed vehicle with phantom velocity from pre-deployment), or vehicles in a deployed state * Add vehicle ntu capacitor, keeping old capacitor for EMP functionality when implemented, send capacitor / ntu values on vehicle mount if definition has a maximum set
This commit is contained in:
parent
9331a0136b
commit
ddf702eea9
5 changed files with 53 additions and 22 deletions
|
|
@ -5564,7 +5564,7 @@ object GlobalDefinitions {
|
|||
ant.DeployTime = 1500
|
||||
ant.UndeployTime = 1500
|
||||
ant.AutoPilotSpeeds = (18, 6)
|
||||
ant.MaximumCapacitor = 1500
|
||||
ant.MaxNtuCapacitor = 1500
|
||||
ant.Packet = utilityConverter
|
||||
ant.DestroyedModel = Some(DestroyedVehicle.Ant)
|
||||
ant.Subtract.Damage1 = 5
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner
|
|||
private var jammered : Boolean = false
|
||||
private var cloaked : Boolean = false
|
||||
private var flying : Boolean = false
|
||||
private var ntuCapacitor : Int = 0
|
||||
private var capacitor : Int = 0
|
||||
/**
|
||||
* Permissions control who gets to access different parts of the vehicle;
|
||||
|
|
@ -196,11 +197,24 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner
|
|||
Flying
|
||||
}
|
||||
|
||||
def NtuCapacitor : Int = ntuCapacitor
|
||||
|
||||
def NtuCapacitor_=(value: Int) : Int = {
|
||||
if(value > Definition.MaxNtuCapacitor) {
|
||||
ntuCapacitor = Definition.MaxNtuCapacitor
|
||||
} else if (value < 0) {
|
||||
ntuCapacitor = 0
|
||||
} else {
|
||||
ntuCapacitor = value
|
||||
}
|
||||
NtuCapacitor
|
||||
}
|
||||
|
||||
def Capacitor : Int = capacitor
|
||||
|
||||
def Capacitor_=(value: Int) : Int = {
|
||||
if(value > Definition.MaximumCapacitor) {
|
||||
capacitor = Definition.MaximumCapacitor
|
||||
if(value > Definition.MaxCapacitor) {
|
||||
capacitor = Definition.MaxCapacitor
|
||||
} else if (value < 0) {
|
||||
capacitor = 0
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,8 @@ class VehicleDefinition(objectId : Int) extends ObjectDefinition(objectId)
|
|||
private var canBeOwned : Boolean = true
|
||||
private var serverVehicleOverrideSpeeds : (Int, Int) = (0, 0)
|
||||
private var deconTime : Option[FiniteDuration] = None
|
||||
private var maximumCapacitor : Int = 0
|
||||
private var maxCapacitor : Int = 0
|
||||
private var maxNtuCapacitor : Int = 0
|
||||
private var destroyedModel : Option[DestroyedVehicle.Value] = None
|
||||
Name = "vehicle"
|
||||
Packet = VehicleDefinition.converter
|
||||
|
|
@ -153,11 +154,18 @@ class VehicleDefinition(objectId : Int) extends ObjectDefinition(objectId)
|
|||
|
||||
def AutoPilotSpeed2 : Int = serverVehicleOverrideSpeeds._2
|
||||
|
||||
def MaximumCapacitor : Int = maximumCapacitor
|
||||
def MaxNtuCapacitor : Int = maxNtuCapacitor
|
||||
|
||||
def MaximumCapacitor_=(maxCapacitor: Int) : Int = {
|
||||
maximumCapacitor = maxCapacitor
|
||||
MaximumCapacitor
|
||||
def MaxNtuCapacitor_=(max: Int) : Int = {
|
||||
maxNtuCapacitor = max
|
||||
MaxNtuCapacitor
|
||||
}
|
||||
|
||||
def MaxCapacitor : Int = maxCapacitor
|
||||
|
||||
def MaxCapacitor_=(max: Int) : Int = {
|
||||
maxCapacitor = max
|
||||
MaxCapacitor
|
||||
}
|
||||
|
||||
private var jackDuration = Array(0, 0, 0, 0)
|
||||
|
|
|
|||
|
|
@ -2,11 +2,12 @@
|
|||
package net.psforever.objects.serverobject.mount
|
||||
|
||||
import akka.actor.Actor
|
||||
import net.psforever.objects.PlanetSideGameObject
|
||||
import net.psforever.objects.{PlanetSideGameObject, Vehicle}
|
||||
import net.psforever.objects.entity.{Identifiable, WorldEntity}
|
||||
import net.psforever.objects.serverobject.affinity.FactionAffinity
|
||||
import net.psforever.objects.serverobject.hackable.Hackable
|
||||
import net.psforever.objects.serverobject.turret.TurretDefinition
|
||||
import net.psforever.types.DriveState
|
||||
|
||||
object MountableBehavior {
|
||||
/**
|
||||
|
|
@ -80,7 +81,7 @@ object MountableBehavior {
|
|||
val obj = MountableObject
|
||||
obj.Seat(seat_num) match {
|
||||
case Some(seat) =>
|
||||
if(seat.Bailable || !obj.isMoving) {
|
||||
if(seat.Bailable || !obj.isMoving(1) || (obj.isInstanceOf[Vehicle] && obj.asInstanceOf[Vehicle].DeploymentState == DriveState.Deployed)) {
|
||||
seat.Occupant = None
|
||||
user.VehicleSeated = None
|
||||
sender ! Mountable.MountMessages(user, Mountable.CanDismount(obj, seat_num))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue