diff --git a/ItemChanger/LocationNames.cs b/ItemChanger/LocationNames.cs index 260ac720..97d1f430 100644 --- a/ItemChanger/LocationNames.cs +++ b/ItemChanger/LocationNames.cs @@ -18,6 +18,8 @@ public static string[] ToArray() public const string Iselda = "Iselda"; public const string Salubra = "Salubra"; public const string Leg_Eater = "Leg_Eater"; + public const string Grubfather = "Grubfather"; + public const string Seer = "Seer"; public const string Lurien = "Lurien"; public const string Monomon = "Monomon"; public const string Herrah = "Herrah"; diff --git a/ItemChanger/Locations/SpecialLocations/ColosseumLocation.cs b/ItemChanger/Locations/SpecialLocations/ColosseumLocation.cs index 04ccf19d..7f579615 100644 --- a/ItemChanger/Locations/SpecialLocations/ColosseumLocation.cs +++ b/ItemChanger/Locations/SpecialLocations/ColosseumLocation.cs @@ -16,7 +16,6 @@ protected override void OnLoad() { base.OnLoad(); Events.AddFsmEdit(sceneName, new("Colosseum Manager", "Geo Pool"), ChangeColoEnd); - //Events.AddFsmEdit(sceneName, new("Colosseum Manager", "Battle Control"), SkipColoForTesting); Events.AddLanguageEdit(new("Prompts", GetTrialBoardConvo()), OnLanguageGet); } @@ -24,20 +23,9 @@ protected override void OnUnload() { base.OnUnload(); Events.RemoveFsmEdit(sceneName, new("Colosseum Manager", "Geo Pool"), ChangeColoEnd); - //Events.RemoveFsmEdit(sceneName, new("Colosseum Manager", "Battle Control"), SkipColoForTesting); Events.RemoveLanguageEdit(new("Prompts", GetTrialBoardConvo()), OnLanguageGet); } - /* - private void SkipColoForTesting(PlayMakerFSM fsm) - { - // For testing only! Skip to end after first wave. - FsmState wave1 = fsm.GetState("Wave 1"); - wave1.ClearTransitions(); - wave1.AddTransition("WAVE END", "End"); - } - */ - private void ChangeColoEnd(PlayMakerFSM fsm) { FsmState openGates = fsm.GetState("Open Gates"); @@ -89,7 +77,7 @@ private string GetTrialBoardConvo() private string GetTrialBoardHint(string itemText) { - StringBuilder sb = new StringBuilder(); + StringBuilder sb = new(); switch (sceneName) { default: diff --git a/ItemChanger/Locations/SpecialLocations/CostChestLocation.cs b/ItemChanger/Locations/SpecialLocations/CostChestLocation.cs new file mode 100644 index 00000000..6640346a --- /dev/null +++ b/ItemChanger/Locations/SpecialLocations/CostChestLocation.cs @@ -0,0 +1,32 @@ +using ItemChanger.Placements; + +namespace ItemChanger.Locations.SpecialLocations +{ + /// + /// Wrapper location to allow converting a ContainerLocation, PlaceableLocation pair to a CostChestPlacement. + /// + public class CostChestLocation : AbstractLocation + { + public ContainerLocation chestLocation; + public PlaceableLocation tabletLocation; + + public override AbstractPlacement Wrap() + { + return new CostChestPlacement(name) + { + chestLocation = chestLocation, + tabletLocation = tabletLocation, + }; + } + + protected override void OnLoad() + { + throw new NotImplementedException(); + } + + protected override void OnUnload() + { + throw new NotImplementedException(); + } + } +} diff --git a/ItemChanger/Locations/SpecialLocations/DivineLocation.cs b/ItemChanger/Locations/SpecialLocations/DivineLocation.cs index 280a7ee1..390d67f0 100644 --- a/ItemChanger/Locations/SpecialLocations/DivineLocation.cs +++ b/ItemChanger/Locations/SpecialLocations/DivineLocation.cs @@ -3,14 +3,12 @@ using ItemChanger.FsmStateActions; using ItemChanger.Internal; using ItemChanger.Util; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace ItemChanger.Locations.SpecialLocations { + /// + /// Location which replaces the shinies inside Divine's room. Each of the 3 shinies requires its own location with this implementation. + /// public class DivineLocation : ExistingFsmContainerLocation { public enum DivineShopSlot diff --git a/ItemChanger/Locations/SpecialLocations/DreamNailLocation.cs b/ItemChanger/Locations/SpecialLocations/DreamNailLocation.cs index 8d13541e..a7ee07a3 100644 --- a/ItemChanger/Locations/SpecialLocations/DreamNailLocation.cs +++ b/ItemChanger/Locations/SpecialLocations/DreamNailLocation.cs @@ -4,7 +4,7 @@ namespace ItemChanger.Locations.SpecialLocations { /// - /// ObjectLocation which places a shiny at the end of the Dream Nail sequence that triggers a scene change to the Seer's room. Expects that no other shinies are placed in the Dream Nail sequence. + /// ObjectLocation which makes a minor change to the Dream Nail sequence to prevent Unity error logs. /// public class DreamNailLocation : ObjectLocation { @@ -12,32 +12,17 @@ protected override void OnLoad() { base.OnLoad(); Events.AddFsmEdit(sceneName, new("Witch Control", "Control"), RemoveSetCollider); - //Events.AddFsmEdit(sceneName, new("Shiny Control"), EditShiny); } protected override void OnUnload() { base.OnUnload(); Events.RemoveFsmEdit(sceneName, new("Witch Control", "Control"), RemoveSetCollider); - //Events.RemoveFsmEdit(sceneName, new("Shiny Control"), EditShiny); } private void RemoveSetCollider(PlayMakerFSM fsm) { fsm.GetState("Convo Ready").RemoveActionsOfType(); // not important, but prevents null ref unity logs after destroying Moth NPC object } - - /* - * Moved to tag - private void EditShiny(PlayMakerFSM fsm) - { - fsm.FsmVariables.FindFsmBool("Exit Dream").Value = true; - fsm.GetState("Fade Pause").AddFirstAction(new Lambda(() => - { - PlayerData.instance.dreamReturnScene = "RestingGrounds_07"; - HeroController.instance.proxyFSM.FsmVariables.GetFsmBool("No Charms").Value = false; - })); - } - */ } } diff --git a/ItemChanger/Locations/SpecialLocations/GreyMournerLocation.cs b/ItemChanger/Locations/SpecialLocations/GreyMournerLocation.cs index fa413ae1..6413e095 100644 --- a/ItemChanger/Locations/SpecialLocations/GreyMournerLocation.cs +++ b/ItemChanger/Locations/SpecialLocations/GreyMournerLocation.cs @@ -1,5 +1,4 @@ using HutongGames.PlayMaker.Actions; -using ItemChanger.FsmStateActions; using ItemChanger.Extensions; namespace ItemChanger.Locations.SpecialLocations diff --git a/ItemChanger/Locations/SpecialLocations/GreyPrinceZoteLocation.cs b/ItemChanger/Locations/SpecialLocations/GreyPrinceZoteLocation.cs index 3b33b107..d3e45e1a 100644 --- a/ItemChanger/Locations/SpecialLocations/GreyPrinceZoteLocation.cs +++ b/ItemChanger/Locations/SpecialLocations/GreyPrinceZoteLocation.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ItemChanger.Locations.SpecialLocations +namespace ItemChanger.Locations.SpecialLocations { /// /// Boss Essence Location which supports a hint from reading Bretta's Diary. diff --git a/ItemChanger/Locations/SpecialLocations/QueenFragmentLocation.cs b/ItemChanger/Locations/SpecialLocations/QueenFragmentLocation.cs index 25109241..45045e85 100644 --- a/ItemChanger/Locations/SpecialLocations/QueenFragmentLocation.cs +++ b/ItemChanger/Locations/SpecialLocations/QueenFragmentLocation.cs @@ -4,6 +4,9 @@ namespace ItemChanger.Locations.SpecialLocations { + /// + /// ObjectLocation which modifies an additional shiny holder fsm related to the Queen Fragment. + /// public class QueenFragmentLocation : ObjectLocation { protected override void OnLoad() diff --git a/ItemChanger/Locations/SpecialLocations/TukDefendersCrestLocation.cs b/ItemChanger/Locations/SpecialLocations/TukDefendersCrestLocation.cs index 4f2bb679..29b561a5 100644 --- a/ItemChanger/Locations/SpecialLocations/TukDefendersCrestLocation.cs +++ b/ItemChanger/Locations/SpecialLocations/TukDefendersCrestLocation.cs @@ -4,6 +4,9 @@ namespace ItemChanger.Locations.SpecialLocations { + /// + /// AutoLocation which modifies Tuk to give items through a flung shiny when the player has a certain charm equipped (by default, Defender's Crest). + /// public class TukDefendersCrestLocation : AutoLocation { public int requiredCharmID = 10; diff --git a/ItemChanger/Modules/LeftCityChandelier.cs b/ItemChanger/Modules/LeftCityChandelier.cs index 56ba3cc8..e5ae93a3 100644 --- a/ItemChanger/Modules/LeftCityChandelier.cs +++ b/ItemChanger/Modules/LeftCityChandelier.cs @@ -2,6 +2,9 @@ namespace ItemChanger.Modules { + /// + /// Module which makes a chandelier in left City of Tears pogoable, restoring a skip that was removed when Ruins1_05 was split into two rooms in the Lifeblood update. + /// [DefaultModule] public class LeftCityChandelier : Module { diff --git a/ItemChanger/Modules/GrimmTroupeTentUnlock.cs b/ItemChanger/Modules/PreventGrimmTroupeLeave.cs similarity index 81% rename from ItemChanger/Modules/GrimmTroupeTentUnlock.cs rename to ItemChanger/Modules/PreventGrimmTroupeLeave.cs index 3d3090b5..ba63ff4b 100644 --- a/ItemChanger/Modules/GrimmTroupeTentUnlock.cs +++ b/ItemChanger/Modules/PreventGrimmTroupeLeave.cs @@ -1,14 +1,12 @@ -using HutongGames.PlayMaker.Actions; -using Modding; -using ItemChanger.Extensions; -using ItemChanger.FsmStateActions; +using Modding; namespace ItemChanger.Modules { /// /// Module which prevents the Grimm and Divine tents from leaving Dirtmouth. /// - public class GrimmTroupeTentUnlock : Module + [DefaultModule] + public class PreventGrimmTroupeLeave : Module { public override void Initialize() { diff --git a/ItemChanger/Modules/RightCityPlatform.cs b/ItemChanger/Modules/RightCityPlatform.cs index cef78e6d..aa6f9c1b 100644 --- a/ItemChanger/Modules/RightCityPlatform.cs +++ b/ItemChanger/Modules/RightCityPlatform.cs @@ -1,5 +1,8 @@ namespace ItemChanger.Modules { + /// + /// Module which adds a platform to Right City, replacing a Great Husk Sentry pogo that was removed when its patrol range was changed in the Lifeblood update. + /// [DefaultModule] public class RightCityPlatform : Module { diff --git a/ItemChanger/Modules/SplitSuperdash.cs b/ItemChanger/Modules/SplitSuperdash.cs index ae72c0f7..d1437c2a 100644 --- a/ItemChanger/Modules/SplitSuperdash.cs +++ b/ItemChanger/Modules/SplitSuperdash.cs @@ -4,6 +4,9 @@ namespace ItemChanger.Modules { + /// + /// Module which implements the split superdash custom skills. + /// public class SplitSuperdash : Module { public bool hasSuperdashLeft { get; set; } diff --git a/ItemChanger/Modules/SwimSkill.cs b/ItemChanger/Modules/SwimSkill.cs index 903e1029..1f7d7283 100644 --- a/ItemChanger/Modules/SwimSkill.cs +++ b/ItemChanger/Modules/SwimSkill.cs @@ -5,7 +5,7 @@ namespace ItemChanger.Modules { /// - /// Module which implements the split swim custom skill. + /// Module which implements the swim custom skill. /// public class SwimSkill : Module { diff --git a/ItemChanger/Resources/locations.json b/ItemChanger/Resources/locations.json index 8601f17d..c69b5607 100644 --- a/ItemChanger/Resources/locations.json +++ b/ItemChanger/Resources/locations.json @@ -67,6 +67,68 @@ "flingType": "DirectDeposit", "tags": null }, + "Grubfather": { + "$type": "ItemChanger.Locations.SpecialLocations.CostChestLocation, ItemChanger", + "chestLocation": { + "$type": "ItemChanger.Locations.CoordinateLocation, ItemChanger", + "x": 36.0, + "y": 4.0, + "elevation": 0.0, + "managed": false, + "forceShiny": false, + "name": "Grubfather", + "sceneName": "Crossroads_38", + "flingType": "Everywhere", + "tags": null + }, + "tabletLocation": { + "$type": "ItemChanger.Locations.CoordinateLocation, ItemChanger", + "x": 54.0, + "y": 4.0, + "elevation": 0.0, + "managed": false, + "forceShiny": false, + "name": "Grubfather", + "sceneName": "Crossroads_38", + "flingType": "Everywhere", + "tags": null + }, + "name": "Grubfather", + "sceneName": "Crossroads_38", + "flingType": "Everywhere", + "tags": null + }, + "Seer": { + "$type": "ItemChanger.Locations.SpecialLocations.CostChestLocation, ItemChanger", + "chestLocation": { + "$type": "ItemChanger.Locations.CoordinateLocation, ItemChanger", + "x": 33.0, + "y": 10.0, + "elevation": 0.0, + "managed": false, + "forceShiny": false, + "name": "Seer", + "sceneName": "RestingGrounds_07", + "flingType": "Everywhere", + "tags": null + }, + "tabletLocation": { + "$type": "ItemChanger.Locations.CoordinateLocation, ItemChanger", + "x": 42.0, + "y": 10.0, + "elevation": 0.0, + "managed": false, + "forceShiny": false, + "name": "Seer", + "sceneName": "RestingGrounds_07", + "flingType": "Everywhere", + "tags": null + }, + "name": "Seer", + "sceneName": "RestingGrounds_07", + "flingType": "Everywhere", + "tags": null + }, "Lurien": { "$type": "ItemChanger.Locations.SpecialLocations.DreamerLocation, ItemChanger", "previousScene": "Ruins2_Watcher_Room",