Skip to content

Commit

Permalink
Merge pull request #633 from TheTrackerCouncil/map-patches
Browse files Browse the repository at this point in the history
Add VARIA soft lock patches and Red Brin to Maridia patch
  • Loading branch information
MattEqualsCoder authored Dec 30, 2024
2 parents 39ed4e9 + be9b3f9 commit a619a5e
Show file tree
Hide file tree
Showing 18 changed files with 138 additions and 3 deletions.
6 changes: 6 additions & 0 deletions src/TrackerCouncil.Smz3.Data/Options/CasPatches.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@ public class CasPatches : ViewModelBase
[DynamicFormFieldCheckBox(checkBoxText: "Sand Pit Platforms", toolTipText: "Add platforms to make getting out of sand pits in Maridia easier.", groupName: "Middle")]
public bool SandPitPlatforms { get; set; } = true;

[DynamicFormFieldCheckBox(checkBoxText: "Maridia Top Entrance", toolTipText: "Adds power bomb blocks around the super missile gate in the hidden room at the top of Red Brinstar to allow you to access the top left of Maridia faster.", groupName: "Middle")]
public bool MaridiaTopEntrance { get; set; } = true;

[DynamicFormFieldCheckBox(checkBoxText: "Metroid Soft Lock Patches", toolTipText: "Updates multiple rooms in Super Metroid to prevent soft locks.", groupName: "Middle")]
public bool SoftLockPatches { get; set; } = true;

[DynamicFormFieldComboBox(label: "Zelda item drops:", groupName: "Bottom")]
public ZeldaDrops ZeldaDrops { get; set; }

Expand Down
4 changes: 2 additions & 2 deletions src/TrackerCouncil.Smz3.Data/Options/ItemCancelBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ public enum ItemCancelBehavior
{
[Description("Deselects item (Vanilla)")]
Vanilla,
[Description("Hold to keep supers/power bombs selected.")]
[Description("Hold to keep supers/power bombs selected")]
HoldSupersOnly,
[Description("Hold to keep missiles/supers/pbs selected. Item select changes weapon.")]
[Description("Hold to keep missiles/supers/pbs selected; item select changes weapon")]
Hold,
[Description("Press to toggle supers/pbs on or off")]
Toggle
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,79 @@ public static Stream GetStream(string name)
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream SandPitPlatforms() => GetStream("SandPitPlatforms.ips");

/// <summary>
/// Gets a stream for the IPS patch to remove the super missile block from the old Tourian launchpad
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream CrateriaLaunchpadExitNoSuperBlock() => GetStream("climb_supers.ips");

/// <summary>
/// Gets a stream for the IPS patch to change the bomb block in the Crateria moat to shoot blocks
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream CrateriaMoatNoBombBlock() => GetStream("moat.ips");

/// <summary>
/// Gets a stream for the IPS patch to change the bomb block in Green Brin mockball hall to a shoot block
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream GreenBrinMockballHallNoBombBlock() => GetStream("early_super_bridge.ips");

/// <summary>
/// Gets a stream for the IPS patch to make the speed booster blocks in pink brinstar Dachora room not respawn
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream PinkBrinDachoraSpeedboosterBlockNoRespawn() => GetStream("dachora.ips");

/// <summary>
/// Gets a stream for the IPS patch to remove the bomb blocks to the Pink Brin save rooms
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream PinkBrinSaveEntranceNoBombBlock() => GetStream("spospo_save.ips");

/// <summary>
/// Gets a stream for the IPS patch to change the bomb block in the Pink Brinstar room under the Sidehopper room
/// to a shoot block
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream PinkBrinSidehopperPitRoomNoBombBlock() => GetStream("mission_impossible.ips");

/// <summary>
/// Gets a stream for the IPS patch to add platforms to the Red Brinstar Red Tower to allow you to get up easier
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream RedBrinRedTowerPlatforms() => GetStream("red_tower.ips");

/// <summary>
/// Gets a stream for the IPS patch to change the bomb block in front of the Spazer room to a shoot block
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream RedBrinSpazerNoBombBlock() => GetStream("spazer.ips");

/// <summary>
/// Gets a stream for the IPS patch to change the bomb block to the Kraid save room to a shoot block
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream KraidSaveNoBombBlock() => GetStream("kraid_save.ips");

/// <summary>
/// Gets a stream for the IPS patch to change the bomb block in when leaving the Hi Jump item room to a shoot block
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream NorfairHiJumpExitNoBombBlock() => GetStream("high_jump.ips");

/// <summary>
/// Gets a stream for the IPS patch to make it easier to get into Upper Norfair east without the hi jump
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream NorfairCathedralEntranceNovaBoostPlatformBlock() => GetStream("nova_boost_platform.ips");

/// <summary>
/// Gets a stream for the IPS patch to allow you to get to upper Maridia from the top of Red Brin
/// </summary>
/// <returns>A new stream that contains the IPS patch.</returns>
public static Stream MaridiaTopEntrance() => GetStream("maridia_entrance.ips");


}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,48 @@ public void ApplyCasPatches(byte[] rom, PatchOptions options)
Rom.ApplySuperMetroidIps(rom, patch);
}

if (options.CasPatches.MaridiaTopEntrance)
{
using var patch = IpsPatch.MaridiaTopEntrance();
Rom.ApplySuperMetroidIps(rom, patch);
}

if (options.CasPatches.SoftLockPatches)
{
using var moatPatch = IpsPatch.CrateriaMoatNoBombBlock();
Rom.ApplySuperMetroidIps(rom, moatPatch);

using var launchpadPatch = IpsPatch.CrateriaLaunchpadExitNoSuperBlock();
Rom.ApplySuperMetroidIps(rom, launchpadPatch);

using var mockballHallPatch = IpsPatch.GreenBrinMockballHallNoBombBlock();
Rom.ApplySuperMetroidIps(rom, mockballHallPatch);

using var dachoraPatch = IpsPatch.PinkBrinDachoraSpeedboosterBlockNoRespawn();
Rom.ApplySuperMetroidIps(rom, dachoraPatch);

using var pinkBrinSavePatch = IpsPatch.PinkBrinSaveEntranceNoBombBlock();
Rom.ApplySuperMetroidIps(rom, pinkBrinSavePatch);

using var sidehopperPatch = IpsPatch.PinkBrinSidehopperPitRoomNoBombBlock();
Rom.ApplySuperMetroidIps(rom, sidehopperPatch);

using var redTowerPatch = IpsPatch.RedBrinRedTowerPlatforms();
Rom.ApplySuperMetroidIps(rom, redTowerPatch);

using var spazerPatch = IpsPatch.RedBrinSpazerNoBombBlock();
Rom.ApplySuperMetroidIps(rom, spazerPatch);

using var kraidSavePatch = IpsPatch.KraidSaveNoBombBlock();
Rom.ApplySuperMetroidIps(rom, kraidSavePatch);

using var norfairPlatformPatch = IpsPatch.NorfairCathedralEntranceNovaBoostPlatformBlock();
Rom.ApplySuperMetroidIps(rom, norfairPlatformPatch);

using var hiJumpExitPatch = IpsPatch.NorfairHiJumpExitNoBombBlock();
Rom.ApplySuperMetroidIps(rom, hiJumpExitPatch);
}

if (options.MetroidControls.RunButtonBehavior == RunButtonBehavior.AutoRun)
{
using var patch = IpsPatch.AutoRun();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,18 @@
<EmbeddedResource Include="FileData\IpsPatches\zsm.ips" />
<EmbeddedResource Include="Text\Scripts\StringTable.yaml" />
<EmbeddedResource Include="FileData\IpsPatches\SandPitPlatforms.ips" />
<EmbeddedResource Include="FileData\IpsPatches\dachora.ips" />
<EmbeddedResource Include="FileData\IpsPatches\climb_supers.ips" />
<EmbeddedResource Include="FileData\IpsPatches\early_super_bridge.ips" />
<EmbeddedResource Include="FileData\IpsPatches\high_jump.ips" />
<EmbeddedResource Include="FileData\IpsPatches\mission_impossible.ips" />
<EmbeddedResource Include="FileData\IpsPatches\kraid_save.ips" />
<EmbeddedResource Include="FileData\IpsPatches\moat.ips" />
<EmbeddedResource Include="FileData\IpsPatches\nova_boost_platform.ips" />
<EmbeddedResource Include="FileData\IpsPatches\red_tower.ips" />
<EmbeddedResource Include="FileData\IpsPatches\spazer.ips" />
<EmbeddedResource Include="FileData\IpsPatches\spospo_save.ips" />
<EmbeddedResource Include="FileData\IpsPatches\maridia_entrance.ips" />
</ItemGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/TrackerCouncil.Smz3.UI/TrackerCouncil.Smz3.UI.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationManifest>app.manifest</ApplicationManifest>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
<Version>9.9.0-rc.1</Version>
<Version>9.9.0-rc.2</Version>
<AssemblyName>SMZ3CasRandomizer</AssemblyName>
<ApplicationIcon>Assets\smz3.ico</ApplicationIcon>
<RootNamespace>$(MSBuildProjectName.Replace(" ", "_"))</RootNamespace>
Expand Down

0 comments on commit a619a5e

Please sign in to comment.