1
This commit is contained in:
Binary file not shown.
@@ -2,24 +2,32 @@
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\hediffcomp_reflectmeleedamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\hediffcomp_reflectmeleedamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\ara_defof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_defof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\jobs\\jobdriver_supercarry\\jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_supercarry\\jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\jobs\\jobdriver_swarmmaintain\\jobdriver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\jobs\\jobdriver_swarmmaintain\\jobdriver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_swarmmaintain\\jobdriver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\jobs\\jobdriver_swarmmaintain\\jobgiver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\jobs\\jobdriver_swarmmaintain\\jobgiver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_swarmmaintain\\jobgiver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\jobs\\jobdriver_swarmmaintain\\thinknode_conditionalshouldmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\jobs\\jobdriver_swarmmaintain\\thinknode_conditionalshouldmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_swarmmaintain\\thinknode_conditionalshouldmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\damage\\damageworker_explosionwithterrain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\damage\\damageworker_explosionwithterrain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:damage\\damageworker_explosionwithterrain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
@@ -98,24 +106,54 @@
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 0,
|
||||
"SelectedChildIndex": 2,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "ARA_DefOf.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_DefOf.cs",
|
||||
"RelativeDocumentMoniker": "ARA_DefOf.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_DefOf.cs*",
|
||||
"RelativeToolTip": "ARA_DefOf.cs*",
|
||||
"ViewState": "AgIAAFQAAAAAAAAAAAAUwGcAAAAmAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-03-24T08:34:43.383Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "HediffComp_ReflectMeleeDamage.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_ReflectMeleeDamage.cs",
|
||||
"RelativeDocumentMoniker": "Hediffs\\HediffComp_ReflectMeleeDamage.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_ReflectMeleeDamage.cs*",
|
||||
"RelativeToolTip": "Hediffs\\HediffComp_ReflectMeleeDamage.cs*",
|
||||
"ViewState": "AgIAAFUAAAAAAAAAAAAowGoAAAA/AAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-03-24T08:33:52.75Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "JobDriver_SuperCarry.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SuperCarry\\JobDriver_SuperCarry.cs",
|
||||
"RelativeDocumentMoniker": "Jobs\\JobDriver_SuperCarry\\JobDriver_SuperCarry.cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SuperCarry\\JobDriver_SuperCarry.cs",
|
||||
"RelativeToolTip": "Jobs\\JobDriver_SuperCarry\\JobDriver_SuperCarry.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAABWAAAAAAAAAA==",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAA3AAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-03-06T03:21:58.524Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"DocumentIndex": 3,
|
||||
"Title": "JobDriver_SwarmMaintain.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs",
|
||||
"RelativeDocumentMoniker": "Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs",
|
||||
@@ -123,16 +161,11 @@
|
||||
"RelativeToolTip": "Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAXAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-03-06T03:21:31.585Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
|
||||
"WhenOpened": "2026-03-06T03:21:31.585Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"DocumentIndex": 4,
|
||||
"Title": "JobGiver_SwarmMaintain.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SwarmMaintain\\JobGiver_SwarmMaintain.cs",
|
||||
"RelativeDocumentMoniker": "Jobs\\JobDriver_SwarmMaintain\\JobGiver_SwarmMaintain.cs",
|
||||
@@ -140,12 +173,11 @@
|
||||
"RelativeToolTip": "Jobs\\JobDriver_SwarmMaintain\\JobGiver_SwarmMaintain.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-03-06T03:21:34.528Z",
|
||||
"EditorCaption": ""
|
||||
"WhenOpened": "2026-03-06T03:21:34.528Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 3,
|
||||
"DocumentIndex": 5,
|
||||
"Title": "ThinkNode_ConditionalShouldMaintain.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SwarmMaintain\\ThinkNode_ConditionalShouldMaintain.cs",
|
||||
"RelativeDocumentMoniker": "Jobs\\JobDriver_SwarmMaintain\\ThinkNode_ConditionalShouldMaintain.cs",
|
||||
@@ -153,12 +185,11 @@
|
||||
"RelativeToolTip": "Jobs\\JobDriver_SwarmMaintain\\ThinkNode_ConditionalShouldMaintain.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-03-06T03:21:32.052Z",
|
||||
"EditorCaption": ""
|
||||
"WhenOpened": "2026-03-06T03:21:32.052Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 4,
|
||||
"DocumentIndex": 6,
|
||||
"Title": "DamageWorker_ExplosionWithTerrain.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Damage\\DamageWorker_ExplosionWithTerrain.cs",
|
||||
"RelativeDocumentMoniker": "Damage\\DamageWorker_ExplosionWithTerrain.cs",
|
||||
@@ -166,12 +197,11 @@
|
||||
"RelativeToolTip": "Damage\\DamageWorker_ExplosionWithTerrain.cs",
|
||||
"ViewState": "AgIAAA0AAAAAAAAAAAAQwB4AAAARAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2026-03-06T01:33:29.803Z",
|
||||
"EditorCaption": ""
|
||||
"WhenOpened": "2026-03-06T01:33:29.803Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 5,
|
||||
"DocumentIndex": 7,
|
||||
"Title": "DamageDefExtension_TerrainCover.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Damage\\DamageDefExtension_TerrainCover.cs",
|
||||
"RelativeDocumentMoniker": "Damage\\DamageDefExtension_TerrainCover.cs",
|
||||
@@ -183,7 +213,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 6,
|
||||
"DocumentIndex": 8,
|
||||
"Title": "JobDriver_StripChitin.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs",
|
||||
"RelativeDocumentMoniker": "Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs",
|
||||
@@ -195,7 +225,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 7,
|
||||
"DocumentIndex": 9,
|
||||
"Title": "JobDriver_FeedWithHoney.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs",
|
||||
"RelativeDocumentMoniker": "Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs",
|
||||
@@ -207,7 +237,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 8,
|
||||
"DocumentIndex": 10,
|
||||
"Title": "JobGiver_ExtractHoney.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_ExtractHoney\\JobGiver_ExtractHoney.cs",
|
||||
"RelativeDocumentMoniker": "Jobs\\JobDriver_ExtractHoney\\JobGiver_ExtractHoney.cs",
|
||||
@@ -219,7 +249,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 9,
|
||||
"DocumentIndex": 11,
|
||||
"Title": "JobDriver_ExtractHoney.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_ExtractHoney\\JobDriver_ExtractHoney.cs",
|
||||
"RelativeDocumentMoniker": "Jobs\\JobDriver_ExtractHoney\\JobDriver_ExtractHoney.cs",
|
||||
@@ -231,7 +261,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 12,
|
||||
"DocumentIndex": 14,
|
||||
"Title": "WorldComponent_AircraftManager.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\WorldComponent_AircraftManager.cs",
|
||||
"RelativeDocumentMoniker": "Flyover\\ARA_AircraftHangar\\WorldComponent_AircraftManager.cs",
|
||||
@@ -243,7 +273,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 11,
|
||||
"DocumentIndex": 13,
|
||||
"Title": "GameComponent_DropPodInterceptor.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\GameComponent_DropPodInterceptor.cs",
|
||||
"RelativeDocumentMoniker": "Flyover\\GameComponent_DropPodInterceptor.cs",
|
||||
@@ -255,7 +285,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 10,
|
||||
"DocumentIndex": 12,
|
||||
"Title": "CompAbilityEffect_ToggleDropPodIntercept.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_ToggleDropPodIntercept.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\CompAbilityEffect_ToggleDropPodIntercept.cs",
|
||||
@@ -267,7 +297,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 13,
|
||||
"DocumentIndex": 15,
|
||||
"Title": "HediffComp_GestaltNode.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_GestaltNode\\HediffComp_GestaltNode.cs",
|
||||
"RelativeDocumentMoniker": "Hediffs\\ARA_GestaltNode\\HediffComp_GestaltNode.cs",
|
||||
@@ -279,7 +309,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 14,
|
||||
"DocumentIndex": 16,
|
||||
"Title": "Comp_SwarmSpellHolder.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_SwarmSpellHolder\\Comp_SwarmSpellHolder.cs",
|
||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_SwarmSpellHolder\\Comp_SwarmSpellHolder.cs",
|
||||
@@ -291,7 +321,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 18,
|
||||
"DocumentIndex": 20,
|
||||
"Title": "Building_ResearchBlueprintReader.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs",
|
||||
"RelativeDocumentMoniker": "Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs",
|
||||
@@ -303,7 +333,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 17,
|
||||
"DocumentIndex": 19,
|
||||
"Title": "ResearchBlueprintReaderManager.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs",
|
||||
"RelativeDocumentMoniker": "Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs",
|
||||
@@ -315,7 +345,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 16,
|
||||
"DocumentIndex": 18,
|
||||
"Title": "CompProperties_AbilityFanShapedStunKnockback.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_FanShapedStunKnockback\\CompProperties_AbilityFanShapedStunKnockback.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_FanShapedStunKnockback\\CompProperties_AbilityFanShapedStunKnockback.cs",
|
||||
@@ -327,7 +357,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 15,
|
||||
"DocumentIndex": 17,
|
||||
"Title": "CompAbilityEffect_FanShapedStunKnockback.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_FanShapedStunKnockback\\CompAbilityEffect_FanShapedStunKnockback.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_FanShapedStunKnockback\\CompAbilityEffect_FanShapedStunKnockback.cs",
|
||||
@@ -339,7 +369,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 19,
|
||||
"DocumentIndex": 21,
|
||||
"Title": "CompAbilityEffect_EjectOrgans.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_EjectOrgans\\CompAbilityEffect_EjectOrgans.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_EjectOrgans\\CompAbilityEffect_EjectOrgans.cs",
|
||||
@@ -351,7 +381,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 21,
|
||||
"DocumentIndex": 23,
|
||||
"Title": "CompHediffGiver.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs",
|
||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs",
|
||||
@@ -363,7 +393,7 @@
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 20,
|
||||
"DocumentIndex": 22,
|
||||
"Title": "CompProperties_HediffGiver.cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs",
|
||||
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs",
|
||||
|
||||
@@ -100,4 +100,13 @@ namespace ArachnaeSwarm
|
||||
DefOfHelper.EnsureInitializedInCtor(typeof(ARA_StatDefOf));
|
||||
}
|
||||
}
|
||||
[DefOf]
|
||||
public static class ARA_ThingDefOf
|
||||
{
|
||||
public static ThingDef Mote_SparkSimple;
|
||||
static ARA_ThingDefOf()
|
||||
{
|
||||
DefOfHelper.EnsureInitializedInCtor(typeof(ARA_ThingDefOf));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -312,6 +312,7 @@
|
||||
<Compile Include="Hediffs\ARA_ProductionQueue\HediffComp_ProductionQueue.cs" />
|
||||
<Compile Include="Hediffs\DRM_HediffCurseFlame\Hediff_CurseFlame.cs" />
|
||||
<Compile Include="Hediffs\HediffComp_LifespanDisplay.cs" />
|
||||
<Compile Include="Hediffs\HediffComp_ReflectMeleeDamage.cs" />
|
||||
<Compile Include="Hediffs\HediffComp_SpawnPawnOnRemoved.cs" />
|
||||
<Compile Include="Hediffs\HediffComp_Temperature.cs" />
|
||||
<Compile Include="Hediffs\HediffComp_TerrainBasedSeverity\HediffCompProperties_TerrainBasedSeverity.cs" />
|
||||
|
||||
298
Source/ArachnaeSwarm/Hediffs/HediffComp_ReflectMeleeDamage.cs
Normal file
298
Source/ArachnaeSwarm/Hediffs/HediffComp_ReflectMeleeDamage.cs
Normal file
@@ -0,0 +1,298 @@
|
||||
using ArachnaeSwarm;
|
||||
using RimWorld;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarmVerse
|
||||
{
|
||||
/// <summary>
|
||||
/// 近战伤害反射组件的属性
|
||||
/// </summary>
|
||||
public class HediffCompProperties_ReflectMeleeDamage : HediffCompProperties
|
||||
{
|
||||
public float reflectMultiplier = 3.0f; // 反射倍数,默认300%
|
||||
public bool showReflectionEffect = true; // 是否显示反射效果
|
||||
public bool reflectOnlyMelee = true; // 是否只反射近战伤害
|
||||
public bool includeToolBasedRanged = false; // 是否包含使用工具的远程伤害
|
||||
public float minDamageToReflect = 0.1f; // 最小反射伤害阈值
|
||||
|
||||
public HediffCompProperties_ReflectMeleeDamage()
|
||||
{
|
||||
this.compClass = typeof(HediffComp_ReflectMeleeDamage);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 近战伤害反射组件
|
||||
/// 当Pawn受到近战伤害时,将300%的伤害反射给攻击者
|
||||
/// </summary>
|
||||
public class HediffComp_ReflectMeleeDamage : HediffComp
|
||||
{
|
||||
private bool isProcessingReflection = false; // 防止递归调用
|
||||
private int lastReflectionTick = -100; // 上次反射的tick
|
||||
private const int MIN_TICKS_BETWEEN_REFLECTIONS = 2; // 最小反射间隔
|
||||
|
||||
public HediffCompProperties_ReflectMeleeDamage Props => (HediffCompProperties_ReflectMeleeDamage)props;
|
||||
|
||||
/// <summary>
|
||||
/// 获取反射倍率
|
||||
/// </summary>
|
||||
public float ReflectMultiplier => Props.reflectMultiplier;
|
||||
|
||||
/// <summary>
|
||||
/// 检查是否为近战伤害
|
||||
/// 根据题目要求:所有damageinfo有tool的,视为近战伤害
|
||||
/// </summary>
|
||||
private bool IsMeleeDamage(DamageInfo dinfo)
|
||||
{
|
||||
// 如果有Tool,视为近战伤害
|
||||
if (dinfo.Tool != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// 如果没有Tool,进一步检查武器类型
|
||||
if (dinfo.Weapon != null)
|
||||
{
|
||||
// 检查是否为近战武器
|
||||
if (dinfo.Weapon.IsMeleeWeapon)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// 如果设置为包含使用工具的远程伤害,且武器有工具定义
|
||||
if (Props.includeToolBasedRanged && dinfo.Weapon.tools != null && dinfo.Weapon.tools.Count > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// 默认情况下,不视为近战伤害
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查是否应该反射此伤害
|
||||
/// </summary>
|
||||
private bool ShouldReflectDamage(DamageInfo dinfo, Pawn pawn)
|
||||
{
|
||||
// 防止递归调用
|
||||
if (isProcessingReflection)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查最小伤害阈值
|
||||
if (dinfo.Amount < Props.minDamageToReflect)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查是否只反射近战伤害
|
||||
if (Props.reflectOnlyMelee && !IsMeleeDamage(dinfo))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查伤害来源
|
||||
if (dinfo.Instigator == null || dinfo.Instigator == pawn)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查最小反射间隔
|
||||
if (Find.TickManager.TicksGame - lastReflectionTick < MIN_TICKS_BETWEEN_REFLECTIONS)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查攻击者是否有效
|
||||
Pawn attacker = dinfo.Instigator as Pawn;
|
||||
if (attacker != null && (attacker.Dead || attacker.Destroyed))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 反射伤害给攻击者
|
||||
/// </summary>
|
||||
private void ReflectDamageToAttacker(DamageInfo originalDinfo, Pawn pawn)
|
||||
{
|
||||
try
|
||||
{
|
||||
isProcessingReflection = true;
|
||||
lastReflectionTick = Find.TickManager.TicksGame;
|
||||
|
||||
// 计算反射伤害
|
||||
float reflectedAmount = originalDinfo.Amount * ReflectMultiplier;
|
||||
|
||||
// 确保有最小伤害
|
||||
if (reflectedAmount < 1f)
|
||||
{
|
||||
reflectedAmount = 1f;
|
||||
}
|
||||
|
||||
// 获取攻击者
|
||||
Thing attacker = originalDinfo.Instigator;
|
||||
if (attacker == null || attacker.Destroyed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 创建反射伤害信息
|
||||
DamageInfo reflectedDinfo = new DamageInfo(
|
||||
def: originalDinfo.Def,
|
||||
amount: reflectedAmount,
|
||||
armorPenetration: originalDinfo.ArmorPenetrationInt,
|
||||
angle: Rand.Range(0, 359),
|
||||
instigator: pawn, // 反射者作为伤害来源
|
||||
hitPart: null,
|
||||
weapon: originalDinfo.Weapon,
|
||||
category: DamageInfo.SourceCategory.ThingOrUnknown,
|
||||
intendedTarget: attacker
|
||||
);
|
||||
|
||||
// 设置反射伤害的特殊属性
|
||||
reflectedDinfo.SetAllowDamagePropagation(true);
|
||||
reflectedDinfo.SetIgnoreArmor(false);
|
||||
|
||||
// 如果有Tool,传递Tool信息(但标记为反射伤害)
|
||||
if (originalDinfo.Tool != null)
|
||||
{
|
||||
reflectedDinfo.SetTool(originalDinfo.Tool);
|
||||
}
|
||||
|
||||
// 记录日志
|
||||
if (Prefs.DevMode)
|
||||
{
|
||||
Log.Message($"[ReflectMeleeDamage] {pawn.LabelShortCap} reflected {reflectedAmount:F1} damage " +
|
||||
$"({originalDinfo.Amount:F1} × {ReflectMultiplier:F1}) to {attacker.LabelShortCap}");
|
||||
}
|
||||
|
||||
// 对攻击者造成伤害
|
||||
attacker.TakeDamage(reflectedDinfo);
|
||||
|
||||
// 显示反射效果
|
||||
if (Props.showReflectionEffect)
|
||||
{
|
||||
ShowReflectionEffect(pawn, attacker);
|
||||
}
|
||||
|
||||
// 发送消息
|
||||
if (pawn.Faction == Faction.OfPlayer && attacker.Faction != Faction.OfPlayer)
|
||||
{
|
||||
Messages.Message(
|
||||
"ASV_ReflectDamageMessage".Translate(
|
||||
pawn.LabelShort,
|
||||
attacker.LabelShort,
|
||||
reflectedAmount.ToString("F0")
|
||||
),
|
||||
pawn,
|
||||
MessageTypeDefOf.NeutralEvent
|
||||
);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error($"[ReflectMeleeDamage] Error reflecting damage: {ex}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
isProcessingReflection = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示反射效果
|
||||
/// </summary>
|
||||
private void ShowReflectionEffect(Pawn pawn, Thing attacker)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 显示反弹粒子
|
||||
if (pawn.Spawned && attacker.Spawned && pawn.Map == attacker.Map)
|
||||
{
|
||||
Vector3 startPos = pawn.DrawPos;
|
||||
Vector3 endPos = attacker.DrawPos;
|
||||
|
||||
// 创建一个从反射者到攻击者的弹道效果
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
MoteThrown mote = (MoteThrown)ThingMaker.MakeThing(ARA_ThingDefOf.Mote_SparkSimple, null);
|
||||
mote.Scale = Rand.Range(0.5f, 0.8f);
|
||||
mote.exactPosition = startPos + new Vector3(
|
||||
Rand.Range(-0.3f, 0.3f),
|
||||
0f,
|
||||
Rand.Range(-0.3f, 0.3f)
|
||||
);
|
||||
mote.SetVelocity(
|
||||
(endPos - startPos).normalized.x * Rand.Range(15f, 25f),
|
||||
0f
|
||||
);
|
||||
GenSpawn.Spawn(mote, pawn.Position, pawn.Map);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error($"[ReflectMeleeDamage] Error showing reflection effect: {ex}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在Pawn受到伤害后调用
|
||||
/// </summary>
|
||||
public override void Notify_PawnPostApplyDamage(DamageInfo dinfo, float totalDamageDealt)
|
||||
{
|
||||
base.Notify_PawnPostApplyDamage(dinfo, totalDamageDealt);
|
||||
|
||||
Pawn pawn = this.Pawn;
|
||||
if (pawn == null || pawn.Dead || pawn.Destroyed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查是否应该反射伤害
|
||||
if (ShouldReflectDamage(dinfo, pawn))
|
||||
{
|
||||
// 反射伤害给攻击者
|
||||
ReflectDamageToAttacker(dinfo, pawn);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取组件描述
|
||||
/// </summary>
|
||||
public override string CompTipStringExtra
|
||||
{
|
||||
get
|
||||
{
|
||||
string tip = "ASV_ReflectMeleeDamage_Tip".Translate(ReflectMultiplier.ToStringPercent());
|
||||
|
||||
if (Props.includeToolBasedRanged)
|
||||
{
|
||||
tip += "\n" + "ASV_ReflectIncludesToolRanged".Translate();
|
||||
}
|
||||
|
||||
return tip;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取调试信息
|
||||
/// </summary>
|
||||
public override string CompDebugString()
|
||||
{
|
||||
return $"Reflect multiplier: {ReflectMultiplier:F1}x\n" +
|
||||
$"Last reflection tick: {lastReflectionTick}\n" +
|
||||
$"Min damage to reflect: {Props.minDamageToReflect}\n" +
|
||||
$"Reflects only melee: {Props.reflectOnlyMelee}\n" +
|
||||
$"Includes tool-based ranged: {Props.includeToolBasedRanged}";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user