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) case term: Terminal with ProximityUnit => sessionData.terminals.StopUsingProximityUnit(term)
} }
if (sessionData.zoning.zoningStatus == Zoning.Status.Deconstructing) { if (sessionData.zoning.zoningStatus == Zoning.Status.Deconstructing) {
sessionData.zoning.zoningStatus = Zoning.Status.None sessionData.stopDeconstructing()
} }
case AvatarResponse.ObjectHeld(slot, _) case AvatarResponse.ObjectHeld(slot, _)

View file

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

View file

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

View file

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