This commit is contained in:
2025-08-12 14:50:12 +08:00
parent 28f3ac9c54
commit d18ed49c54
9 changed files with 573 additions and 6 deletions

7
.gitignore vendored
View File

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

View File

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

View File

@@ -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` 项目文件中的相应 `<Compile Include="..." />` 条目,否则会导致编译失败。
- **同步项目文件:** 当重命名、移动或删除C#源文件时**必须**同步更新 `.csproj` 项目文件中的相应 `<Compile Include="..." />` 条目,否则会导致编译失败。
## 任务日志记录 (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: |
```
...
``` ---
```

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThingDef ParentName="BaseMeleeWeapon_Sharp_Quality">
<defName>WULA_MeleeWeapon_Cleaver</defName>
<label>CMl-91"裂空"</label>
<description>一把沉重但制作精良的双手战刃,挥舞时能对前方扇形区域内的多个敌人造成伤害。</description>
<graphicData>
<texPath>Wula/Weapon/WULA_MW_Glaive</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>1.5</drawSize>
</graphicData>
<techLevel>Spacer</techLevel>
<costList>
<Plasteel>120</Plasteel>
<ComponentSpacer>4</ComponentSpacer>
</costList>
<statBases>
<WorkToMake>45000</WorkToMake>
<Mass>2.5</Mass>
</statBases>
<equippedAngleOffset>-65</equippedAngleOffset>
<tools>
<li>
<label></label>
<capacities>
<li>WULA_CleaveAttack</li>
</capacities>
<power>20</power>
<cooldownTime>2</cooldownTime>
</li>
<li>
<label></label>
<capacities>
<li>Blunt</li>
</capacities>
<power>9</power>
<cooldownTime>2</cooldownTime>
</li>
</tools>
<comps>
<li Class="WulaFallenEmpire.CompProperties_Cleave">
<cleaveAngle>70</cleaveAngle>
<cleaveRange>5.9</cleaveRange>
<cleaveDamageFactor>0.7</cleaveDamageFactor>
<damageDowned>false</damageDowned>
<explosionDamageDef>Bomb</explosionDamageDef>
</li>
</comps>
<recipeMaker>
<researchPrerequisite>WULA_FallenEmpire_Weapons</researchPrerequisite>
<skillRequirements>
<Crafting>10</Crafting>
</skillRequirements>
<recipeUsers>
<li>FabricationBench</li>
</recipeUsers>
</recipeMaker>
</ThingDef>
<ToolCapacityDef>
<defName>WULA_CleaveAttack</defName>
<label>cleave</label>
</ToolCapacityDef>
<ManeuverDef>
<defName>WULA_CleaveManeuver</defName>
<requiredCapacity>WULA_CleaveAttack</requiredCapacity>
<verb>
<verbClass>WulaFallenEmpire.Verb_MeleeAttack_Cleave</verbClass>
<meleeDamageDef>Cut</meleeDamageDef>
</verb>
<logEntryDef>MeleeAttack</logEntryDef>
<combatLogRulesHit>Maneuver_Slash_MeleeHit</combatLogRulesHit>
<combatLogRulesDeflect>Maneuver_Slash_MeleeDeflect</combatLogRulesDeflect>
<combatLogRulesMiss>Maneuver_Slash_MeleeMiss</combatLogRulesMiss>
<combatLogRulesDodge>Maneuver_Slash_MeleeDodge</combatLogRulesDodge>
</ManeuverDef>
</Defs>

View File

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

View File

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

View File

@@ -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<CompCleave>();
}
}
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<Thing> 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<IntVec3> GetCleaveCells(IntVec3 center)
{
if (this.Comp == null)
{
return new List<IntVec3>();
}
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();
}
}
}

View File

@@ -68,6 +68,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="CompCleave.cs" />
<Compile Include="Building_Wula_DarkEnergy_Engine.cs" />
<Compile Include="CompApparelInterceptor.cs" />
<Compile Include="CompCustomUniqueWeapon.cs" />
@@ -135,6 +136,7 @@
<Compile Include="Verb\Trackingbullet.cs" />
<Compile Include="Verb\Verb_ShootBeamExplosive.cs" />
<Compile Include="Verb\VerbPropertiesExplosiveBeam.cs" />
<Compile Include="Verb\Verb_MeleeAttack_Cleave.cs" />
<Compile Include="WorkGiver_FeedWulaPatient.cs" />
<Compile Include="WorkGiver_Warden_DeliverEnergy.cs" />
<Compile Include="WorkGiver_Warden_FeedWula.cs" />