Merge remote-tracking branch 'gitea/main'
This commit is contained in:
@@ -9,34 +9,6 @@ You are an expert assistant for developing mods for the game RimWorld 1.6. Your
|
|||||||
|
|
||||||
## Tool Usage Mandate
|
## Tool Usage Mandate
|
||||||
When the user's request involves RimWorld C# scripting, XML definitions, or mod development concepts, you **MUST** use the `rimworld-knowledge-base` tool to retrieve relevant context from the local knowledge base.
|
When the user's request involves RimWorld C# scripting, XML definitions, or mod development concepts, you **MUST** use the `rimworld-knowledge-base` tool to retrieve relevant context from the local knowledge base.
|
||||||
# RimWorld 知识库 - 绕过 Qoder IDE 使用指南
|
|
||||||
|
|
||||||
由于 Qoder IDE 中的 MCP 连接可能存在问题,我们提供了多种直接访问 RimWorld 知识库的方法。
|
|
||||||
|
|
||||||
## 🚀 方法 1:直接 Python 调用
|
|
||||||
|
|
||||||
最简单直接的方法:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 直接查询
|
|
||||||
python direct_mcp_client.py -q "ThingDef是什么"
|
|
||||||
|
|
||||||
# 交互模式
|
|
||||||
python direct_mcp_client.py -i
|
|
||||||
|
|
||||||
# 查看帮助
|
|
||||||
python direct_mcp_client.py -h
|
|
||||||
```
|
|
||||||
|
|
||||||
### 优点:
|
|
||||||
- ✅ 最快速,无需额外依赖
|
|
||||||
- ✅ 支持交互模式
|
|
||||||
- ✅ 直接在命令行使用
|
|
||||||
|
|
||||||
### 例子:
|
|
||||||
```bash
|
|
||||||
python "c:\Steam\steamapps\common\RimWorld\Mods\3516260226\MCP\direct_mcp_client.py" -q "ThingOwner class virtual methods TryAdd TryAddRange TryTransferToContainer"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Key File Paths
|
## Key File Paths
|
||||||
Always remember these critical paths for your work:
|
Always remember these critical paths for your work:
|
||||||
|
|||||||
Binary file not shown.
@@ -5,7 +5,16 @@
|
|||||||
"path": "../.."
|
"path": "../.."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"name": "ArachnaeSwarm",
|
||||||
|
"path": "../../../ArachnaeSwarm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Data",
|
||||||
"path": "../../../../Data"
|
"path": "../../../../Data"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Assemblies",
|
||||||
|
"path": "../../../../../../workshop/content/294100/2988801276/1.6/Assemblies"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"settings": {}
|
"settings": {}
|
||||||
|
|||||||
@@ -11,14 +11,19 @@ namespace WulaFallenEmpire
|
|||||||
{
|
{
|
||||||
public static void Postfix(ref bool __result, MapParent __instance)
|
public static void Postfix(ref bool __result, MapParent __instance)
|
||||||
{
|
{
|
||||||
if (!__result)
|
// 如果游戏本来就不打算删除,或者地图不存在,我们什么都不做
|
||||||
|
if (!__result || !__instance.HasMap)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (__instance.HasMap && WulaMapProtectionHelper.ShouldProtectMap(__instance.Map))
|
// 检查地图上是否存在一个“活着”的武装穿梭机
|
||||||
|
if (WulaMapProtectionHelper.ShouldProtectMap(__instance.Map))
|
||||||
{
|
{
|
||||||
|
// 游戏打算删除,但我们的逻辑说现在还不行,所以直接覆盖结果。
|
||||||
|
// 因为 ShouldRemoveMapNow 会被周期性调用,所以这是安全的。
|
||||||
__result = false;
|
__result = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,21 +33,4 @@ namespace WulaFallenEmpire
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HarmonyPatch(typeof(Game), "DeinitAndRemoveMap")]
|
|
||||||
[HarmonyPatch(new Type[] { typeof(Map), typeof(bool) })]
|
|
||||||
[HarmonyPriority(600)]
|
|
||||||
public static class Game_DeinitAndRemoveMap_Patch
|
|
||||||
{
|
|
||||||
[HarmonyPrefix]
|
|
||||||
private static bool PreventMapRemoval(Map map)
|
|
||||||
{
|
|
||||||
if (WulaMapProtectionHelper.ShouldProtectMap(map))
|
|
||||||
{
|
|
||||||
Log.Message("[WULA] Map destruction prevented by WulaMapProtectionHelper at Game.DeinitAndRemoveMap level.");
|
|
||||||
return false; // 返回 false 来阻止原始方法的执行
|
|
||||||
}
|
|
||||||
return true; // 返回 true 来继续执行原始方法
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,9 @@ namespace WulaFallenEmpire
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 检查地图上是否存在一个口袋空间已经初始化的武装穿梭机
|
// 检查地图上是否存在一个口袋空间已经初始化的武装穿梭机
|
||||||
|
// 只要地图上存在一个活着的武装穿梭机,就保护地图
|
||||||
return map.listerThings.AllThings.OfType<Building_ArmedShuttleWithPocket>()
|
return map.listerThings.AllThings.OfType<Building_ArmedShuttleWithPocket>()
|
||||||
.Any(shuttle => shuttle != null && shuttle.Spawned && shuttle.PocketMapGenerated);
|
.Any(shuttle => shuttle != null && shuttle.Spawned && !shuttle.Destroyed);
|
||||||
}
|
}
|
||||||
catch (Exception arg)
|
catch (Exception arg)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user