A Core/NosSmooth.Game/PacketHandlers/Map/ReviveResponder.cs => Core/NosSmooth.Game/PacketHandlers/Map/ReviveResponder.cs +53 -0
@@ 0,0 1,53 @@
+//
+// ReviveResponder.cs
+//
+// Copyright (c) František Boháček. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using NosSmooth.Core.Packets;
+using NosSmooth.Game.Data.Entities;
+using NosSmooth.Packets.Server.Entities;
+using Remora.Results;
+
+namespace NosSmooth.Game.PacketHandlers.Map;
+
+/// <summary>
+/// A handler of <see cref="RevivePacket"/>.
+/// </summary>
+public class ReviveResponder : IPacketResponder<RevivePacket>
+{
+ private readonly Game _game;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ReviveResponder"/> class.
+ /// </summary>
+ /// <param name="game">The game.</param>
+ public ReviveResponder(Game game)
+ {
+ _game = game;
+ }
+
+ /// <inheritdoc />
+ public Task<Result> Respond(PacketEventArgs<RevivePacket> packetArgs, CancellationToken ct = default)
+ {
+ var packet = packetArgs.Packet;
+ var entity = _game.CurrentMap?.Entities.GetEntity<ILivingEntity>(packet.EntityId);
+
+ if (entity is not null)
+ {
+ var hp = entity.Hp;
+ var mp = entity.Mp;
+ if (hp is not null)
+ {
+ hp.Percentage = 100;
+ }
+
+ if (mp is not null)
+ {
+ mp.Percentage = 100;
+ }
+ }
+
+ return Task.FromResult(Result.FromSuccess());
+ }
+}<
\ No newline at end of file
A Packets/NosSmooth.Packets/Server/Entities/RevivePacket.cs => Packets/NosSmooth.Packets/Server/Entities/RevivePacket.cs +22 -0
@@ 0,0 1,22 @@
+//
+// RevivePacket.cs
+//
+// Copyright (c) František Boháček. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using NosSmooth.Packets.Enums.Entities;
+using NosSmooth.PacketSerializer.Abstractions.Attributes;
+
+namespace NosSmooth.Packets.Server.Entities;
+
+[PacketHeader("revive", PacketSource.Server)]
+[GenerateSerializer(true)]
+public record RevivePacket
+(
+ [PacketIndex(0)]
+ EntityType EntityType,
+ [PacketIndex(1)]
+ long EntityId,
+ [PacketIndex(2)]
+ short TimeSpaceLives
+) : IPacket;<
\ No newline at end of file