diff --git a/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/Assemblies/WulaFallenEmpire.dll
index 29cc4e92..c0ce499d 100644
Binary files a/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/Assemblies/WulaFallenEmpire.dll differ
diff --git a/Documentation/EventSystem_Documentation.md b/Documentation/EventSystem_Documentation.md
index 2613f96d..97ab5a35 100644
--- a/Documentation/EventSystem_Documentation.md
+++ b/Documentation/EventSystem_Documentation.md
@@ -210,6 +210,59 @@
```
+#### 5.9 `Effect_ModifyVariable`
+- **功能**: 对一个数值类型的变量进行数学运算(加、减、乘、除)。
+- **Class**: `WulaFallenEmpire.Effect_ModifyVariable`
+- **字段**:
+ - `name`: (必须) 要修改的变量的名称。
+ - `value`: (必须) 用于运算的数值。
+ - `operation`: (必须) 执行的运算类型。可选值: `Add`, `Subtract`, `Multiply`, `Divide`。
+- **示例**:
+ ```xml
+
+
+ player_score
+ 10
+ Add
+
+ ```
+
+#### 5.10 `Effect_ClearVariable`
+- **功能**: 从事件上下文中移除一个变量。
+- **Class**: `WulaFallenEmpire.Effect_ClearVariable`
+- **字段**:
+ - `name`: (必须) 要移除的变量的名称。
+- **示例**:
+ ```xml
+
+ quest_completed_flag
+
+ ```
+
+#### 5.11 `Effect_AddQuest`
+- **功能**: 给予玩家一个由游戏核心任务系统生成的任务。
+- **Class**: `WulaFallenEmpire.Effect_AddQuest`
+- **字段**:
+ - `quest`: (必须) 要给予的 `QuestScriptDef` 的 `defName`。
+- **示例**:
+ ```xml
+
+ OpportunitySite_BanditCamp
+
+ ```
+
+#### 5.12 `Effect_FinishResearch`
+- **功能**: 立即完成一个指定的科技研究项目。
+- **Class**: `WulaFallenEmpire.Effect_FinishResearch`
+- **字段**:
+ - `research`: (必须) 要完成的 `ResearchProjectDef` 的 `defName`。
+- **示例**:
+ ```xml
+
+ MicroelectronicsBasics
+
+ ```
+
---
## 6. 核心概念:条件 (`Condition`)
@@ -219,32 +272,54 @@
### 已实现的 `Condition` 列表
#### 6.1 `Condition_VariableEquals`
-- **功能**: 检查一个变量是否等于指定的值。
+- **功能**: 检查一个变量是否等于指定的值。支持字符串和数字的比较。
- **Class**: `WulaFallenEmpire.Condition_VariableEquals`
- **字段**:
- `name`: (必须) 要检查的变量的名称。
- - `value`: (必须) 要比较的值(作为字符串)。
-- **示例**:
+ - `value`: (可选) 要比较的固定值。
+ - `valueVariableName`: (可选) 存储比较值的变量的名称。如果同时提供了 `value` 和 `valueVariableName`,则优先使用 `valueVariableName`。
+- **示例 (与固定值比较)**:
```xml
- my_quest_progress
- 1
+ quest_status
+ completed
+
+ ```
+- **示例 (与另一个变量比较)**:
+ ```xml
+
+ player_choice
+ correct_answer
```
-#### 6.2 `Condition_VariableGreaterThan`
-- **功能**: 检查一个变量是否大于指定的值。
-- **Class**: `WulaFallenEmpire.Condition_VariableGreaterThan`
-- **字段**:
+#### 6.2 数值比较条件
+以下所有条件都用于数值比较,并共享相同的字段。
+
+- **通用字段**:
- `name`: (必须) 要检查的变量的名称。
- - `value`: (必须) 要比较的数值。
-- **示例**:
+ - `value`: (可选) 要比较的固定数值。
+ - `valueVariableName`: (可选) 存储比较数值的变量的名称。如果同时提供了 `value` 和 `valueVariableName`,则优先使用 `valueVariableName`。
+
+- **`Condition_VariableGreaterThan`**: 检查变量是否 **大于** 比较值。
+- **`Condition_VariableLessThan`**: 检查变量是否 **小于** 比较值。
+- **`Condition_VariableGreaterThanOrEqual`**: 检查变量是否 **大于或等于** 比较值。
+- **`Condition_VariableLessThanOrEqual`**: 检查变量是否 **小于或等于** 比较值。
+
+- **示例 (大于固定值)**:
```xml
player_reputation
50
```
+- **示例 (小于或等于另一个变量)**:
+ ```xml
+
+ current_threat_level
+ max_allowed_threat
+
+ ```
---
diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo
index 9e11ffcd..72a39eb5 100644
Binary files a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo and b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo differ
diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json
index 01d50c37..0b4bebea 100644
--- a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json
+++ b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json
@@ -2,10 +2,6 @@
"Version": 1,
"WorkspaceRootPath": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\",
"Documents": [
- {
- "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\debugactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:debugactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
{
"AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\mentalstate_brokenpersonality.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:mentalstate_brokenpersonality.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@@ -71,19 +67,6 @@
{
"$type": "Document",
"DocumentIndex": 0,
- "Title": "DebugActions.cs",
- "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\DebugActions.cs",
- "RelativeDocumentMoniker": "DebugActions.cs",
- "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\DebugActions.cs",
- "RelativeToolTip": "DebugActions.cs",
- "ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAAAAAA",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-07-27T07:57:05.014Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 1,
"Title": "MentalState_BrokenPersonality.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\MentalState_BrokenPersonality.cs",
"RelativeDocumentMoniker": "MentalState_BrokenPersonality.cs",
@@ -91,11 +74,12 @@
"RelativeToolTip": "MentalState_BrokenPersonality.cs",
"ViewState": "AQIAABMAAAAAAAAAAAAAwEsAAAAjAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-07-25T13:51:03.13Z"
+ "WhenOpened": "2025-07-25T13:51:03.13Z",
+ "EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 2,
+ "DocumentIndex": 1,
"Title": "Recipe_AdministerWulaMechRepairKit.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Recipe_AdministerWulaMechRepairKit.cs",
"RelativeDocumentMoniker": "Recipe_AdministerWulaMechRepairKit.cs",
@@ -107,7 +91,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 3,
+ "DocumentIndex": 2,
"Title": "WorkGiver_Warden_DeliverEnergy.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\WorkGiver_Warden_DeliverEnergy.cs",
"RelativeDocumentMoniker": "WorkGiver_Warden_DeliverEnergy.cs",
@@ -119,7 +103,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 4,
+ "DocumentIndex": 3,
"Title": "WorkGiverDefExtension_FeedWula.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\WorkGiverDefExtension_FeedWula.cs",
"RelativeDocumentMoniker": "WorkGiverDefExtension_FeedWula.cs",
@@ -131,7 +115,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 5,
+ "DocumentIndex": 4,
"Title": "CompApparelInterceptor.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\CompApparelInterceptor.cs",
"RelativeDocumentMoniker": "CompApparelInterceptor.cs",
@@ -143,7 +127,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 6,
+ "DocumentIndex": 5,
"Title": "Projectile_Launch_Patch.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\HarmonyPatches\\Projectile_Launch_Patch.cs",
"RelativeDocumentMoniker": "HarmonyPatches\\Projectile_Launch_Patch.cs",
@@ -155,7 +139,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 8,
+ "DocumentIndex": 7,
"Title": "IngestPatch.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\IngestPatch.cs",
"RelativeDocumentMoniker": "IngestPatch.cs",
@@ -167,7 +151,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 7,
+ "DocumentIndex": 6,
"Title": "CompUseEffect_WulaSkillTrainer.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\CompUseEffect_WulaSkillTrainer.cs",
"RelativeDocumentMoniker": "CompUseEffect_WulaSkillTrainer.cs",
@@ -179,7 +163,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 9,
+ "DocumentIndex": 8,
"Title": "Building_Wula_DarkEnergy_Engine.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Building_Wula_DarkEnergy_Engine.cs",
"RelativeDocumentMoniker": "Building_Wula_DarkEnergy_Engine.cs",
@@ -191,7 +175,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 10,
+ "DocumentIndex": 9,
"Title": "HediffComp_RegenerateBackstory.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\HediffComp_RegenerateBackstory.cs",
"RelativeDocumentMoniker": "HediffComp_RegenerateBackstory.cs",
@@ -203,7 +187,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 11,
+ "DocumentIndex": 10,
"Title": "WulaFallenEmpireMod.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\WulaFallenEmpireMod.cs",
"RelativeDocumentMoniker": "WulaFallenEmpireMod.cs",
@@ -215,7 +199,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 12,
+ "DocumentIndex": 11,
"Title": "MechanitorPatch.cs",
"DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\MechanitorPatch.cs",
"RelativeDocumentMoniker": "MechanitorPatch.cs",
@@ -224,10 +208,6 @@
"ViewState": "AQIAAAAAAAAAAAAAAAAAACEAAAAJAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-07-18T10:20:31.368Z"
- },
- {
- "$type": "Bookmark",
- "Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}"
}
]
}
diff --git a/Source/WulaFallenEmpire/EventSystem/Condition.cs b/Source/WulaFallenEmpire/EventSystem/Condition.cs
index 0e9e1a7d..2bb758d2 100644
--- a/Source/WulaFallenEmpire/EventSystem/Condition.cs
+++ b/Source/WulaFallenEmpire/EventSystem/Condition.cs
@@ -12,6 +12,7 @@ namespace WulaFallenEmpire
{
public string name;
public string value;
+ public string valueVariableName;
public override bool IsMet(out string reason)
{
@@ -22,11 +23,21 @@ namespace WulaFallenEmpire
return false;
}
- // Simple string comparison for now. Can be expanded.
- bool met = variable.ToString() == value;
+ string compareValue = value;
+ if (!string.IsNullOrEmpty(valueVariableName))
+ {
+ compareValue = EventContext.GetVariable