diff --git a/src/GameLogic/MiniGames/HeykelSavasiContext.cs b/src/GameLogic/MiniGames/HeykelSavasiContext.cs
index 5a4b890..ffe0578 100644
--- a/src/GameLogic/MiniGames/HeykelSavasiContext.cs
+++ b/src/GameLogic/MiniGames/HeykelSavasiContext.cs
@@ -624,6 +624,10 @@ public class HeykelSavasiContext : MiniGameContext
}
}
+ /// Reapplies the team's earned buffs to a player who just (re)spawned.
+ /// The player who (re)spawned.
+ public ValueTask OnPlayerRespawnedAsync(Player player) => this.ReapplyBuffsAsync(player);
+
///
/// Pure, dependency-free tracker for statue-break progress and win detection. Extracted out of
/// so it can be unit-tested directly, without constructing a full
diff --git a/src/GameLogic/Player.cs b/src/GameLogic/Player.cs
index d55a86a..24f9cc0 100644
--- a/src/GameLogic/Player.cs
+++ b/src/GameLogic/Player.cs
@@ -1204,6 +1204,13 @@ public class Player : AsyncDisposable, IBucketMapObserver, IAttackable, IAttacke
await this.CurrentMap.AddAsync(summon).ConfigureAwait(false);
summon.OnSpawn();
}
+
+ // ADAMU-CUSTOM: Heykel Savasi -> reapply the team's earned buffs after (re)spawning during battle.
+ if (this.CurrentMiniGame is HeykelSavasiContext heykelSavasiRebuff
+ && heykelSavasiRebuff.State == MiniGameState.Playing)
+ {
+ await heykelSavasiRebuff.OnPlayerRespawnedAsync(this).ConfigureAwait(false);
+ }
}
///
@@ -2325,6 +2332,14 @@ public class Player : AsyncDisposable, IBucketMapObserver, IAttackable, IAttacke
};
}
+ // ADAMU-CUSTOM: Heykel Savasi -> respawn at the player's own team base while the battle is running.
+ if (this.CurrentMiniGame is HeykelSavasiContext heykelSavasiRespawn
+ && heykelSavasiRespawn.State == MiniGameState.Playing
+ && heykelSavasiRespawn.GetTeam(this) != HeykelSavasiTeam.None)
+ {
+ return heykelSavasiRespawn.GetTeamSpawnGate(heykelSavasiRespawn.GetTeam(this));
+ }
+
var spawnTargetMapDefinition = this.CurrentMap.Definition.SafezoneMap ?? this.CurrentMap.Definition;
var targetMap = await this.GameContext.GetMapAsync((ushort)spawnTargetMapDefinition.Number, false).ConfigureAwait(false);
return targetMap?.SafeZoneSpawnGate