mirror of
https://github.com/soarqin/DSP_Mods.git
synced 2025-12-08 20:53:28 +08:00
CheatEnabler v2.3.30
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
<details>
|
||||
<summary>Read me in English</summary>
|
||||
|
||||
## Changlog
|
||||
|
||||
* 2.3.30
|
||||
+ Fix a warning issue while `No condition build` or `No collision` is enabled.
|
||||
+ Optimized `Finish build immediately` for better performance.
|
||||
* 2.3.29
|
||||
+ Fix compatibility with game update 0.10.32.25779
|
||||
* 2.3.28
|
||||
@@ -15,14 +21,10 @@
|
||||
+ New feature: `Enable warp without space warpers`
|
||||
+ New feature: `Wind Turbines do global power coverage`
|
||||
+ Fix an issue that `Complete Dyson Sphere Shells instantly` does not generate production records for solar sails.
|
||||
|
||||
<details>
|
||||
<summary>Older versions</summary>
|
||||
|
||||
* 2.3.24
|
||||
+ `Complete Dyson Sphere Shells instantly`: Fix a bug that may cause negative power in some cases
|
||||
* 2.3.23
|
||||
+ New feature: `Complete Dyson Sphere Shells instantly`
|
||||
+ New feature: `Complete Dyson Sphere Shells instantly`
|
||||
+ Fix a crash when config panel is opened before game is fully loaded
|
||||
* 2.3.22
|
||||
+ Fix `Pump Anywhere`
|
||||
@@ -146,8 +148,14 @@
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>中文读我</summary>
|
||||
|
||||
## 更新日志
|
||||
|
||||
* 2.3.30
|
||||
+ 修复了启用`无条件建造`或`无碰撞`时的警告问题
|
||||
+ 优化了`立即完成建造`的性能表现
|
||||
* 2.3.29
|
||||
+ 修复了与游戏更新0.10.32.25779的兼容性
|
||||
* 2.3.28
|
||||
@@ -163,10 +171,6 @@
|
||||
+ 新功能:`无需空间翘曲器即可曲速飞行`
|
||||
+ 新功能:`风力涡轮机供电覆盖全球`
|
||||
+ 修复了`立即完成戴森壳建造`未生成太阳帆生产记录的问题
|
||||
|
||||
<details>
|
||||
<summary>更早的版本</summary>
|
||||
|
||||
* 2.3.24
|
||||
+ `立即完成戴森壳建造`:修复了在某些情况下可能导致发电为负的问题
|
||||
* 2.3.23
|
||||
|
||||
@@ -106,6 +106,6 @@ public class CheatEnabler : BaseUnityPlugin
|
||||
private void Update()
|
||||
{
|
||||
if (VFInput.inputing) return;
|
||||
FactoryPatch.OnUpdate();
|
||||
FactoryPatch.OnInputUpdate();
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<BepInExPluginGuid>org.soardev.cheatenabler</BepInExPluginGuid>
|
||||
<Description>DSP MOD - CheatEnabler</Description>
|
||||
<Version>2.3.29</Version>
|
||||
<Version>2.3.30</Version>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<PackageId>CheatEnabler</PackageId>
|
||||
@@ -19,7 +19,7 @@
|
||||
<PackageReference Include="DysonSphereProgram.GameLibs" Version="*-r.*" />
|
||||
<PackageReference Include="UnityEngine.Modules" Version="2018.4.12" IncludeAssets="compile" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework.TrimEnd(`0123456789`))' == 'net'">
|
||||
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="all" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -37,7 +37,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
OverclockSilo.Enable(OverclockSiloEnabled.Value);
|
||||
Enable(true);
|
||||
}
|
||||
|
||||
|
||||
public static void Uninit()
|
||||
{
|
||||
Enable(false);
|
||||
@@ -48,7 +48,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
OverclockEjector.Enable(false);
|
||||
OverclockSilo.Enable(false);
|
||||
}
|
||||
|
||||
|
||||
[HarmonyTranspiler]
|
||||
[HarmonyPatch(typeof(DysonNode), nameof(DysonNode.OrderConstructCp))]
|
||||
private static IEnumerable<CodeInstruction> DysonNode_OrderConstructCp_Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
|
||||
@@ -88,7 +88,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
private static long _sailLifeTime;
|
||||
private static DysonSailCache[][] _sailsCache;
|
||||
private static int[] _sailsCacheLen, _sailsCacheCapacity;
|
||||
|
||||
|
||||
private struct DysonSailCache
|
||||
{
|
||||
public DysonSail Sail;
|
||||
@@ -136,7 +136,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
Array.Clear(_sailsCacheLen, 0, starCount);
|
||||
Array.Clear(_sailsCacheCapacity, 0, starCount);
|
||||
}
|
||||
|
||||
|
||||
private static void SetSailsCacheCapacity(int index, int capacity)
|
||||
{
|
||||
var newCache = new DysonSailCache[capacity];
|
||||
@@ -164,7 +164,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
UpdateSailLifeTime();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[HarmonyTranspiler]
|
||||
[HarmonyPatch(typeof(EjectorComponent), nameof(EjectorComponent.InternalUpdate))]
|
||||
private static IEnumerable<CodeInstruction> EjectorComponent_InternalUpdate_Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
|
||||
@@ -280,7 +280,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class SkipAbsorbPatch: PatchImpl<SkipAbsorbPatch>
|
||||
{
|
||||
protected override void OnEnable()
|
||||
@@ -319,12 +319,12 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
new CodeInstruction(OpCodes.Ldc_I4_1),
|
||||
new CodeInstruction(OpCodes.Add),
|
||||
new CodeInstruction(OpCodes.Stind_I4),
|
||||
|
||||
|
||||
// this.RemoveSolarSail(index);
|
||||
new CodeInstruction(OpCodes.Ldarg_0).WithLabels(label1),
|
||||
new CodeInstruction(OpCodes.Ldloc_1),
|
||||
new CodeInstruction(OpCodes.Call, AccessTools.Method(typeof(DysonSwarm), nameof(DysonSwarm.RemoveSolarSail))),
|
||||
|
||||
|
||||
// return false;
|
||||
new CodeInstruction(OpCodes.Ldc_I4_1),
|
||||
new CodeInstruction(OpCodes.Ret)
|
||||
@@ -332,7 +332,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
return matcher.InstructionEnumeration();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class QuickAbsorbPatch: PatchImpl<QuickAbsorbPatch>
|
||||
{
|
||||
protected override void OnEnable()
|
||||
@@ -363,7 +363,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
/* Insert a RETURN before old absorption functions */
|
||||
return matcher.InstructionEnumeration();
|
||||
}
|
||||
|
||||
|
||||
private static void DoAbsorb(DysonSphereLayer layer, long gameTick)
|
||||
{
|
||||
var nodeCount = layer.nodeCursor - 1;
|
||||
@@ -383,7 +383,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class EjectAnywayPatch: PatchImpl<EjectAnywayPatch>
|
||||
{
|
||||
[HarmonyTranspiler]
|
||||
|
||||
@@ -122,7 +122,7 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
|
||||
_beltIds ??= [..LDB.items.dataArray.Where(i => i.prefabDesc.isBelt).Select(i => i.ID)];
|
||||
}
|
||||
|
||||
public static void OnUpdate()
|
||||
public static void OnInputUpdate()
|
||||
{
|
||||
if (_noConditionKey.keyValue)
|
||||
{
|
||||
@@ -154,43 +154,32 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
|
||||
|
||||
public static void ArrivePlanet(PlanetFactory factory)
|
||||
{
|
||||
if (factory.prebuildCount <= 0) return;
|
||||
var imm = ImmediateEnabled.Value;
|
||||
var architect = ArchitectModeEnabled.Value;
|
||||
if ((!imm && !architect) || GameMain.gameScenario == null) return;
|
||||
var prebuilds = factory.prebuildPool;
|
||||
var anyBelt = false;
|
||||
if (imm)
|
||||
{
|
||||
var anyBelt = false;
|
||||
var anyBuilt = false;
|
||||
factory.BeginFlattenTerrain();
|
||||
factory.cargoTraffic._batch_buffer_no_refresh = true;
|
||||
}
|
||||
for (var i = factory.prebuildCursor - 1; i > 0; i--)
|
||||
{
|
||||
if (prebuilds[i].id != i) continue;
|
||||
if (prebuilds[i].itemRequired > 0)
|
||||
PlanetFactory.batchBuild = true;
|
||||
for (var i = factory.prebuildCursor - 1; i > 0; i--)
|
||||
{
|
||||
if (!architect) continue;
|
||||
prebuilds[i].itemRequired = 0;
|
||||
if (imm)
|
||||
ref var pb = ref prebuilds[i];
|
||||
if (pb.id != i || pb.isDestroyed) continue;
|
||||
if (pb.itemRequired > 0)
|
||||
{
|
||||
anyBelt = anyBelt || _beltIds.Contains(prebuilds[i].protoId);
|
||||
factory.BuildFinally(GameMain.mainPlayer, i, false);
|
||||
if (!architect) continue;
|
||||
pb.itemRequired = 0;
|
||||
}
|
||||
else
|
||||
factory.AlterPrebuildModelState(i);
|
||||
anyBelt = anyBelt || _beltIds.Contains(pb.protoId);
|
||||
factory.BuildFinally(GameMain.mainPlayer, i, false);
|
||||
anyBuilt = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (imm)
|
||||
{
|
||||
anyBelt = anyBelt || _beltIds.Contains(prebuilds[i].protoId);
|
||||
factory.BuildFinally(GameMain.mainPlayer, i, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (imm)
|
||||
{
|
||||
PlanetFactory.batchBuild = false;
|
||||
if (anyBelt)
|
||||
{
|
||||
factory.cargoTraffic.RefreshBeltBatchesBuffers();
|
||||
@@ -198,6 +187,21 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
|
||||
}
|
||||
factory.cargoTraffic._batch_buffer_no_refresh = false;
|
||||
factory.EndFlattenTerrain();
|
||||
if (anyBuilt)
|
||||
{
|
||||
factory.planet.physics?.raycastLogic?.NotifyBatchObjectRemove();
|
||||
factory.planet.audio?.SetPlanetAudioDirty();
|
||||
}
|
||||
}
|
||||
else if (architect)
|
||||
{
|
||||
for (var i = factory.prebuildCursor - 1; i > 0; i--)
|
||||
{
|
||||
ref var pb = ref prebuilds[i];
|
||||
if (pb.id != i || pb.isDestroyed || pb.itemRequired == 0) continue;
|
||||
pb.itemRequired = 0;
|
||||
factory.AlterPrebuildModelState(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,6 +218,7 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
|
||||
|
||||
private static void GameMain_Begin_Postfix_For_ImmBuild()
|
||||
{
|
||||
if (DSPGame.IsMenuDemo) return;
|
||||
var factory = GameMain.mainPlayer?.factory;
|
||||
if (factory != null)
|
||||
{
|
||||
@@ -752,6 +757,7 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
|
||||
|
||||
private static void GameMain_Begin_Postfix()
|
||||
{
|
||||
if (DSPGame.IsMenuDemo) return;
|
||||
if (BeltSignalGeneratorEnabled.Value) InitSignalBelts();
|
||||
InitItemSources();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
# CheatEnabler
|
||||
|
||||
<details>
|
||||
<summary>Read me in English</summary>
|
||||
|
||||
#### Add various cheat functions while disabling abnormal determinants
|
||||
#### 添加一些作弊功能,同时屏蔽异常检测
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -63,6 +65,12 @@
|
||||
* [BepInEx](https://bepinex.dev/): Base modding framework
|
||||
* [Multifunction_mod](https://github.com/blacksnipebiu/Multifunction_mod): Some cheat functions
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>中文读我</summary>
|
||||
|
||||
#### 添加一些作弊功能,同时屏蔽异常检测
|
||||
|
||||
## 使用说明
|
||||
|
||||
@@ -123,3 +131,5 @@
|
||||
* [戴森球计划](https://store.steampowered.com/app/1366540): 伟大的游戏
|
||||
* [BepInEx](https://bepinex.dev/): 基础模组框架
|
||||
* [Multifunction_mod](https://github.com/blacksnipebiu/Multifunction_mod): 一些作弊功能
|
||||
|
||||
</details>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "CheatEnabler",
|
||||
"version_number": "2.3.29",
|
||||
"version_number": "2.3.30",
|
||||
"website_url": "https://github.com/soarqin/DSP_Mods/tree/master/CheatEnabler",
|
||||
"description": "Add various cheat functions while disabling abnormal determinants / 添加一些作弊功能,同时屏蔽异常检测",
|
||||
"dependencies": [
|
||||
|
||||
Reference in New Issue
Block a user