diff --git a/.gitignore b/.gitignore
index 93613dd2..80f58166 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,10 @@ Source/MCP/*.log
Source/MCP/vector_cache/
Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json
Source/MCP/pid.txt
+
+# Kilo Code logs
+.kilocode/logs/
+
+# MCP Knowledge Base Cache and Logs
+*.log
+MCP/vector_cache/*.txt
diff --git a/.kilocode/mcp.json b/.kilocode/mcp.json
index 5d65c878..b3f11020 100644
--- a/.kilocode/mcp.json
+++ b/.kilocode/mcp.json
@@ -5,14 +5,13 @@
"args": [
"mcpserver_stdio.py"
],
- "cwd": "${workspaceFolder}/Source/MCP/",
+ "cwd": "${workspaceFolder}/MCP/",
"env": {
- "PYTHONUNBUFFERED": "1"
+ "PYTHONUNBUFFERED": "1",
+ "PYTHONPATH": "${workspaceFolder}/MCP/python-sdk/src"
},
"disabled": false,
- "alwaysAllow": [
- "get_context"
- ]
+ "alwaysAllow": []
}
},
"tools": {
diff --git a/.kilocode/rules/rimworld.md b/.kilocode/rules/rimworld.md
index 11395210..8262a414 100644
--- a/.kilocode/rules/rimworld.md
+++ b/.kilocode/rules/rimworld.md
@@ -22,4 +22,42 @@ Always remember these critical paths for your work:
## Verification Mandate
When writing or modifying code or XML, especially for specific identifiers like enum values, class names, or field names, you **MUST** verify the correct value/spelling by using the `rimworld-knowledge-base` tool. Do not rely on memory.
-- **同步项目文件:** 当重命名、移动或删除C#源文件时,**必须**同步更新 `.csproj` 项目文件中的相应 `` 条目,否则会导致编译失败。
\ No newline at end of file
+- **同步项目文件:** 当重命名、移动或删除C#源文件时,**必须**同步更新 `.csproj` 项目文件中的相应 `` 条目,否则会导致编译失败。
+
+## 任务日志记录 (Task Logging)
+
+为了实现最低的 token 消耗和最高效的上下文理解,所有任务日志 **必须** 遵循以下 YAML-like Markdown 格式。
+
+1. **日志文件:** 在每个新任务开始时,在 `.kilocode/logs/` 目录下创建一个以当前日期和任务名命名的 Markdown 文件 (例如 `2025-08-12-fix-cleave-weapon.md`)。
+
+2. **日志格式:**
+ * **Front Matter:** 文件开头使用 YAML Front Matter 提供任务摘要。
+ * **事件驱动:** 每个独立的操作(工具调用、命令执行、用户反馈等)都应记录为一个独立的“事件”。
+ * **事件分隔符:** 使用 `---` 将每个事件分隔开。
+ * **键值对:** 使用简短、标准化的英文 `key:` 标识信息。
+ * **代码块:** 所有多行文本(代码、diff、命令输出)都必须包含在带语言标识的 ` ``` ` 代码块中。
+
+3. **启动时读取:** 每次会话初始化时,必须检查并读取最新的日志文件,以了解上一个任务的最终状态和上下文。
+
+4. **格式示例:**
+ ```markdown
+ ---
+ task: "任务的简短描述"
+ date: "YYYY-MM-DD"
+ status: "in-progress" # or "completed"
+ ---
+
+ # EVENT: TOOL_CALL
+ tool: tool_name
+ params:
+ key: value
+ ---
+
+ # EVENT: CMD_EXEC
+ cmd: command to execute
+ exit_code: 0
+ output: |
+ ```
+ ...
+ ``` ---
+ ```
\ No newline at end of file
diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll
index 7cba7d46..abdd92d8 100644
Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/1.6/Assemblies/WulaFallenEmpire.dll differ
diff --git a/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Melee_Cleave.xml b/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Melee_Cleave.xml
new file mode 100644
index 00000000..e63b6543
--- /dev/null
+++ b/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Melee_Cleave.xml
@@ -0,0 +1,81 @@
+
+
+
+
+ WULA_MeleeWeapon_Cleaver
+
+ 一把沉重但制作精良的双手战刃,挥舞时能对前方扇形区域内的多个敌人造成伤害。
+
+ Wula/Weapon/WULA_MW_Glaive
+ Graphic_Single
+ CutoutComplex
+ 1.5
+
+ Spacer
+
+ 120
+ 4
+
+
+ 45000
+ 2.5
+
+ -65
+
+
+
+
+ WULA_CleaveAttack
+
+ 20
+ 2
+
+
+
+
+ Blunt
+
+ 9
+ 2
+
+
+
+
+ 70
+ 5.9
+ 0.7
+ false
+ Bomb
+
+
+
+ WULA_FallenEmpire_Weapons
+
+ 10
+
+
+ FabricationBench
+
+
+
+
+
+ WULA_CleaveAttack
+
+
+
+
+ WULA_CleaveManeuver
+ WULA_CleaveAttack
+
+ WulaFallenEmpire.Verb_MeleeAttack_Cleave
+ Cut
+
+ MeleeAttack
+ Maneuver_Slash_MeleeHit
+ Maneuver_Slash_MeleeDeflect
+ Maneuver_Slash_MeleeMiss
+ Maneuver_Slash_MeleeDodge
+
+
+
\ No newline at end of file
diff --git a/MCP/mcpserver.log b/MCP/mcpserver.log
index e5c7d339..df125a47 100644
--- a/MCP/mcpserver.log
+++ b/MCP/mcpserver.log
@@ -685,3 +685,240 @@ requests.exceptions.SSLError: HTTPSConnectionPool(host='dashscope.aliyuncs.com',
2025-08-09 23:32:58,909 - INFO - 找到 3 个候选文件,开始向量化处理...
2025-08-09 23:32:58,910 - INFO - 文件名精确匹配: C:\Steam\steamapps\common\RimWorld\Data\dll1.6\RimWorld\JobDriver_CarryToBiosculpterPod.txt
2025-08-09 23:32:59,792 - INFO - 向量搜索完成。找到了 1 个匹配项并成功提取了代码。
+2025-08-12 13:10:04,500 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 13:10:04,512 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 13:10:57,291 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 13:10:57,299 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 13:10:57,307 - INFO - Processing request of type ListToolsRequest
+2025-08-12 13:10:57,309 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 13:10:57,310 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 13:11:07,758 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 13:11:07,766 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 13:11:07,775 - INFO - Processing request of type ListToolsRequest
+2025-08-12 13:11:07,776 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 13:11:07,777 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 13:11:25,395 - INFO - Processing request of type CallToolRequest
+2025-08-12 13:11:25,395 - INFO - 收到问题: Verb_MeleeAttack 的 ApplyMeleeDamageToTarget 方法是如何实现的?
+2025-08-12 13:11:25,396 - INFO - 找到的潜在关键词: ['Verb_MeleeAttack', 'ApplyMeleeDamageToTarget']
+2025-08-12 13:11:25,396 - INFO - 提取到关键词: ['Verb_MeleeAttack', 'ApplyMeleeDamageToTarget']
+2025-08-12 13:11:25,396 - INFO - 缓存未命中,开始实时搜索: ApplyMeleeDamageToTarget-Verb_MeleeAttack
+2025-08-12 13:11:36,892 - INFO - 找到 3 个候选文件,开始向量化处理...
+2025-08-12 13:11:36,892 - INFO - 文件名精确匹配: C:\Steam\steamapps\common\RimWorld\Data\dll1.6\RimWorld\Verb_MeleeAttack.txt
+2025-08-12 13:11:37,737 - INFO - 向量搜索完成。找到了 2 个匹配项并成功提取了代码。
+2025-08-12 13:46:05,186 - INFO - Processing request of type CallToolRequest
+2025-08-12 13:46:05,186 - INFO - 收到问题: C# code examples for drawing a cone area of effect with GenDraw.DrawFieldEdges
+2025-08-12 13:46:05,186 - INFO - 找到的潜在关键词: ['DrawFieldEdges', 'GenDraw']
+2025-08-12 13:46:05,186 - INFO - 提取到关键词: ['DrawFieldEdges', 'GenDraw']
+2025-08-12 13:46:05,186 - INFO - 缓存未命中,开始实时搜索: DrawFieldEdges-GenDraw
+2025-08-12 13:46:06,641 - INFO - 找到 47 个候选文件,开始向量化处理...
+2025-08-12 13:46:06,641 - INFO - 文件名精确匹配: C:\Steam\steamapps\common\RimWorld\Data\dll1.6\Verse\GenDraw.txt
+2025-08-12 13:46:06,641 - WARNING - 候选文件过多 (46),仅处理前 25 个。
+2025-08-12 13:46:15,700 - INFO - 向量搜索完成。找到了 5 个匹配项并成功提取了代码。
+2025-08-12 13:56:22,716 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 13:56:22,725 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 13:56:22,733 - INFO - Processing request of type ListToolsRequest
+2025-08-12 13:56:22,736 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 13:56:22,736 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 13:56:25,445 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 13:56:25,453 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 13:56:25,461 - INFO - Processing request of type ListToolsRequest
+2025-08-12 13:56:25,463 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 13:56:25,463 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 13:59:25,436 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 13:59:25,445 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 13:59:26,695 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 13:59:26,704 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 13:59:26,711 - INFO - Processing request of type ListToolsRequest
+2025-08-12 13:59:26,712 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 13:59:26,713 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:02:26,973 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:02:26,983 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:02:28,315 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:02:28,325 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:02:28,334 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:02:28,336 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:02:28,336 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:05:12,751 - INFO - Processing request of type CallToolRequest
+2025-08-12 14:05:12,751 - INFO - 收到问题: FleckDef for explosion or blast
+2025-08-12 14:05:12,751 - INFO - 找到的潜在关键词: ['FleckDef']
+2025-08-12 14:05:12,751 - INFO - 提取到关键词: ['FleckDef']
+2025-08-12 14:05:12,751 - INFO - 缓存未命中,开始实时搜索: FleckDef
+2025-08-12 14:05:14,428 - INFO - 找到 120 个候选文件,开始向量化处理...
+2025-08-12 14:05:14,429 - INFO - 文件名精确匹配: C:\Steam\steamapps\common\RimWorld\Data\dll1.6\Verse\FleckDef.txt
+2025-08-12 14:05:14,429 - WARNING - 候选文件过多 (119),仅处理前 25 个。
+2025-08-12 14:05:27,384 - INFO - 向量搜索完成。找到了 5 个匹配项并成功提取了代码。
+2025-08-12 14:05:28,722 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:05:28,731 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:05:29,890 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:05:29,900 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:05:29,907 - WARNING - Failed to validate request: Received request before initialization was complete
+2025-08-12 14:05:30,568 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:05:30,576 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:05:30,585 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:05:30,586 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:05:30,587 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:07:15,411 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:07:15,421 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:07:16,552 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:07:16,561 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:07:16,570 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:07:16,571 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:07:16,571 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:08:29,958 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:08:29,967 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:08:31,507 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:08:31,516 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:08:31,524 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:08:31,526 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:08:31,526 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:08:51,260 - INFO - Processing request of type CallToolRequest
+2025-08-12 14:08:51,261 - INFO - 收到问题: MoteMaker a C#
+2025-08-12 14:08:51,261 - INFO - 找到的潜在关键词: ['MoteMaker']
+2025-08-12 14:08:51,261 - INFO - 提取到关键词: ['MoteMaker']
+2025-08-12 14:08:51,261 - INFO - 缓存未命中,开始实时搜索: MoteMaker
+2025-08-12 14:08:52,783 - INFO - 找到 93 个候选文件,开始向量化处理...
+2025-08-12 14:08:52,784 - INFO - 文件名精确匹配: C:\Steam\steamapps\common\RimWorld\Data\dll1.6\RimWorld\MoteMaker.txt
+2025-08-12 14:08:52,784 - WARNING - 候选文件过多 (92),仅处理前 25 个。
+2025-08-12 14:09:02,079 - INFO - 向量搜索完成。找到了 4 个匹配项并成功提取了代码。
+2025-08-12 14:10:58,139 - INFO - Processing request of type CallToolRequest
+2025-08-12 14:10:58,140 - INFO - 收到问题: GenExplosion.DoExplosion
+2025-08-12 14:10:58,140 - INFO - 找到的潜在关键词: ['GenExplosion', 'DoExplosion']
+2025-08-12 14:10:58,140 - INFO - 提取到关键词: ['GenExplosion', 'DoExplosion']
+2025-08-12 14:10:58,140 - INFO - 缓存未命中,开始实时搜索: DoExplosion-GenExplosion
+2025-08-12 14:10:59,681 - INFO - 找到 31 个候选文件,开始向量化处理...
+2025-08-12 14:10:59,681 - INFO - 文件名精确匹配: C:\Steam\steamapps\common\RimWorld\Data\dll1.6\Verse\GenExplosion.txt
+2025-08-12 14:10:59,682 - WARNING - 候选文件过多 (30),仅处理前 25 个。
+2025-08-12 14:11:08,969 - INFO - 向量搜索完成。找到了 5 个匹配项并成功提取了代码。
+2025-08-12 14:11:31,655 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:11:31,664 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:11:32,875 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:11:32,883 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:11:32,892 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:11:32,893 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:11:32,893 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:15:34,332 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:15:34,341 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:15:35,824 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:15:35,833 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:15:35,842 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:15:35,844 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:15:35,845 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:18:15,009 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:18:15,018 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:18:16,372 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:18:16,380 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:18:16,387 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:18:16,389 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:18:16,390 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:18:36,256 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:18:36,265 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:18:37,487 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:18:37,494 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:18:37,502 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:18:37,503 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:18:37,504 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:21:38,017 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:21:38,026 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:21:39,239 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:21:39,247 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:21:39,254 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:21:39,256 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:21:39,257 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:24:39,348 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:24:39,357 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:24:40,544 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:24:40,552 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:24:40,559 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:24:40,561 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:24:40,562 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:27:59,228 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:27:59,237 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:28:00,785 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:28:00,795 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:28:00,803 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:28:00,804 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:28:00,806 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:30:14,451 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:30:14,460 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:30:15,814 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:30:15,823 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:30:15,830 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:30:15,832 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:30:15,833 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:31:10,525 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:31:10,534 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:31:11,907 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:31:11,916 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:31:11,924 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:31:11,925 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:31:11,926 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:34:41,249 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:34:41,258 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:34:42,477 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:34:42,486 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:34:42,494 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:34:42,496 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:34:42,496 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:35:15,037 - INFO - Processing request of type CallToolRequest
+2025-08-12 14:35:15,037 - INFO - 收到问题: DamageDef named Bomb
+2025-08-12 14:35:15,038 - INFO - 找到的潜在关键词: ['Bomb', 'DamageDef']
+2025-08-12 14:35:15,038 - INFO - 提取到关键词: ['Bomb', 'DamageDef']
+2025-08-12 14:35:15,038 - INFO - 缓存未命中,开始实时搜索: Bomb-DamageDef
+2025-08-12 14:35:16,686 - INFO - 找到 226 个候选文件,开始向量化处理...
+2025-08-12 14:35:16,687 - INFO - 文件名精确匹配: C:\Steam\steamapps\common\RimWorld\Data\dll1.6\Verse\DamageDef.txt
+2025-08-12 14:35:16,687 - WARNING - 候选文件过多 (225),仅处理前 25 个。
+2025-08-12 14:35:29,897 - INFO - 向量搜索完成。找到了 5 个匹配项并成功提取了代码。
+2025-08-12 14:36:18,709 - INFO - Processing request of type CallToolRequest
+2025-08-12 14:36:18,709 - INFO - 收到问题: XML definition for DamageDef named Bomb
+2025-08-12 14:36:18,709 - INFO - 找到的潜在关键词: ['Bomb', 'DamageDef']
+2025-08-12 14:36:18,709 - INFO - 提取到关键词: ['Bomb', 'DamageDef']
+2025-08-12 14:36:18,721 - INFO - 缓存命中: 关键词 'Bomb-DamageDef'
+2025-08-12 14:36:55,690 - INFO - Processing request of type CallToolRequest
+2025-08-12 14:36:55,690 - INFO - 收到问题: XML for DamageDef with defName Bomb
+2025-08-12 14:36:55,690 - INFO - 找到的潜在关键词: ['defName', 'Bomb', 'DamageDef']
+2025-08-12 14:36:55,690 - INFO - 提取到关键词: ['defName', 'Bomb', 'DamageDef']
+2025-08-12 14:36:55,690 - INFO - 缓存未命中,开始实时搜索: Bomb-DamageDef-defName
+2025-08-12 14:36:57,167 - INFO - 找到 226 个候选文件,开始向量化处理...
+2025-08-12 14:36:57,168 - INFO - 文件名精确匹配: C:\Steam\steamapps\common\RimWorld\Data\dll1.6\Verse\DamageDef.txt
+2025-08-12 14:36:57,168 - WARNING - 候选文件过多 (225),仅处理前 25 个。
+2025-08-12 14:37:12,844 - INFO - 向量搜索完成。找到了 5 个匹配项并成功提取了代码。
+2025-08-12 14:37:42,959 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:37:42,968 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:37:44,363 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:37:44,373 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:37:44,382 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:37:44,386 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:37:44,387 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:38:42,888 - INFO - Processing request of type CallToolRequest
+2025-08-12 14:38:42,889 - INFO - 收到问题: GenExplosion.DoExplosion method source code
+2025-08-12 14:38:42,889 - INFO - 找到的潜在关键词: ['DoExplosion', 'GenExplosion']
+2025-08-12 14:38:42,889 - INFO - 提取到关键词: ['DoExplosion', 'GenExplosion']
+2025-08-12 14:38:42,890 - INFO - 缓存命中: 关键词 'DoExplosion-GenExplosion'
+2025-08-12 14:40:44,341 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:40:44,352 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:40:45,718 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:40:45,726 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:40:45,733 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:40:45,734 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:40:45,735 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:45:40,616 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:45:40,625 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:45:41,722 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:45:41,731 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:45:43,262 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:45:43,270 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:45:43,277 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:45:43,279 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:45:43,279 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:48:43,297 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:48:43,306 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:48:44,628 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:48:44,636 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:48:44,643 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:48:44,644 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:48:44,645 - INFO - Processing request of type ListResourceTemplatesRequest
+2025-08-12 14:49:39,596 - INFO - 成功加载 DASHSCOPE_API_KEY。
+2025-08-12 14:49:39,605 - INFO - RimWorld 向量知识库 (FastMCP版, v2.1-v4-model) 正在启动...
+2025-08-12 14:49:39,613 - INFO - Processing request of type ListToolsRequest
+2025-08-12 14:49:39,614 - INFO - Processing request of type ListResourcesRequest
+2025-08-12 14:49:39,615 - INFO - Processing request of type ListResourceTemplatesRequest
diff --git a/Source/WulaFallenEmpire/CompCleave.cs b/Source/WulaFallenEmpire/CompCleave.cs
new file mode 100644
index 00000000..e0f5c12d
--- /dev/null
+++ b/Source/WulaFallenEmpire/CompCleave.cs
@@ -0,0 +1,23 @@
+using Verse;
+
+namespace WulaFallenEmpire
+{
+ public class CompProperties_Cleave : CompProperties
+ {
+ public float cleaveAngle = 90f;
+ public float cleaveRange = 2.9f;
+ public float cleaveDamageFactor = 0.7f;
+ public bool damageDowned = false;
+ public DamageDef explosionDamageDef = null;
+
+ public CompProperties_Cleave()
+ {
+ this.compClass = typeof(CompCleave);
+ }
+ }
+
+ public class CompCleave : ThingComp
+ {
+ public CompProperties_Cleave Props => (CompProperties_Cleave)this.props;
+ }
+}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/Verb/Verb_MeleeAttack_Cleave.cs b/Source/WulaFallenEmpire/Verb/Verb_MeleeAttack_Cleave.cs
new file mode 100644
index 00000000..f8a72fb8
--- /dev/null
+++ b/Source/WulaFallenEmpire/Verb/Verb_MeleeAttack_Cleave.cs
@@ -0,0 +1,180 @@
+using RimWorld;
+using Verse;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+namespace WulaFallenEmpire
+{
+ public class Verb_MeleeAttack_Cleave : Verb_MeleeAttack
+ {
+ private CompCleave Comp
+ {
+ get
+ {
+ return this.EquipmentSource?.GetComp();
+ }
+ }
+
+ protected override DamageWorker.DamageResult ApplyMeleeDamageToTarget(LocalTargetInfo target)
+ {
+ if (this.Comp == null)
+ {
+ // This verb should only be used with a weapon that has CompCleave
+ return new DamageWorker.DamageResult();
+ }
+
+ DamageWorker.DamageResult result = new DamageWorker.DamageResult();
+
+ // 1. 对主目标造成伤害
+ DamageInfo dinfo = new DamageInfo(
+ this.verbProps.meleeDamageDef,
+ this.verbProps.AdjustedMeleeDamageAmount(this, this.CasterPawn),
+ this.verbProps.AdjustedArmorPenetration(this, this.CasterPawn),
+ -1f,
+ this.CasterPawn,
+ null,
+ this.EquipmentSource?.def
+ );
+ dinfo.SetTool(this.tool);
+
+ if (target.HasThing)
+ {
+ result = target.Thing.TakeDamage(dinfo);
+ }
+
+ // 2. 执行溅射伤害
+ Pawn casterPawn = this.CasterPawn;
+ if (casterPawn == null || !target.HasThing)
+ {
+ return result;
+ }
+
+ Thing mainTarget = target.Thing;
+ Vector3 attackDirection = (mainTarget.Position - casterPawn.Position).ToVector3().normalized;
+ bool mainTargetIsHostile = mainTarget.HostileTo(casterPawn);
+
+ // 查找施法者周围的潜在目标
+ IEnumerable potentialTargets = GenRadial.RadialDistinctThingsAround(casterPawn.Position, casterPawn.Map, this.Comp.Props.cleaveRange, useCenter: true);
+
+ foreach (Thing thing in potentialTargets)
+ {
+ // 跳过主目标、自己和非生物
+ if (thing == mainTarget || thing == casterPawn || !(thing is Pawn secondaryTargetPawn))
+ {
+ continue;
+ }
+
+ // 根据XML配置决定是否跳过倒地的生物
+ if (!this.Comp.Props.damageDowned && secondaryTargetPawn.Downed)
+ {
+ continue;
+ }
+
+ // 智能溅射:次要目标的敌对状态必须与主目标一致
+ if (secondaryTargetPawn.HostileTo(casterPawn) != mainTargetIsHostile)
+ {
+ continue;
+ }
+
+ // 检查目标是否在攻击扇形范围内
+ Vector3 directionToTarget = (thing.Position - casterPawn.Position).ToVector3().normalized;
+ float angle = Vector3.Angle(attackDirection, directionToTarget);
+
+ if (angle <= this.Comp.Props.cleaveAngle / 2f)
+ {
+ // 对次要目标造成伤害
+ DamageInfo cleaveDinfo = new DamageInfo(
+ this.verbProps.meleeDamageDef,
+ this.verbProps.AdjustedMeleeDamageAmount(this, casterPawn) * this.Comp.Props.cleaveDamageFactor,
+ this.verbProps.AdjustedArmorPenetration(this, casterPawn) * this.Comp.Props.cleaveDamageFactor,
+ -1f,
+ casterPawn,
+ null,
+ this.EquipmentSource?.def
+ );
+ cleaveDinfo.SetTool(this.tool);
+ secondaryTargetPawn.TakeDamage(cleaveDinfo);
+ }
+ }
+
+ // 3. 创建扇形爆炸效果
+ CreateCleaveExplosion(casterPawn, mainTarget, this.Comp.Props.cleaveRange, this.Comp.Props.cleaveAngle);
+
+ return result;
+ }
+
+ private void CreateCleaveExplosion(Pawn caster, Thing target, float radius, float angle)
+ {
+ if (caster.Map == null || this.Comp.Props.explosionDamageDef == null) return;
+
+ Vector3 direction = (target.Position - caster.Position).ToVector3().normalized;
+ float baseAngle = direction.AngleFlat();
+
+ float startAngle = baseAngle - (angle / 2f);
+ float endAngle = baseAngle + (angle / 2f);
+
+ GenExplosion.DoExplosion(
+ center: caster.Position,
+ map: caster.Map,
+ radius: radius,
+ damType: this.Comp.Props.explosionDamageDef,
+ instigator: caster,
+ damAmount: 0,
+ armorPenetration: 0,
+ explosionSound: null,
+ weapon: this.EquipmentSource?.def,
+ projectile: null,
+ intendedTarget: target,
+ postExplosionSpawnThingDef: null,
+ postExplosionSpawnChance: 0f,
+ postExplosionSpawnThingCount: 1,
+ postExplosionGasType: null,
+ applyDamageToExplosionCellsNeighbors: false,
+ preExplosionSpawnThingDef: null,
+ preExplosionSpawnChance: 0f,
+ preExplosionSpawnThingCount: 1,
+ chanceToStartFire: 0f,
+ damageFalloff: false,
+ direction: null, // Let affectedAngle handle the direction and arc
+ ignoredThings: null,
+ affectedAngle: new FloatRange(startAngle, endAngle),
+ doVisualEffects: true,
+ propagationSpeed: 1.7f,
+ excludeRadius: 0.9f,
+ doSoundEffects: false,
+ screenShakeFactor: 0.2f
+ );
+ }
+
+ public override void DrawHighlight(LocalTargetInfo target)
+ {
+ base.DrawHighlight(target);
+
+ if (target.IsValid && CasterPawn != null && this.Comp != null)
+ {
+ GenDraw.DrawFieldEdges(GetCleaveCells(target.Cell));
+ }
+ }
+
+ private List GetCleaveCells(IntVec3 center)
+ {
+ if (this.Comp == null)
+ {
+ return new List();
+ }
+
+ IntVec3 casterPos = this.CasterPawn.Position;
+ Map map = this.CasterPawn.Map;
+ Vector3 attackDirection = (center - casterPos).ToVector3().normalized;
+
+ return GenRadial.RadialCellsAround(casterPos, this.Comp.Props.cleaveRange, useCenter: true)
+ .Where(cell => {
+ if (!cell.InBounds(map)) return false;
+ Vector3 directionToCell = (cell - casterPos).ToVector3();
+ if (directionToCell.sqrMagnitude <= 0.001f) return false; // Exclude caster's cell
+ return Vector3.Angle(attackDirection, directionToCell) <= this.Comp.Props.cleaveAngle / 2f;
+ }).ToList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
index 9a5ce27a..24df49d5 100644
--- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
+++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
@@ -68,6 +68,7 @@
+
@@ -135,6 +136,7 @@
+