diff --git a/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala b/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala index bc6e1d01..a757e162 100644 --- a/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala +++ b/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala @@ -1309,7 +1309,10 @@ class PlayerControl(player: Player, avatarActor: typed.ActorRef[AvatarActor.Comm * @param data additional interaction information, if applicable */ def doInteractingWithDeath(obj: PlanetSideServerObject, body: PieceOfEnvironment, data: Option[OxygenStateTarget]): Unit = { - suicide() + player.History.findLast { entry => entry.isInstanceOf[ReconstructionActivity] } match { + case Some(entry) if System.currentTimeMillis() - entry.time > 3000L => suicide() + case _ => + } } //noinspection ScalaUnusedSymbol diff --git a/src/main/scala/net/psforever/objects/vehicles/control/VehicleControl.scala b/src/main/scala/net/psforever/objects/vehicles/control/VehicleControl.scala index caf21001..59d1deab 100644 --- a/src/main/scala/net/psforever/objects/vehicles/control/VehicleControl.scala +++ b/src/main/scala/net/psforever/objects/vehicles/control/VehicleControl.scala @@ -679,14 +679,18 @@ class VehicleControl(vehicle: Vehicle) */ def doInteractingWithDeath(obj: PlanetSideServerObject, body: PieceOfEnvironment, data: Option[OxygenStateTarget]): Unit = { if (!obj.Destroyed) { - PerformDamage( - vehicle, - DamageInteraction( - VehicleSource(vehicle), - SuicideReason(), - vehicle.Position - ).calculate() - ) + vehicle.History.findLast { entry => entry.isInstanceOf[SpawningActivity] } match { + case Some(entry) if System.currentTimeMillis() - entry.time > 3000L => + PerformDamage( + vehicle, + DamageInteraction( + VehicleSource(vehicle), + SuicideReason(), + vehicle.Position + ).calculate() + ) + case _ => + } } }