1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-08 21:33:28 +08:00

CheatEnabler v2.3.30

This commit is contained in:
2025-04-25 17:50:52 +08:00
parent 8362fcf546
commit 950bde3464
11 changed files with 103 additions and 83 deletions

View File

@@ -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,10 +21,6 @@
+ 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
@@ -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

View File

@@ -106,6 +106,6 @@ public class CheatEnabler : BaseUnityPlugin
private void Update()
{
if (VFInput.inputing) return;
FactoryPatch.OnUpdate();
FactoryPatch.OnInputUpdate();
}
}

View File

@@ -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>

View File

@@ -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();
}

View File

@@ -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>

View File

@@ -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": [

View File

@@ -205,45 +205,45 @@ public static class UIFunctions
var uiRoot = UIRoot.instance;
if (!uiRoot) return;
var rtrans = uiRoot.uiGame.starmap.transform as RectTransform;
var cornerComboBox = UI.MyCornerComboBox.CreateComboBox(135, 5, rtrans, true).WithItems("Show original name".Translate(), "Show distance".Translate(), "Show planet count".Translate(), "Show all information".Translate());
var cornerComboBox = UI.MyCornerComboBox.CreateComboBox(135, 0, rtrans, true).WithItems("Show original name".Translate(), "Show distance".Translate(), "Show planet count".Translate(), "Show all information".Translate());
cornerComboBox.SetIndex(Functions.UIFunctions.CornerComboBoxIndex);
cornerComboBox.OnSelChanged += (index) =>
{
Functions.UIFunctions.CornerComboBoxIndex = index;
};
_starmapFilterToggler = UI.MyCheckButton.CreateCheckButton(5, 5, rtrans, false, ">>").WithSize(24, 24);
_starmapFilterToggler = UI.MyCheckButton.CreateCheckButton(0, 0, rtrans, false, ">>").WithSize(24, 24);
MyCheckButton[] buttons = [
UI.MyCheckButton.CreateCheckButton(29, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Kimberlite
UI.MyCheckButton.CreateCheckButton(53, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Fractal Silicon
UI.MyCheckButton.CreateCheckButton(77, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Organic Crystal
UI.MyCheckButton.CreateCheckButton(101, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Grating Crystal
UI.MyCheckButton.CreateCheckButton(125, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Stalagmite Crystal
UI.MyCheckButton.CreateCheckButton(149, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Unipolar Magnet
UI.MyCheckButton.CreateCheckButton(173, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Crude Oil
UI.MyCheckButton.CreateCheckButton(197, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Fire Ice
UI.MyCheckButton.CreateCheckButton(221, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Sulfuric Acid
UI.MyCheckButton.CreateCheckButton(245, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Water
UI.MyCheckButton.CreateCheckButton(269, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Hydrogen
UI.MyCheckButton.CreateCheckButton(293, 5, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Deuterium
UI.MyCheckButton.CreateCheckButton(24, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Kimberlite
UI.MyCheckButton.CreateCheckButton(48, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Fractal Silicon
UI.MyCheckButton.CreateCheckButton(72, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Organic Crystal
UI.MyCheckButton.CreateCheckButton(96, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Grating Crystal
UI.MyCheckButton.CreateCheckButton(120, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Stalagmite Crystal
UI.MyCheckButton.CreateCheckButton(144, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Unipolar Magnet
UI.MyCheckButton.CreateCheckButton(168, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Crude Oil
UI.MyCheckButton.CreateCheckButton(192, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Fire Ice
UI.MyCheckButton.CreateCheckButton(216, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Sulfuric Acid
UI.MyCheckButton.CreateCheckButton(240, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Water
UI.MyCheckButton.CreateCheckButton(264, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Hydrogen
UI.MyCheckButton.CreateCheckButton(288, 0, rtrans, false).WithIcon().WithSize(24, 24).WithIconWidth(24), // Deuterium
UI.MyCheckButton.CreateCheckButton(29, 29, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 53, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 77, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 101, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 125, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 149, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 173, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 197, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 221, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 24, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 48, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 72, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 96, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 120, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 144, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 168, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 192, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 216, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 263, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 287, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 311, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 335, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 359, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(29, 383, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 258, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 282, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 306, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 330, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 354, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
UI.MyCheckButton.CreateCheckButton(24, 378, rtrans, false).WithIcon().WithSize(150, 24).WithIconWidth(24),
];
var allOresText = MyWindow.AddText(25, 243, rtrans, "All 6 Basic Ores".Translate(), 12);
var allOresText = MyWindow.AddText(20, 238, rtrans, "All 6 Basic Ores".Translate(), 12);
allOresText.gameObject.SetActive(false);
_starmapFilterToggler.OnChecked += UpdateButtons;
foreach (var button in buttons)

View File

@@ -261,6 +261,7 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
protected override void OnDisable()
{
GameLogic.OnGameEnd -= GameMain_End_Postfix;
if (_sunlight)
{
_sunlight.transform.localEulerAngles = new Vector3(0f, 180f);

View File

@@ -171,7 +171,6 @@ public static class LogisticsPatch
new CodeMatch(OpCodes.Ldlen),
new CodeMatch(OpCodes.Conv_I4)
);
UXAssist.Logger.LogDebug($"Patch ILS ship count: {matcher.Pos}");
matcher.Repeat(m => m.Advance(4).InsertAndAdvance(
new CodeInstruction(OpCodes.Ldsfld, AccessTools.Field(typeof(LogisticsPatch), nameof(AutoConfigILSShipCount))),
new CodeInstruction(OpCodes.Call, AccessTools.PropertyGetter(typeof(ConfigEntry<int>), nameof(ConfigEntry<int>.Value))),