mirror of
https://github.com/TheJordanDev/PEAK-JordanMod.git
synced 2026-10-16 23:56:44 +02:00
0.1.5 | Added: OpenMesa
This commit is contained in:
@@ -22,4 +22,9 @@
|
|||||||
# v0.1.4 | Better Airport
|
# v0.1.4 | Better Airport
|
||||||
|
|
||||||
- Added BetterAirportModule
|
- Added BetterAirportModule
|
||||||
- BetterAirportModule adds patches to make the airport more enjoyable, such as increasing the conveyor belt speed and making the terminals position at the start.
|
- BetterAirportModule adds patches to make the airport more enjoyable, such as increasing the conveyor belt speed and making the terminals position at the start.
|
||||||
|
|
||||||
|
# v0.1.5 | Open Mesa
|
||||||
|
|
||||||
|
- Added OpenMesaModule and OpenMesaPatch
|
||||||
|
- OpenMesaPatch makes it so that the Mesa biome is open no matter the seed.
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
<!-- This is the display name of your mod. Example: BepInEx Template -->
|
<!-- This is the display name of your mod. Example: BepInEx Template -->
|
||||||
<AssemblyTitle>JordanMod</AssemblyTitle>
|
<AssemblyTitle>JordanMod</AssemblyTitle>
|
||||||
<!-- This is the version number of your mod. -->
|
<!-- This is the version number of your mod. -->
|
||||||
<Version>0.1.4</Version>
|
<Version>0.1.5</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
14
src/JordanMod/modules/open_mesa/OpenMesaModule.cs
Normal file
14
src/JordanMod/modules/open_mesa/OpenMesaModule.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace JordanMod.Modules.OpenMesa;
|
||||||
|
|
||||||
|
[Module(Enabled = true)]
|
||||||
|
class OpenMesaModule : Module
|
||||||
|
{
|
||||||
|
public override string ModuleName => "Open Mesa Module";
|
||||||
|
|
||||||
|
public override Type[] GetPatches()
|
||||||
|
{
|
||||||
|
return [typeof(OpenMesaPatch)];
|
||||||
|
}
|
||||||
|
}
|
||||||
58
src/JordanMod/patches/OpenMesaPatch.cs
Normal file
58
src/JordanMod/patches/OpenMesaPatch.cs
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
using System.Linq;
|
||||||
|
using HarmonyLib;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
using Zorro.Core;
|
||||||
|
|
||||||
|
namespace JordanMod.Modules.OpenMesa;
|
||||||
|
|
||||||
|
class OpenMesaPatch
|
||||||
|
{
|
||||||
|
[HarmonyPatch(typeof(RunManager), nameof(RunManager.StartRun))]
|
||||||
|
[HarmonyPostfix]
|
||||||
|
public static void PostFixStartRun(RunManager __instance)
|
||||||
|
{
|
||||||
|
int seed = SceneManager.GetActiveScene().path.GetHashCode();
|
||||||
|
System.Random prng = new(seed);
|
||||||
|
|
||||||
|
var desertRockSpawners = Object.FindObjectsByType<DesertRockSpawner>(FindObjectsInactive.Include, FindObjectsSortMode.None);
|
||||||
|
foreach (var spawner in desertRockSpawners)
|
||||||
|
{
|
||||||
|
spawner.GetRefs();
|
||||||
|
var entrance = spawner.enterences;
|
||||||
|
var inside = spawner.inside;
|
||||||
|
|
||||||
|
bool hasEntrance = entrance.Cast<Transform>()
|
||||||
|
.SelectMany(container => container.Cast<Transform>())
|
||||||
|
.Any(doorObject =>
|
||||||
|
spawner.enterenceObjects.Any(e => e.name == doorObject.name) &&
|
||||||
|
(!spawner.blockerObjects.Any(b => b.name == doorObject.name) ||
|
||||||
|
!doorObject.Cast<Transform>().Any(child => child.TryGetComponent<LODGroup>(out _)))
|
||||||
|
);
|
||||||
|
|
||||||
|
if (hasEntrance) continue;
|
||||||
|
|
||||||
|
var targetEntranceContainer = entrance.GetChild(prng.Next(0, entrance.childCount));
|
||||||
|
|
||||||
|
for (int i = targetEntranceContainer.childCount - 1; i >= 0; i--)
|
||||||
|
Object.DestroyImmediate(targetEntranceContainer.GetChild(i).gameObject);
|
||||||
|
|
||||||
|
var prefab = spawner.enterenceObjects[prng.Next(0, spawner.enterenceObjects.Length)];
|
||||||
|
HelperFunctions.InstantiatePrefab(prefab, targetEntranceContainer.position, targetEntranceContainer.rotation, targetEntranceContainer)
|
||||||
|
.transform.localScale = Vector3.one * 2f;
|
||||||
|
|
||||||
|
inside.position = new Vector3(targetEntranceContainer.position.x, inside.position.y, targetEntranceContainer.position.z);
|
||||||
|
|
||||||
|
var mazeTransform = inside.FindChildRecursive("Maze");
|
||||||
|
if (mazeTransform != null)
|
||||||
|
{
|
||||||
|
// Disable Maze itself
|
||||||
|
mazeTransform.gameObject.SetActive(false);
|
||||||
|
mazeTransform.Find("Rocks")?.gameObject.SetActive(false);
|
||||||
|
mazeTransform.Find("Roof")?.gameObject.SetActive(false);
|
||||||
|
mazeTransform.Find("Floor")?.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user