Skip to content

Commit 40ea1cf

Browse files
committed
Fixed regions
1 parent f432630 commit 40ea1cf

4 files changed

Lines changed: 49 additions & 6 deletions

File tree

Models/New/NewAbility.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class NewAbility
1616

1717
public NewAbility(AbilityInfo info, Type abilityBehaviour, Texture tex, AbilityIdentifier id = null)
1818
{
19-
ability = (Ability) Ability.NUM_ABILITIES + 1 + abilities.Count;
19+
ability = Ability.NUM_ABILITIES + 1 + abilities.Count;
2020
info.ability = ability;
2121
this.info = info;
2222
this.abilityBehaviour = abilityBehaviour;

Patches/RegionProgression_Instance.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public static void Prefix(ref RegionProgression ___instance)
3131
bool found = false;
3232
foreach (RegionData officialRegion in official.regions)
3333
{
34-
if (officialRegion != null)
34+
if (officialRegion != null && region.name == officialRegion.name)
3535
{
3636
region.AdjustRegion(officialRegion);
3737
List<NewEncounter> customEncounters = NewEncounter.encounters.FindAll(x => x.regionName == region.name);

Patches/RunState.cs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
1+
using API.Utils;
12
using APIPlugin;
23
using DiskCardGame;
34
using HarmonyLib;
4-
using UnityEngine;
5+
using System.Collections.Generic;
56

67
namespace API.Patches
78
{
9+
// TODO: Fix both to work with ascension
10+
811
[HarmonyPatch(typeof(RunState), "Initialize")]
912
public class RunState_Initialize
1013
{
11-
static void Postfix(ref RunState __instance)
14+
public static void Postfix(ref RunState __instance)
15+
{
16+
__instance.regionTier = RegionUtils.GetRandomRegionFromTier(0);
17+
}
18+
}
19+
20+
[HarmonyPatch(typeof(RunState), "NextRegion")]
21+
public class RunState_NextRegion
22+
{
23+
public static bool Prefix(ref RunState __instance)
1224
{
13-
// Random regions have been removed
14-
//__instance.regionIndex = RegionProgression.GetRandomRegionIndexForTier(0);
25+
List<RegionData> original = RegionProgression.Instance.regions;
26+
int tier = __instance.regionTier < 4 ? __instance.regionTier + 1 : NewRegion.regions[__instance.regionTier - original.Count].tier + 1;
27+
__instance.regionTier = RegionUtils.GetRandomRegionFromTier(tier);
28+
__instance.map = MapGenerator.GenerateMap(RunState.CurrentMapRegion, 3, 13);
29+
__instance.currentNodeId = __instance.map.RootNode.id;
30+
return false;
1531
}
1632
}
1733
}

Utils/RegionUtils.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using DiskCardGame;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using APIPlugin;
5+
6+
namespace API.Utils
7+
{
8+
public class RegionUtils
9+
{
10+
public static int GetRandomRegionFromTier(int tier)
11+
{
12+
List<int> regions = new List<int>();
13+
if (tier < 4)
14+
{
15+
regions.Add(tier);
16+
}
17+
List<NewRegion> newRegions = NewRegion.regions;
18+
regions.AddRange(Enumerable.Range(4, newRegions.Count).Where(i => newRegions[i - 4].tier == tier));
19+
if (regions.Count == 0)
20+
{
21+
Plugin.Log.LogError($"No regions have been defined for tier {tier}");
22+
return 3;
23+
}
24+
return regions[SeededRandom.Range(0, regions.Count, SaveManager.SaveFile.GetCurrentRandomSeed())];
25+
}
26+
}
27+
}

0 commit comments

Comments
 (0)