diff --git a/src/main/scala/net/psforever/objects/Players.scala b/src/main/scala/net/psforever/objects/Players.scala index 7ec07f3c2..241078f2b 100644 --- a/src/main/scala/net/psforever/objects/Players.scala +++ b/src/main/scala/net/psforever/objects/Players.scala @@ -80,6 +80,8 @@ object Players { ) ) target.Zone.AvatarEvents ! AvatarServiceMessage(name, AvatarAction.Revive(target.GUID)) + val reviveMessage = s"@YouHaveBeenMessage^revived~^$medicName~" + PlayerControl.sendResponse(target.Zone, name, ChatMsg(ChatMessageType.UNK_227, reviveMessage)) } /** diff --git a/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala b/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala index ee5fef561..375f4cec5 100644 --- a/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala +++ b/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala @@ -5,6 +5,7 @@ import akka.actor.{Actor, ActorRef, Props, typed} import net.psforever.actors.session.AvatarActor import net.psforever.login.WorldSession.{DropEquipmentFromInventory, HoldNewEquipmentUp, PutNewEquipmentInInventoryOrDrop, RemoveOldEquipmentFromInventory} import net.psforever.objects._ +import net.psforever.objects.avatar.PlayerControl.sendResponse import net.psforever.objects.ce.Deployable import net.psforever.objects.definition.DeployAnimation import net.psforever.objects.definition.converter.OCM @@ -147,6 +148,15 @@ class PlayerControl(player: Player, avatarActor: typed.ActorRef[AvatarActor.Comm newHealth - originalHealth ) ) + val amount = newHealth - originalHealth + val healMessageSelf = s"@SelfHitHealedMessage^healed~^$amount~^health~" + val healMessageOther = s"@WereHitByHealedMessage^healed~^$amount~^health~^$uname~" + if (player == user) { + sendResponse(user.Zone, user.Name, ChatMsg(ChatMessageType.UNK_227, healMessageSelf)) + } + else { + sendResponse(player.Zone, player.Name, ChatMsg(ChatMessageType.UNK_227, healMessageOther)) + } } if (player != user) { //"Someone is trying to heal you" @@ -210,6 +220,15 @@ class PlayerControl(player: Player, avatarActor: typed.ActorRef[AvatarActor.Comm newArmor - originalArmor ) ) + val amount = newArmor - originalArmor + val repairMessageSelf = s"@SelfHitHealedMessage^repaired~^$amount~^armor~" + val repairMessageOther = s"@WereHitByHealedMessage^repaired~^$amount~^armor~^$uname~" + if (player == user) { + sendResponse(user.Zone, user.Name, ChatMsg(ChatMessageType.UNK_227, repairMessageSelf)) + } + else { + sendResponse(player.Zone, player.Name, ChatMsg(ChatMessageType.UNK_227, repairMessageOther)) + } } if (player != user) { if (player.isAlive) { diff --git a/src/main/scala/net/psforever/objects/serverobject/repair/RepairableEntity.scala b/src/main/scala/net/psforever/objects/serverobject/repair/RepairableEntity.scala index 11b51ad8a..3efb93c97 100644 --- a/src/main/scala/net/psforever/objects/serverobject/repair/RepairableEntity.scala +++ b/src/main/scala/net/psforever/objects/serverobject/repair/RepairableEntity.scala @@ -1,11 +1,13 @@ //Copyright (c) 2020 PSForever package net.psforever.objects.serverobject.repair +import net.psforever.objects.avatar.PlayerControl.sendResponse +import net.psforever.objects.ce.DeployableCategory import net.psforever.objects.sourcing.PlayerSource import net.psforever.objects.vital.RepairFromEquipment import net.psforever.objects.{Player, Tool} -import net.psforever.packet.game.{InventoryStateMessage, RepairMessage} -import net.psforever.types.{PlanetSideEmpire, Vector3} +import net.psforever.packet.game.{ChatMsg, InventoryStateMessage, RepairMessage} +import net.psforever.types.{ChatMessageType, PlanetSideEmpire, Vector3} import net.psforever.services.Service import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage} @@ -113,6 +115,27 @@ trait RepairableEntity extends Repairable { RepairMessage(target.GUID, updatedHealth * 100 / definition.MaxHealth) ) ) + //if vehicle and vehicle is owned by another player, send repair chat message to the vehicle's owner + if (target.Zone.Vehicles.exists(_.GUID == target.GUID)) { + val vehicle = target.Zone.Vehicles.filter(_.GUID == target.GUID).head + val vehicleOwner = vehicle.OwnerName.getOrElse("someone") + val amount = updatedHealth - originalHealth + if (vehicleOwner != "someone" && vehicle.OwnerGuid.get != player.GUID && amount > 0) { + val repairMessageOther = s"@YourWasHealedMessage^@${vehicle.Definition.Name}~^repaired~^$amount~^armor~^${player.Name}~" + sendResponse(vehicle.Zone, vehicleOwner, ChatMsg(ChatMessageType.UNK_227, repairMessageOther)) + } + } + //same check for field turret + if (target.Zone.DeployableList.exists(_.GUID == target.GUID)) { + val turret = target.Zone.DeployableList.filter(_.GUID == target.GUID).head + val turretOwner = turret.OwnerName.getOrElse("someone") + val amount = updatedHealth - originalHealth + if (turret.Definition.DeployCategory == DeployableCategory.FieldTurrets && turretOwner != "someone" + && turret.OwnerGuid.get != player.GUID && amount > 0) { + val repairMessageOther = s"@YourWasHealedMessage^@${turret.Definition.Name}~^repaired~^$amount~^armor~^${player.Name}~" + sendResponse(turret.Zone, turretOwner, ChatMsg(ChatMessageType.UNK_227, repairMessageOther)) + } + } } protected def PerformRepairs(target: Repairable.Target, amount: Int): Int = {