condition for avoiding server-size (all) damage during deconstruction period

This commit is contained in:
Fate-JH 2023-04-25 00:44:53 -04:00
parent 002324d671
commit 4b8c77ee72
4 changed files with 16 additions and 3 deletions

View file

@ -163,7 +163,7 @@ class SessionAvatarHandlers(
case term: Terminal with ProximityUnit => sessionData.terminals.StopUsingProximityUnit(term)
}
if (sessionData.zoning.zoningStatus == Zoning.Status.Deconstructing) {
sessionData.zoning.zoningStatus = Zoning.Status.None
sessionData.stopDeconstructing()
}
case AvatarResponse.ObjectHeld(slot, _)

View file

@ -211,7 +211,7 @@ class SessionData(
val isMovingPlus = isMoving || isJumping || jumpThrust
if (isMovingPlus) {
if (zoning.zoningStatus == Zoning.Status.Deconstructing) {
zoning.zoningStatus = Zoning.Status.None
stopDeconstructing()
} else {
zoning.CancelZoningProcessWithDescriptiveReason("cancel_motion")
}
@ -525,7 +525,7 @@ class SessionData(
if (action == ImplantAction.Activation) {
if (zoning.zoningStatus == Zoning.Status.Deconstructing) {
//do not activate; play deactivation sound instead
zoning.zoningStatus == Zoning.Status.None
stopDeconstructing()
avatar.implants(slot).collect {
case implant if implant.active =>
avatarActor ! AvatarActor.DeactivateImplant(implant.definition.implantType)
@ -1450,6 +1450,9 @@ class SessionData(
}
player.Actor ! PlayerControl.ObjectHeld(Player.HandsDownSlot, updateMyHolsterArm = true)
zoning.zoningStatus = Zoning.Status.Deconstructing
if (player.death_by == 0) {
player.death_by = 1
}
terminals.CancelAllProximityUnits()
zoning.spawn.GoToDeploymentMap()
case _ => ()
@ -2776,6 +2779,11 @@ class SessionData(
sendResponse(ChatMsg(ChatMessageType.UNK_227, wideContents=false, "", "@charsaved", None))
}
def stopDeconstructing(): Unit = {
zoning.zoningStatus = Zoning.Status.None
player.death_by = math.min(player.death_by, 0)
}
def failWithError(error: String): Unit = {
log.error(error)
middlewareActor ! MiddlewareActor.Teardown()

View file

@ -2082,6 +2082,7 @@ class ZoningOperations(
player.Health = health
player.Armor = armor
}
player.death_by = math.min(player.death_by, 0)
sessionData.vehicles.GetKnownVehicleAndSeat() match {
case (Some(vehicle: Vehicle), Some(seat: Int)) =>
//if the vehicle is the cargo of another vehicle in this zone

View file

@ -547,6 +547,10 @@ class Player(var avatar: Avatar)
ZoningRequest
}
override def CanDamage: Boolean = {
death_by < 1 && super.CanDamage
}
def DamageModel: DamageResistanceModel = exosuit.asInstanceOf[DamageResistanceModel]
def canEqual(other: Any): Boolean = other.isInstanceOf[Player]