Skip to content

Commit 68104ef

Browse files
committed
Fixes to Ascension Mode
1 parent d0ec338 commit 68104ef

5 files changed

Lines changed: 66 additions & 4 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using API.Utils;
2+
using DiskCardGame;
3+
using HarmonyLib;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Text;
7+
8+
namespace API.Patches
9+
{
10+
[HarmonyPatch(typeof(AscensionSaveData), "RollCurrentRunRegionOrder")]
11+
public class AscensionSaveData_RolLCurrentRunRegionOrder
12+
{
13+
public static void Postfix()
14+
{
15+
if (SaveManager.SaveFile.ascensionActive)
16+
{
17+
RunState.Run.regionTier = RegionUtils.GetRandomRegionFromTier(RunState.Run.regionOrder[0]);
18+
}
19+
}
20+
}
21+
}

Patches/MapGenerator_CreateNode.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,14 @@ public static void Postfix(ref NodeData __result, int y)
1616
{
1717
if (__result is CardBattleNodeData)
1818
{
19-
((CardBattleNodeData) __result).difficulty = RegionUtils.TrueTier() * 6 + (y + 1) / 3 - 1;
19+
if (SaveManager.SaveFile.ascensionActive)
20+
{
21+
((CardBattleNodeData) __result).difficulty = Array.IndexOf(RunState.Run.regionOrder, RegionUtils.TrueTier()) * 6 + (y + 1) / 3 - 1;
22+
}
23+
else
24+
{
25+
((CardBattleNodeData) __result).difficulty = RegionUtils.TrueTier() * 6 + (y + 1) / 3 - 1;
26+
}
2027
}
2128
}
2229
}

Patches/RegionProgression_Instance.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ public static void Prefix(ref RegionProgression ___instance)
7777
Plugin.Log.LogInfo($"Loaded {customEncounters.Count} custom encounters into new custom region {region.region.name}");
7878
}
7979
}
80+
81+
// The final tier is reserved for ascensionFinalRegion
82+
official.regions.Add(official.ascensionFinalRegion);
83+
8084
___instance = official;
8185
Plugin.Log.LogInfo($"Loaded {CustomRegion.regions.Count} new custom regions into data");
8286
}

Patches/RunState.cs

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using APIPlugin;
33
using DiskCardGame;
44
using HarmonyLib;
5+
using System;
56
using System.Collections.Generic;
67

78
namespace API.Patches
@@ -13,7 +14,10 @@ public class RunState_Initialize
1314
{
1415
public static void Postfix(ref RunState __instance)
1516
{
16-
__instance.regionTier = RegionUtils.GetRandomRegionFromTier(0);
17+
if (!SaveManager.SaveFile.ascensionActive)
18+
{
19+
__instance.regionTier = RegionUtils.GetRandomRegionFromTier(RunState.Run.regionOrder[0]);
20+
}
1721
}
1822
}
1923

@@ -24,10 +28,36 @@ public static bool Prefix(ref RunState __instance)
2428
{
2529
List<RegionData> original = RegionProgression.Instance.regions;
2630
int tier = RegionUtils.TrueTier();
27-
__instance.regionTier = RegionUtils.GetRandomRegionFromTier(tier);
31+
int progressionTier = Array.IndexOf(RunState.Run.regionOrder, tier);
32+
__instance.regionTier = RegionUtils.GetRandomRegionFromTier((progressionTier == -1 || progressionTier == RunState.Run.regionOrder.Length - 1) ? RunState.Run.regionOrder.Length : RunState.Run.regionOrder[progressionTier + 1]);
33+
if (__instance.regionTier == RunState.Run.regionOrder.Length)
34+
{
35+
if (SaveManager.SaveFile.ascensionActive)
36+
{
37+
__instance.regionTier = original.Count - 1;
38+
39+
}
40+
}
2841
__instance.map = MapGenerator.GenerateMap(RunState.CurrentMapRegion, 3, 13);
2942
__instance.currentNodeId = __instance.map.RootNode.id;
3043
return false;
3144
}
3245
}
46+
47+
[HarmonyPatch(typeof(RunState), "CurrentMapRegion", MethodType.Getter)]
48+
public class RunState_get_CurrentMapRegion
49+
{
50+
public static bool Prefix(ref RegionData __result)
51+
{
52+
if (SaveManager.SaveFile.IsPart3 || SaveManager.SaveFile.IsGrimora)
53+
{
54+
__result = ResourceBank.Get<RegionData>("Data/Map/Regions/!TEST_PART3");
55+
}
56+
else
57+
{
58+
__result = RegionProgression.Instance.regions[RunState.Run.regionTier];
59+
}
60+
return false;
61+
}
62+
}
3363
}

Utils/RegionUtils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public static int GetRandomRegionFromTier(int tier)
2020
if (regions.Count == 0)
2121
{
2222
Plugin.Log.LogError($"No regions have been defined for tier {tier}");
23-
return 3;
23+
return 0;
2424
}
2525
return regions[SeededRandom.Range(0, regions.Count, SaveManager.SaveFile.GetCurrentRandomSeed())];
2626
}

0 commit comments

Comments
 (0)