feat(hs): import LoL map (server 92 / World93) + real base & statue coords

- Embed Terrain93.att (server map No 92 -> loads Terrain93); map Number 90->92.
- Real walkable coords from the LoL arena diamond (center lane x=42):
  Red base (42,10) top tip, Blue base (42,92) bottom tip; 7 statues per team along x=42.
- Client World93 + Object93 deployed to PC client separately.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Acentech Dev
2026-07-21 01:18:54 +03:00
parent 790d944757
commit 917831e198
5 changed files with 23 additions and 21 deletions

View File

@@ -33,25 +33,25 @@ public class HeykelSavasiContext : MiniGameContext
/// The X1/Y1 anchor of the red team's base spawn gate. /// The X1/Y1 anchor of the red team's base spawn gate.
/// Must match Gates.cs targetGates 600 (RedBase). /// Must match Gates.cs targetGates 600 (RedBase).
/// </summary> /// </summary>
private const byte RedBaseAnchorX1 = 20; private const byte RedBaseAnchorX1 = 42;
/// <summary> /// <summary>
/// The X1/Y1 anchor of the red team's base spawn gate. /// The X1/Y1 anchor of the red team's base spawn gate.
/// Must match Gates.cs targetGates 600 (RedBase). /// Must match Gates.cs targetGates 600 (RedBase).
/// </summary> /// </summary>
private const byte RedBaseAnchorY1 = 20; private const byte RedBaseAnchorY1 = 10;
/// <summary> /// <summary>
/// The X1/Y1 anchor of the blue team's base spawn gate. /// The X1/Y1 anchor of the blue team's base spawn gate.
/// Must match Gates.cs targetGates 601 (BlueBase). /// Must match Gates.cs targetGates 601 (BlueBase).
/// </summary> /// </summary>
private const byte BlueBaseAnchorX1 = 220; private const byte BlueBaseAnchorX1 = 42;
/// <summary> /// <summary>
/// The X1/Y1 anchor of the blue team's base spawn gate. /// The X1/Y1 anchor of the blue team's base spawn gate.
/// Must match Gates.cs targetGates 601 (BlueBase). /// Must match Gates.cs targetGates 601 (BlueBase).
/// </summary> /// </summary>
private const byte BlueBaseAnchorY1 = 220; private const byte BlueBaseAnchorY1 = 92;
/// <summary> /// <summary>
/// The number of statues (per team) which need to be broken by the opposing team to win the event. /// The number of statues (per team) which need to be broken by the opposing team to win the event.
@@ -112,13 +112,13 @@ public class HeykelSavasiContext : MiniGameContext
/// </summary> /// </summary>
private static readonly Point[] RedStatuePositions = private static readonly Point[] RedStatuePositions =
{ {
new(100, 100), new(42, 51),
new(88, 88), new(42, 45),
new(77, 77), new(42, 38),
new(65, 65), new(42, 31),
new(53, 53), new(42, 25),
new(42, 42), new(42, 15),
new(30, 30), new(42, 8),
}; };
/// <summary> /// <summary>
@@ -129,13 +129,13 @@ public class HeykelSavasiContext : MiniGameContext
/// </summary> /// </summary>
private static readonly Point[] BlueStatuePositions = private static readonly Point[] BlueStatuePositions =
{ {
new(140, 140), new(42, 53),
new(152, 152), new(42, 59),
new(163, 163), new(42, 66),
new(175, 175), new(42, 73),
new(187, 187), new(42, 79),
new(198, 198), new(42, 87),
new(210, 210), new(42, 94),
}; };
private readonly IGameContext _gameContext; private readonly IGameContext _gameContext;

View File

@@ -25,6 +25,7 @@
<None Remove="Resources\075_Terrain8.att" /> <None Remove="Resources\075_Terrain8.att" />
<None Remove="Resources\Terrain1.att" /> <None Remove="Resources\Terrain1.att" />
<None Remove="Resources\Terrain83.att" /> <None Remove="Resources\Terrain83.att" />
<None Remove="Resources\Terrain93.att" />
<None Remove="Resources\Terrain84.att" /> <None Remove="Resources\Terrain84.att" />
<None Remove="Resources\Terrain85.att" /> <None Remove="Resources\Terrain85.att" />
<None Remove="Resources\Terrain86.att" /> <None Remove="Resources\Terrain86.att" />
@@ -109,6 +110,7 @@
<EmbeddedResource Include="Resources\075_Terrain8.att" /> <EmbeddedResource Include="Resources\075_Terrain8.att" />
<EmbeddedResource Include="Resources\Terrain1.att" /> <EmbeddedResource Include="Resources\Terrain1.att" />
<EmbeddedResource Include="Resources\Terrain83.att" /> <EmbeddedResource Include="Resources\Terrain83.att" />
<EmbeddedResource Include="Resources\Terrain93.att" />
<EmbeddedResource Include="Resources\Terrain84.att" /> <EmbeddedResource Include="Resources\Terrain84.att" />
<EmbeddedResource Include="Resources\Terrain85.att" /> <EmbeddedResource Include="Resources\Terrain85.att" />
<EmbeddedResource Include="Resources\Terrain86.att" /> <EmbeddedResource Include="Resources\Terrain86.att" />

Binary file not shown.

View File

@@ -442,8 +442,8 @@ public class Gates : InitializerBase
targetGates.Add(341, this.CreateExitGate(maps[81], 162, 12, 164, 14, 5)); targetGates.Add(341, this.CreateExitGate(maps[81], 162, 12, 164, 14, 5));
// Heykel Savasi (event map, base spawn gates) // Heykel Savasi (event map, base spawn gates)
targetGates.Add(600, this.CreateExitGate(maps[HeykelSavasiMap.Number], 20, 20, 24, 24, 3, true)); // RedBase targetGates.Add(600, this.CreateExitGate(maps[HeykelSavasiMap.Number], 42, 10, 42, 10, 3, true)); // RedBase (top tip of the LoL arena diamond)
targetGates.Add(601, this.CreateExitGate(maps[HeykelSavasiMap.Number], 220, 220, 224, 224, 7, true)); // BlueBase targetGates.Add(601, this.CreateExitGate(maps[HeykelSavasiMap.Number], 42, 92, 42, 92, 7, true)); // BlueBase (bottom tip of the LoL arena diamond)
return targetGates; return targetGates;
} }

View File

@@ -22,7 +22,7 @@ internal class HeykelSavasiMap : BaseMapInitializer
/// <summary> /// <summary>
/// The Number of the Map. /// The Number of the Map.
/// </summary> /// </summary>
internal const byte Number = 90; internal const byte Number = 92;
/// <summary> /// <summary>
/// The Name of the Map. /// The Name of the Map.