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",