diff --git a/OpenTracker.Models/BossSection.cs b/OpenTracker.Models/BossSection.cs index 124b77cd..4778167b 100644 --- a/OpenTracker.Models/BossSection.cs +++ b/OpenTracker.Models/BossSection.cs @@ -394,6 +394,28 @@ public BossSection(Game game, LocationID iD) _game.Regions[RegionID.DeathMountainEastTop].PropertyChanged += OnRequirementChanged; _game.Regions[RegionID.DarkDeathMountainTop].PropertyChanged += OnRequirementChanged; + break; + + case LocationID.GanonsTower: + + _defaultBoss = _game.Bosses[BossType.Aga]; + _boss = _game.Bosses[BossType.Aga]; + Prize = _game.Items[ItemType.Aga2]; + _region = _game.Regions[RegionID.GanonsTower]; + + GetAccessibility = () => + { + if ((_game.Items.Has(ItemType.Bow) || _game.Mode.EnemyShuffle.Value) && + _game.Items.Has(ItemType.GTSmallKey, 2) && _game.Items.Has(ItemType.GTBigKey)) + return AccessibilityLevel.Normal; + + return AccessibilityLevel.None; + }; + + itemReqs.Add(_game.Items[ItemType.Bow]); + itemReqs.Add(_game.Items[ItemType.GTSmallKey]); + itemReqs.Add(_game.Items[ItemType.GTBigKey]); + break; } diff --git a/OpenTracker.Models/EntranceSection.cs b/OpenTracker.Models/EntranceSection.cs index b29b49d9..524ce110 100644 --- a/OpenTracker.Models/EntranceSection.cs +++ b/OpenTracker.Models/EntranceSection.cs @@ -496,7 +496,7 @@ public EntranceSection(Game game, LocationID iD) return AccessibilityLevel.Normal; } - return AccessibilityLevel.Inspect; + return AccessibilityLevel.None; }; itemReqs.Add(_game.Items[ItemType.MoonPearl]); @@ -911,8 +911,6 @@ public EntranceSection(Game game, LocationID iD) Name = "Cave"; _standardItemProvided = _game.Items[ItemType.DesertBackAccess]; _invertedItemProvided = _game.Items[ItemType.DesertBackAccess]; - _standardRegion = _game.Regions[RegionID.LightWorld]; - _invertedRegion = _game.Regions[RegionID.DarkWorldSouth]; GetAccessibility = () => { @@ -1268,8 +1266,6 @@ public EntranceSection(Game game, LocationID iD) Name = "Cave"; _standardItemProvided = _game.Items[ItemType.BumperCaveAccess]; _invertedItemProvided = _game.Items[ItemType.BumperCaveAccess]; - _standardRegion = _game.Regions[RegionID.LightWorld]; - _invertedRegion = _game.Regions[RegionID.DarkWorldSouth]; GetAccessibility = () => { @@ -1410,9 +1406,9 @@ public EntranceSection(Game game, LocationID iD) Name = "House"; _standardItemProvided = _game.Items[ItemType.DarkWorldSouthAccess]; - _invertedItemProvided = _game.Items[ItemType.LightWorldAccess]; + _invertedItemProvided = _game.Items[ItemType.DarkWorldSouthAccess]; _standardRegion = _game.Regions[RegionID.DarkWorldSouth]; - _invertedRegion = _game.Regions[RegionID.LightWorld]; + _invertedRegion = _game.Regions[RegionID.DarkWorldSouth]; GetAccessibility = () => { return AccessibilityLevel.Normal; }; @@ -1550,10 +1546,27 @@ public EntranceSection(Game game, LocationID iD) GetAccessibility = () => { - // Default to full access, but not open until GT completed or Fast Ganon mode - return AccessibilityLevel.Normal; + if (_game.Mode.WorldState == WorldState.StandardOpen) + { + if (_game.Items.Has(ItemType.Aga2)) + return AccessibilityLevel.Normal; + } + + if (_game.Mode.WorldState == WorldState.Inverted) + { + if (_game.Items.Has(ItemType.Aga2)) + return _game.Regions[RegionID.HyruleCastleSecondFloor].Accessibility; + + return AccessibilityLevel.Inspect; + } + + return AccessibilityLevel.None; }; + itemReqs.Add(_game.Items[ItemType.Aga2]); + + _game.Regions[RegionID.HyruleCastleSecondFloor].PropertyChanged += OnRequirementChanged; + break; case LocationID.DarkIceRodCave: @@ -1673,7 +1686,6 @@ public EntranceSection(Game game, LocationID iD) _standardItemProvided = _game.Items[ItemType.LakeHyliaFairyIslandAccess]; _invertedItemProvided = _game.Items[ItemType.LakeHyliaFairyIslandAccess]; _standardRegion = _game.Regions[RegionID.LightWorld]; - _invertedRegion = _game.Regions[RegionID.DarkWorldSouth]; GetAccessibility = () => { @@ -1690,7 +1702,9 @@ public EntranceSection(Game game, LocationID iD) if (_game.Mode.WorldState == WorldState.Inverted) { - if (_game.Items.Has(ItemType.Gloves, 2) && _game.Items.Has(ItemType.Flippers)) + if ((_game.Regions[RegionID.DarkWorldSouth].Accessibility == AccessibilityLevel.Normal || + _game.Regions[RegionID.DarkWorldSouthEast].Accessibility == AccessibilityLevel.Normal) && + _game.Items.Has(ItemType.Gloves, 2) && _game.Items.Has(ItemType.Flippers)) return AccessibilityLevel.Normal; if (_game.Items.Has(ItemType.MoonPearl)) @@ -1703,7 +1717,9 @@ public EntranceSection(Game game, LocationID iD) return AccessibilityLevel.SequenceBreak; } - if (_game.Items.Has(ItemType.Gloves, 2)) + if ((_game.Regions[RegionID.DarkWorldSouth].Accessibility >= AccessibilityLevel.SequenceBreak || + _game.Regions[RegionID.DarkWorldSouthEast].Accessibility == AccessibilityLevel.SequenceBreak) && + _game.Items.Has(ItemType.Gloves, 2)) return AccessibilityLevel.SequenceBreak; } @@ -1815,7 +1831,6 @@ public EntranceSection(Game game, LocationID iD) _standardItemProvided = _game.Items[ItemType.IcePalaceAccess]; _invertedItemProvided = _game.Items[ItemType.IcePalaceAccess]; _standardRegion = _game.Regions[RegionID.LightWorld]; - _invertedRegion = _game.Regions[RegionID.DarkWorldSouth]; GetAccessibility = () => { @@ -1835,7 +1850,9 @@ public EntranceSection(Game game, LocationID iD) if (_game.Mode.WorldState == WorldState.Inverted) { - if (_game.Items.Has(ItemType.Flippers)) + if ((_game.Regions[RegionID.DarkWorldSouth].Accessibility == AccessibilityLevel.Normal || + _game.Regions[RegionID.DarkWorldSouthEast].Accessibility == AccessibilityLevel.Normal) && + _game.Items.Has(ItemType.Flippers)) return AccessibilityLevel.Normal; if (_game.Items.Has(ItemType.Mirror)) @@ -1846,9 +1863,15 @@ public EntranceSection(Game game, LocationID iD) if (_game.Regions[RegionID.LightWorld].Accessibility == AccessibilityLevel.Normal && _game.Items.Has(ItemType.Flippers) && _game.Items.Has(ItemType.MoonPearl)) return AccessibilityLevel.Normal; + + if (_game.Regions[RegionID.LightWorld].Accessibility >= AccessibilityLevel.SequenceBreak && + _game.Items.Has(ItemType.MoonPearl)) + return AccessibilityLevel.SequenceBreak; } - return AccessibilityLevel.SequenceBreak; + if (_game.Regions[RegionID.DarkWorldSouth].Accessibility >= AccessibilityLevel.SequenceBreak || + _game.Regions[RegionID.DarkWorldSouthEast].Accessibility >= AccessibilityLevel.SequenceBreak) + return AccessibilityLevel.SequenceBreak; } return AccessibilityLevel.None; @@ -2454,7 +2477,6 @@ public EntranceSection(Game game, LocationID iD) _standardItemProvided = _game.Items[ItemType.TurtleRockSafetyDoorAccess]; _invertedItemProvided = _game.Items[ItemType.TurtleRockSafetyDoorAccess]; _standardRegion = _game.Regions[RegionID.DarkDeathMountainTop]; - _invertedRegion = _game.Regions[RegionID.DarkWorldSouth]; GetAccessibility = () => { @@ -2499,6 +2521,17 @@ public EntranceSection(Game game, LocationID iD) itemReqs.Add(_game.Items[ItemType.Mirror]); + break; + case LocationID.LinksHouseEntrance: + + Name = "Link's House"; + _standardItemProvided = _game.Items[ItemType.LightWorldAccess]; + _invertedItemProvided = _game.Items[ItemType.LightWorldAccess]; + _standardRegion = _game.Regions[RegionID.LightWorld]; + _invertedRegion = _game.Regions[RegionID.LightWorld]; + + GetAccessibility = () => { return AccessibilityLevel.Normal; }; + break; } diff --git a/OpenTracker.Models/Enums/ItemType.cs b/OpenTracker.Models/Enums/ItemType.cs index 89d17e21..52fa3f07 100644 --- a/OpenTracker.Models/Enums/ItemType.cs +++ b/OpenTracker.Models/Enums/ItemType.cs @@ -44,6 +44,7 @@ public enum ItemType Sword, Shield, Mail, + Aga2, GreenPendant, Pendant, Crystal, diff --git a/OpenTracker.Models/Enums/LocationID.cs b/OpenTracker.Models/Enums/LocationID.cs index cba79b3d..03423e3b 100644 --- a/OpenTracker.Models/Enums/LocationID.cs +++ b/OpenTracker.Models/Enums/LocationID.cs @@ -193,6 +193,7 @@ public enum LocationID TRLedgeLeft, TRLedgeRight, TRSafetyDoor, - HookshotCaveTop + HookshotCaveTop, + LinksHouseEntrance } } diff --git a/OpenTracker.Models/ItemSection.cs b/OpenTracker.Models/ItemSection.cs index 37858bb4..b2c68045 100644 --- a/OpenTracker.Models/ItemSection.cs +++ b/OpenTracker.Models/ItemSection.cs @@ -623,7 +623,7 @@ public ItemSection(Game game, Location location, int index = 0) break; case LocationID.HauntedGrove: - _baseTotal = 2; + _baseTotal = 1; Name = "Stumpy"; _standardRegion = _game.Regions[RegionID.DarkWorldSouth]; _invertedRegion = _game.Regions[RegionID.DarkWorldSouth]; diff --git a/OpenTracker.Models/Location.cs b/OpenTracker.Models/Location.cs index 11970007..bd842358 100644 --- a/OpenTracker.Models/Location.cs +++ b/OpenTracker.Models/Location.cs @@ -143,7 +143,8 @@ public Location(Game game, LocationID iD) MapLocations.Add(new MapLocation(this, MapID.DarkWorld, 1097, 1366, new Mode() { - WorldState = WorldState.Inverted + WorldState = WorldState.Inverted, + EntranceShuffle = false })); itemSections = 1; break; @@ -183,7 +184,10 @@ public Location(Game game, LocationID iD) case LocationID.BombosTablet: Name = "Bombos Tablet"; MapLocations.Add(new MapLocation(this, MapID.LightWorld, 440, 1845, new Mode())); - MapLocations.Add(new MapLocation(this, MapID.DarkWorld, 440, 1845, new Mode())); + MapLocations.Add(new MapLocation(this, MapID.DarkWorld, 440, 1845, new Mode() + { + WorldState = WorldState.StandardOpen + })); itemSections = 1; break; case LocationID.SouthOfGrove: @@ -753,6 +757,7 @@ public Location(Game game, LocationID iD) EntranceShuffle = true })); itemSections = 1; + BossSection = new BossSection(game, iD); break; case LocationID.LumberjackHouse: Name = "Lumber House"; @@ -1362,13 +1367,6 @@ public Location(Game game, LocationID iD) MapLocations.Add(new MapLocation(this, MapID.DarkWorld, 1098, 1382, new Mode() { - WorldState = WorldState.StandardOpen, - EntranceShuffle = true - })); - MapLocations.Add(new MapLocation(this, MapID.LightWorld, 1098, 1382, - new Mode() - { - WorldState = WorldState.Inverted, EntranceShuffle = true })); entranceSection = true; @@ -1447,9 +1445,16 @@ public Location(Game game, LocationID iD) break; case LocationID.GanonHole: Name = "Ganon Hole"; + MapLocations.Add(new MapLocation(this, MapID.LightWorld, 902, 862, + new Mode() + { + WorldState = WorldState.Inverted, + EntranceShuffle = true + })); MapLocations.Add(new MapLocation(this, MapID.DarkWorld, 1000, 820, new Mode() { + WorldState = WorldState.StandardOpen, EntranceShuffle = true })); entranceSection = true; @@ -1868,6 +1873,16 @@ public Location(Game game, LocationID iD) })); entranceSection = true; break; + case LocationID.LinksHouseEntrance: + Name = "Link's House"; + MapLocations.Add(new MapLocation(this, MapID.LightWorld, 1098, 1382, + new Mode() + { + WorldState = WorldState.Inverted, + EntranceShuffle = true + })); + entranceSection = true; + break; } for (int i = 0; i < itemSections; i++) diff --git a/OpenTracker.Models/Region.cs b/OpenTracker.Models/Region.cs index 61206258..d779b331 100644 --- a/OpenTracker.Models/Region.cs +++ b/OpenTracker.Models/Region.cs @@ -210,10 +210,6 @@ public Region(Game game, RegionID iD) // Access via Hammer House exit if (_game.Items.Has(ItemType.HammerHouseAccess) && _game.Items.Has(ItemType.Hammer)) return AccessibilityLevel.Normal; - - // Access via South Dark World by lifting rock near Jeremiah - if (_game.Items.Has(ItemType.Gloves, 2)) - return AccessibilityLevel.Normal; } // Default to no access @@ -236,18 +232,23 @@ public Region(Game game, RegionID iD) // Inverted mode if (_game.Mode.WorldState == WorldState.Inverted) { - AccessibilityLevel darkWorldWitch = AccessibilityLevel.None; + AccessibilityLevel dWSouth = AccessibilityLevel.None; + AccessibilityLevel dWWitch = AccessibilityLevel.None; AccessibilityLevel lightWorld = AccessibilityLevel.None; + // Access via South Dark World by mitts + if (_game.Items.Has(ItemType.Gloves, 2) && !excludedRegions.Contains(RegionID.DarkWorldSouth)) + dWSouth = _game.Regions[RegionID.DarkWorldSouth].GetAccessibility(newExcludedRegions); + // Access via Dark World Witch area by hookshot if (_game.Items.Has(ItemType.Hookshot) && !excludedRegions.Contains(RegionID.DarkWorldWitchArea)) - darkWorldWitch = _game.Regions[RegionID.DarkWorldWitchArea].GetAccessibility(newExcludedRegions); + dWWitch = _game.Regions[RegionID.DarkWorldWitchArea].GetAccessibility(newExcludedRegions); // Access via Light World by mirror if (_game.Items.Has(ItemType.Mirror) && !excludedRegions.Contains(RegionID.LightWorld)) lightWorld = _game.Regions[RegionID.LightWorld].GetAccessibility(newExcludedRegions); - return (AccessibilityLevel)Math.Max((byte)darkWorldWitch, (byte)lightWorld); + return (AccessibilityLevel)Math.Max(Math.Max((byte)dWSouth, (byte)dWWitch), (byte)lightWorld); } // Default to no access @@ -263,6 +264,7 @@ public Region(Game game, RegionID iD) itemReqs.Add(_game.Items[ItemType.Hookshot]); itemReqs.Add(_game.Items[ItemType.Mirror]); + _observedRegions.Add(RegionID.DarkWorldSouth); _observedRegions.Add(RegionID.DarkWorldWitchArea); _observedRegions.Add(RegionID.LightWorld); @@ -286,7 +288,11 @@ public Region(Game game, RegionID iD) // Inverted mode if (_game.Mode.WorldState == WorldState.Inverted) - return AccessibilityLevel.Normal; + { + // Access is provided from the start in non-entrance shuffle + if (!_game.Mode.EntranceShuffle.Value) + return AccessibilityLevel.Normal; + } // Default to no access return AccessibilityLevel.None; @@ -314,6 +320,28 @@ public Region(Game game, RegionID iD) return (AccessibilityLevel)Math.Max((byte)darkWorldWest, (byte)darkWorldEast); } + // Inverted mode + if (_game.Mode.WorldState == WorldState.Inverted) + { + AccessibilityLevel dWWest = AccessibilityLevel.None; + AccessibilityLevel dWEast = AccessibilityLevel.None; + AccessibilityLevel lightWorld = AccessibilityLevel.None; + + // Access via West Dark World + if (!excludedRegions.Contains(RegionID.DarkWorldWest)) + dWWest = _game.Regions[RegionID.DarkWorldWest].GetAccessibility(newExcludedRegions); + + // Access via East Dark World by hammer + if (_game.Items.Has(ItemType.Hammer) && !excludedRegions.Contains(RegionID.DarkWorldEast)) + dWEast = _game.Regions[RegionID.DarkWorldEast].GetAccessibility(newExcludedRegions); + + // Access via Light World by mirror + if (_game.Items.Has(ItemType.Mirror) && !excludedRegions.Contains(RegionID.LightWorld)) + lightWorld = _game.Regions[RegionID.LightWorld].GetAccessibility(newExcludedRegions); + + return (AccessibilityLevel)Math.Max(Math.Max((byte)dWWest, (byte)dWEast), (byte)lightWorld); + } + // Default to no access return AccessibilityLevel.None; }; @@ -322,9 +350,11 @@ public Region(Game game, RegionID iD) itemReqs.Add(_game.Items[ItemType.MoonPearl]); itemReqs.Add(_game.Items[ItemType.Hammer]); itemReqs.Add(_game.Items[ItemType.Gloves]); + itemReqs.Add(_game.Items[ItemType.Mirror]); _observedRegions.Add(RegionID.DarkWorldWest); _observedRegions.Add(RegionID.DarkWorldEast); + _observedRegions.Add(RegionID.LightWorld); break; case RegionID.DarkWorldEast: @@ -347,17 +377,6 @@ public Region(Game game, RegionID iD) return AccessibilityLevel.Normal; } - // Inverted mode - if (_game.Mode.WorldState == WorldState.Inverted) - { - // Access via South Dark World by hammer or flippers - if (_game.Items.Has(ItemType.Hammer) || _game.Items.Has(ItemType.Flippers)) - return AccessibilityLevel.Normal; - - // Always available by fake flippers - return AccessibilityLevel.SequenceBreak; - } - // Default to no access return AccessibilityLevel.None; }; @@ -412,18 +431,30 @@ public Region(Game game, RegionID iD) // Inverted mode if (_game.Mode.WorldState == WorldState.Inverted) { - AccessibilityLevel darkWorldWitch = AccessibilityLevel.None; + AccessibilityLevel dWSouth = AccessibilityLevel.None; + AccessibilityLevel dWWitch = AccessibilityLevel.None; AccessibilityLevel lightWorld = AccessibilityLevel.None; - // Access via Dark World Witch area by gloves - if (_game.Items.Has(ItemType.Gloves) && !excludedRegions.Contains(RegionID.DarkWorldWitchArea)) - darkWorldWitch = _game.Regions[RegionID.DarkWorldWitchArea].GetAccessibility(newExcludedRegions); + // Access via South Dark World by hammer, flippers, or fake flippers sequence break + if (!excludedRegions.Contains(RegionID.DarkWorldSouth)) + { + if (_game.Items.Has(ItemType.Hammer) || _game.Items.Has(ItemType.Flippers)) + dWSouth = _game.Regions[RegionID.DarkWorldSouth].GetAccessibility(newExcludedRegions); + else + dWSouth = (AccessibilityLevel)Math.Min((byte)AccessibilityLevel.SequenceBreak, + (byte)_game.Regions[RegionID.DarkWorldSouth].GetAccessibility(newExcludedRegions)); + } + + // Access via Dark World Witch area by hammer or gloves + if ((_game.Items.Has(ItemType.Gloves) || _game.Items.Has(ItemType.Hammer)) + && !excludedRegions.Contains(RegionID.DarkWorldWitchArea)) + dWWitch = _game.Regions[RegionID.DarkWorldWitchArea].GetAccessibility(newExcludedRegions); // Access via Light World by mirror if (_game.Items.Has(ItemType.Mirror) && !excludedRegions.Contains(RegionID.LightWorld)) lightWorld = _game.Regions[RegionID.LightWorld].GetAccessibility(newExcludedRegions); - return (AccessibilityLevel)Math.Max((byte)darkWorldWitch, (byte)lightWorld); + return (AccessibilityLevel)Math.Max(Math.Max((byte)dWSouth, (byte)dWWitch), (byte)lightWorld); } // Default to no access @@ -452,17 +483,6 @@ public Region(Game game, RegionID iD) if (_game.Items.Has(ItemType.DarkWorldSouthEastAccess)) return AccessibilityLevel.Normal; - // Inverted mode - if (_game.Mode.WorldState == WorldState.Inverted) - { - // Access via Dark World South by flippers - if (_game.Items.Has(ItemType.Flippers)) - return AccessibilityLevel.Normal; - - // Always available by fake flippers - return AccessibilityLevel.SequenceBreak; - } - // Default to no access return AccessibilityLevel.None; }; @@ -503,10 +523,38 @@ public Region(Game game, RegionID iD) return (AccessibilityLevel)Math.Max((byte)darkWorldSouth, (byte)darkWorldEast); } + // Inverted mode if (_game.Mode.WorldState == WorldState.Inverted) { + AccessibilityLevel dWSouth = AccessibilityLevel.None; + AccessibilityLevel dWEast = AccessibilityLevel.None; + AccessibilityLevel lightWorld = AccessibilityLevel.None; + + // Access via South Dark World by flippers or fake flippers sequence break + if (!excludedRegions.Contains(RegionID.DarkWorldSouth)) + { + if (_game.Items.Has(ItemType.Flippers)) + dWSouth = _game.Regions[RegionID.DarkWorldSouth].GetAccessibility(newExcludedRegions); + else + dWSouth = (AccessibilityLevel)Math.Min((byte)AccessibilityLevel.SequenceBreak, + (byte)_game.Regions[RegionID.DarkWorldSouth].GetAccessibility(newExcludedRegions)); + } + + // Access via East Dark World by flippers or fake flippers sequence break + if (!excludedRegions.Contains(RegionID.DarkWorldEast)) + { + if (_game.Items.Has(ItemType.Flippers)) + dWEast = _game.Regions[RegionID.DarkWorldEast].GetAccessibility(newExcludedRegions); + else + dWEast = (AccessibilityLevel)Math.Min((byte)AccessibilityLevel.SequenceBreak, + (byte)_game.Regions[RegionID.DarkWorldEast].GetAccessibility(newExcludedRegions)); + } + + // Access via Light World by mirror if (_game.Items.Has(ItemType.Mirror) && !excludedRegions.Contains(RegionID.LightWorld)) - return _game.Regions[RegionID.LightWorld].GetAccessibility(newExcludedRegions); + lightWorld = _game.Regions[RegionID.LightWorld].GetAccessibility(newExcludedRegions); + + return (AccessibilityLevel)Math.Max(Math.Max((byte)dWSouth, (byte)dWEast), (byte)lightWorld); } // Default to no access @@ -531,13 +579,6 @@ public Region(Game game, RegionID iD) if (_game.Items.Has(ItemType.DarkWorldWitchAreaAccess)) return AccessibilityLevel.Normal; - // Inverted mode - if (_game.Mode.WorldState == WorldState.Inverted) - { - // Fake Flippers - return AccessibilityLevel.SequenceBreak; - } - // Default to no access return AccessibilityLevel.None; }; @@ -586,7 +627,7 @@ public Region(Game game, RegionID iD) AccessibilityLevel darkWorldWest = AccessibilityLevel.None; AccessibilityLevel lightWorld = AccessibilityLevel.None; - // Access via South Dark World by gloves, hammer, or flippers + // Access via East Dark World by gloves, hammer, flippers, or fake flippers sequence break if (!excludedRegions.Contains(RegionID.DarkWorldEast)) { if (_game.Items.Has(ItemType.Gloves) || _game.Items.Has(ItemType.Hammer) || @@ -630,7 +671,7 @@ public Region(Game game, RegionID iD) itemReqs.Add(_game.Items[ItemType.Flippers]); itemReqs.Add(_game.Items[ItemType.Mirror]); - _observedRegions.Add(RegionID.DarkWorldSouth); + _observedRegions.Add(RegionID.DarkWorldEast); _observedRegions.Add(RegionID.DarkWorldWest); _observedRegions.Add(RegionID.LightWorld); diff --git a/OpenTracker.Setup/OpenTracker.Setup.vdproj b/OpenTracker.Setup/OpenTracker.Setup.vdproj index 9872d0d4..aca670aa 100644 --- a/OpenTracker.Setup/OpenTracker.Setup.vdproj +++ b/OpenTracker.Setup/OpenTracker.Setup.vdproj @@ -25,6 +25,18 @@ "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } + "Entry" + { + "MsmKey" = "8:_D4C025E52F6D4B0CBD39712608FCF0CC" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F982271944A740028BEF1707BB09E7DB" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } } "Configurations" { @@ -122,6 +134,46 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D4C025E52F6D4B0CBD39712608FCF0CC" + { + "SourcePath" = "8:..\\OpenTracker\\bin\\Release\\netcoreapp3.1\\runtimes\\win7-x64\\native\\lzma.dll" + "TargetName" = "8:lzma.dll" + "Tag" = "8:" + "Folder" = "8:_C85AC8B5F1374419BA0D2192D2D360D5" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F982271944A740028BEF1707BB09E7DB" + { + "SourcePath" = "8:..\\OpenTracker\\bin\\Release\\netcoreapp3.1\\OpenTracker.deps.json" + "TargetName" = "8:OpenTracker.deps.json" + "Tag" = "8:" + "Folder" = "8:_B21EA2C01C014AC99A33B72F50C26B5D" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } } "FileType" { @@ -171,6 +223,39 @@ "Property" = "8:TARGETDIR" "Folders" { + "{9EF0B969-E518-4E46-987F-47570745A589}:_E06B3B2863E24E9AB0B913149B142886" + { + "Name" = "8:runtimes" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_27A98A05854B4037BDDFE4E3006B586B" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_FEA8C09976974DABAA39152C6D21E161" + { + "Name" = "8:win7-x64" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_D00F0A072D36458AB48748027DE43609" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_C85AC8B5F1374419BA0D2192D2D360D5" + { + "Name" = "8:native" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_69F8788BF4EC4D4C8AF5D2DDD45C10A0" + "Folders" + { + } + } + } + } + } + } } } } @@ -189,15 +274,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:OpenTracker" - "ProductCode" = "8:{3C3B2E16-BC74-4A4E-9FCD-A4A1A8B88985}" - "PackageCode" = "8:{5668E037-170A-4223-BEAA-D0C632C636A3}" + "ProductCode" = "8:{A3C83B98-5A66-4E86-A455-29CC361E56C5}" + "PackageCode" = "8:{26F4FDDD-0B2E-4218-BA21-CB9BCBA965C8}" "UpgradeCode" = "8:{C98C2121-B4C5-473A-9B86-5407FEFFE8F1}" "AspNetVersion" = "8:2.0.50727.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:TRUE" - "ProductVersion" = "8:0.6.1" + "ProductVersion" = "8:0.6.2" "Manufacturer" = "8:OpenTracker" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:" @@ -739,7 +824,7 @@ { "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_8BEB0D6860DB4F80B56A45FAD1BDE151" { - "SourcePath" = "8:..\\OpenTracker\\obj\\Debug\\netcoreapp3.1\\OpenTracker.exe" + "SourcePath" = "8:..\\OpenTracker\\obj\\Release\\netcoreapp3.1\\OpenTracker.exe" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B21EA2C01C014AC99A33B72F50C26B5D" diff --git a/OpenTracker/OpenTracker.csproj b/OpenTracker/OpenTracker.csproj index 7f56db05..be857ee8 100644 --- a/OpenTracker/OpenTracker.csproj +++ b/OpenTracker/OpenTracker.csproj @@ -4,11 +4,11 @@ netcoreapp3.1 triforce.ico - 0.6.1 + 0.6.2 Tripp - 0.6.1.0 - 0.6.1.0 - osx-x64;linux-x64;win-x64;win-x86 + 0.6.2.0 + 0.6.2.0 + osx-x64;linux-x64;debian-x64;rhel-x64;win-x64;win-x86;win7-x64;win7-x86 diff --git a/OpenTracker/ViewModels/ItemControlVM.cs b/OpenTracker/ViewModels/ItemControlVM.cs index d5561b02..83eaed30 100644 --- a/OpenTracker/ViewModels/ItemControlVM.cs +++ b/OpenTracker/ViewModels/ItemControlVM.cs @@ -99,9 +99,15 @@ public void ChangeItem(bool rightClick = false) else { if (rightClick) - _undoRedoManager.Execute(new RemoveItem(_items[0])); + { + if (_items[0].Current > 0) + _undoRedoManager.Execute(new RemoveItem(_items[0])); + } else - _undoRedoManager.Execute(new AddItem(_items[0])); + { + if (_items[0].Current < _items[0].Maximum) + _undoRedoManager.Execute(new AddItem(_items[0])); + } } } } diff --git a/OpenTracker/ViewModels/SectionControlVM.cs b/OpenTracker/ViewModels/SectionControlVM.cs index 88c90c9d..3c1626c2 100644 --- a/OpenTracker/ViewModels/SectionControlVM.cs +++ b/OpenTracker/ViewModels/SectionControlVM.cs @@ -335,6 +335,8 @@ private void Update() if (bossSection.Prize == null) imageBaseString += "unknown"; + else if (bossSection.Prize.Type == ItemType.Aga2) + imageBaseString += "aga"; else imageBaseString += bossSection.Prize.Type.ToString().ToLower(); @@ -440,7 +442,9 @@ public void ChangeAvailable(bool rightClick = false) else { if (_section is EntranceSection || - _section.Accessibility >= AccessibilityLevel.SequenceBreak) + (_section is BossSection bossSection && + bossSection.Prize != null && bossSection.Prize.Type == ItemType.Aga2) && + _section.Accessibility >= AccessibilityLevel.SequenceBreak) { switch (_section) { diff --git a/OpenTracker/Views/ColorSelectDialog.xaml b/OpenTracker/Views/ColorSelectDialog.xaml index 894c820f..28ebab89 100644 --- a/OpenTracker/Views/ColorSelectDialog.xaml +++ b/OpenTracker/Views/ColorSelectDialog.xaml @@ -3,135 +3,139 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:view="clr-namespace:OpenTracker.Views;assembly=OpenTracker" - mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - SizeToContent="WidthAndHeight" CanResize="False" + mc:Ignorable="d" d:DesignWidth="420" d:DesignHeight="462" + SizeToContent="WidthAndHeight" CanResize="True" WindowStartupLocation="CenterOwner" x:Class="OpenTracker.Views.ColorSelectDialog" Icon="avares://OpenTracker/Assets/triforce.png" Title="OpenTracker - Color Select"> + Padding="5" MinWidth="420" MinHeight="462"> - + - + + + Grid.Column="0" Grid.Row="0" Height="20" Width="20" HorizontalAlignment="Left" + VerticalAlignment="Center" Margin="3,0,0,0" /> - + - - + - + - + HorizontalAlignment="Left" VerticalAlignment="Center" Margin="3,0,0,0" /> - + - - + - + - + HorizontalAlignment="Left" VerticalAlignment="Center" Margin="3,0,0,0" /> - + - - + - + - + HorizontalAlignment="Left" VerticalAlignment="Center" Margin="3,0,0,0" /> - + - - + - + - + Background="{Binding Path=AccessibilitySequenceBreakColor}" Grid.Column="0" + Grid.Row="8" Height="20" Width="20" HorizontalAlignment="Left" VerticalAlignment="Center" + Margin="3,0,0,0" /> - + - - + - + - + HorizontalAlignment="Left" VerticalAlignment="Center" Margin="3,0,0,0" /> - + - - + + + - + - +