heal & repair messages

This commit is contained in:
ScrawnyRonnie 2025-06-15 17:19:11 -04:00
parent 895ed5331c
commit c634aea786
3 changed files with 46 additions and 2 deletions

View file

@ -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))
}
/**

View file

@ -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) {

View file

@ -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 = {