Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add VARIA soft lock patches and Red Brin to Maridia patch #633

Merged
merged 1 commit into from
Dec 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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