diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 32aba2a..7a88267 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml index 7bbb23d..b1e0eaf 100644 --- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml +++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml @@ -35,7 +35,7 @@ ARA_RaceBaseSwarmProduceOn 重启该阿拉克涅督虫自动抚育辅虫的能力。 - ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOn + ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOn 601 false true @@ -63,7 +63,7 @@ ARA_RaceBaseSwarmProduceOff 关闭该阿拉克涅督虫自动抚育辅虫的能力。 - ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOff + ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOff 601 false true @@ -92,7 +92,7 @@ 发射一排阿拉克涅休眠茧,其中装有阿拉克涅酸爆种,这些危险的虫族被唤醒后就会开始寻仇,匆匆了结自己的生命. UI/Commands/EggSpew - 5000 + 5000 true 300 true @@ -115,7 +115,7 @@
  • ARA_Proj_Trap - 3 + 3
  • @@ -148,7 +148,7 @@ AcidSpray_Resolve false false - false + false True @@ -360,7 +360,7 @@
  • Bullet_ARA_RW_Basic_Fist_Needle_Gun - 12 + 12
  • Food @@ -456,7 +456,7 @@
  • Bullet_ARA_RW_Basic_SkyHive_Gun - 3 + 3
  • Food @@ -554,7 +554,7 @@ Verb_CastAbility 1 10 - false + false true @@ -588,7 +588,7 @@
  • -->
    - + ARA_Ability_TrackingCharge @@ -620,11 +620,11 @@ ARA_Flyer_TrackingCharge 1.5 Pawn_Melee_BigBash_HitPawn - true + true
  • WarTrumpet - 20 + 20
  • Food @@ -641,14 +641,14 @@ 0 - + ARA_PsychicBrainburn 以强大的纯净灵能冲击目标,烧毁目标的中枢神经系统——这会直接杀死目标。 Psycast Psychic - ArachnaeSwarm/UI/Abilities/ARA_PsychicBrainburn + ArachnaeSwarm/UI/Abilities/ARA_PsychicBrainburn 18000 false 300 @@ -681,7 +681,7 @@ True Skip_Entry - + false
  • @@ -771,7 +771,7 @@ 40 - + ARA_Fighter_Invisibility_jump @@ -869,8 +869,17 @@
  • CompAbilityEffect_GiveHediff - ARA_Fighter_Execution_Damage + ARA_Heal_By_Nurse_Hediff true + 20~30 + False +
  • +
  • + +
  • ARA_InsectCreep
  • + + 在阿拉克涅菌毯上才能使用此技能 + 不在阿拉克涅菌毯上
    diff --git a/1.6/1.6/Defs/HediffDefs/ARA_HediffDef_Terrain.xml b/1.6/1.6/Defs/HediffDefs/ARA_HediffDef_Terrain.xml index 0451714..09506d2 100644 --- a/1.6/1.6/Defs/HediffDefs/ARA_HediffDef_Terrain.xml +++ b/1.6/1.6/Defs/HediffDefs/ARA_HediffDef_Terrain.xml @@ -62,20 +62,6 @@ 0.01 false -
  • - 180 - - - -
  • ARA_InsectCreep
  • - - - - 0.05 - - - -0.0249 -
  • ARA_TerrainHeal_Ability
  • @@ -87,7 +73,28 @@
  • false 0 - +
  • + + + + ARA_Heal_By_Nurse_Hediff + + 阿拉克涅虫群的愈合素可以引起组织细胞的异常增殖以快速完成伤口治愈。 + (0.52, 1, 0.95) + HediffWithComps + false + false + +
  • +
  • + 6000 + true +
  • +
    + +
  • + 0 + 300
  • diff --git a/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml b/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml index 75f25a8..f06691a 100644 --- a/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml +++ b/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml @@ -116,6 +116,7 @@ ARA_Huge_Stomach_Hediff + ARA_Technology_1EVO ARA_Huge_Stomach_Hediff diff --git a/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml b/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml index a41813e..03b5188 100644 --- a/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml +++ b/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml @@ -256,6 +256,18 @@ + + ARA_Technology_8CPE + + 允许虫族在菌毯上种植一种特殊的作物。 + 150 + 1.00 + 3.60 + ARA_ResearchBench + +
  • ARA_Base_Technology
  • +
    +
    ARA_Technology_5SHL @@ -308,7 +320,7 @@ ARA_Technology_7GUT - + 允许虫族建造一种利用活体钜菌和生物质产出阿拉克涅虫蜜的建筑。 150 8.00 @@ -319,6 +331,30 @@
  • ARA_Technology_1BAC
  • + + ARA_Technology_1NPT + + 允许虫族建造一个中央营养供给设施,它可以自动为链接到的、需要营养的建筑自动补充营养。 + 150 + 10.50 + 3.20 + ARA_ResearchBench + +
  • ARA_Technology_2WMT
  • +
    +
    + + ARA_Technology_2NPT + + 允许虫族建造用于存放和消化猎物的茧,溶解猎物为阿拉克涅营养供给塔网络提供额外的生物质传输效率和孵化速度。 + 150 + 11.50 + 3.20 + ARA_ResearchBench + +
  • ARA_Technology_1NPT
  • +
    +
    ARA_Technology_6SPV @@ -411,4 +447,17 @@
  • ARA_Technology_5KYC
  • + + + ARA_Technology_1EVO + + 允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族获得更大的营养储存能力。 + 150 + 1.00 + 4.20 + ARA_ResearchBench + +
  • ARA_Base_Technology
  • +
    +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/Thing_Plant/ARA_Plant.xml b/1.6/1.6/Defs/Thing_Plant/ARA_Plant.xml index 4045b01..8b4ae5d 100644 --- a/1.6/1.6/Defs/Thing_Plant/ARA_Plant.xml +++ b/1.6/1.6/Defs/Thing_Plant/ARA_Plant.xml @@ -1,10 +1,9 @@ - ARA_CreepPlant - 一种只能在阿拉克涅菌毯上生长的奇特植物。 + 一种只能在阿拉克涅菌毯上生长的奇特植物,几乎不消耗肥力即可通过菌毯的营养管道茁壮生长,并担当虫群的食物来源之一。 85 4 @@ -17,8 +16,8 @@ true 10 - 0.5 - 1.0 + 0.05 + 0.05 10 10 ARA_CreepFungus @@ -29,10 +28,12 @@
  • ARA_Creep
  • 0.3~0.8 + +
  • ARA_Technology_8CPE
  • +
    - - + ARA_CreepFungus 从菌毯奇花上收获的真菌。可以直接生吃,但烹饪后味道更佳。 @@ -52,6 +53,4 @@
    - - \ No newline at end of file diff --git a/1.6/1.6/Defs/Thing_building/ARA_Building.xml b/1.6/1.6/Defs/Thing_building/ARA_Building.xml index 870bb6a..32aa68e 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_Building.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_Building.xml @@ -30,7 +30,7 @@ 0 0 - 1.25 + 0.5
  • ARA_Creep
  • Light
  • diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index 2af2a0a..7c916d9 100644 Binary files a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo and b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo differ diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json index 3376595..4ecfb45 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -1,10 +1,10 @@ { "Version": 1, - "WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\", + "WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\ara_addextraexp\\compproperties_addextraexp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_addextraexp\\compproperties_addextraexp.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\\abilities\\ara_terrainrestriction\\compabilityeffect_terrainrestriction .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_terrainrestriction\\compabilityeffect_terrainrestriction .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -23,14 +23,14 @@ { "$type": "Document", "DocumentIndex": 0, - "Title": "CompProperties_AddExtraExp.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs", - "RelativeDocumentMoniker": "Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs", - "RelativeToolTip": "Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAcAAAAAAAAAA==", + "Title": "CompAbilityEffect_TerrainRestriction .cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs", + "RelativeDocumentMoniker": "Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs", + "RelativeToolTip": "Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAEsAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-09-25T09:59:56.766Z", + "WhenOpened": "2025-09-26T03:32:39.017Z", "EditorCaption": "" } ] diff --git a/Source/ArachnaeSwarm/Abilities/ARA_TerrainRestriction/CompAbilityEffect_TerrainRestriction .cs b/Source/ArachnaeSwarm/Abilities/ARA_TerrainRestriction/CompAbilityEffect_TerrainRestriction .cs new file mode 100644 index 0000000..8873543 --- /dev/null +++ b/Source/ArachnaeSwarm/Abilities/ARA_TerrainRestriction/CompAbilityEffect_TerrainRestriction .cs @@ -0,0 +1,75 @@ +using RimWorld; +using Verse; + +namespace ArachnaeSwarm +{ + public class CompAbilityEffect_TerrainRestriction : CompAbilityEffect + { + public new CompProperties_AbilityTerrainRestriction Props => (CompProperties_AbilityTerrainRestriction)props; + + // 检查能力是否可用 + public override bool GizmoDisabled(out string reason) + { + if (!IsCasterOnValidTerrain()) + { + reason = Props.disabledReasonKey.Translate(GetTerrainList()); + return true; + } + reason = null; + return false; + } + + // 验证目标是否有效 + public override bool Valid(LocalTargetInfo target, bool throwMessages = false) + { + if (!base.Valid(target, throwMessages)) + return false; + + // 检查施法者地形 + if (!IsCasterOnValidTerrain()) + { + if (throwMessages) + { + Messages.Message(Props.casterTerrainFailMessage.Translate(GetTerrainList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false); + } + return false; + } + return true; + } + // 应用效果前的最终验证 + public override bool CanApplyOn(LocalTargetInfo target, LocalTargetInfo dest) + { + if (!IsCasterOnValidTerrain()) + { + Messages.Message(Props.casterTerrainFailMessage.Translate(GetTerrainList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false); + return false; + } + return base.CanApplyOn(target, dest); + } + // 检查施法者地形是否有效 + private bool IsCasterOnValidTerrain() + { + if (parent.pawn == null || !parent.pawn.Spawned) + return false; + + TerrainDef casterTerrain = parent.pawn.Position.GetTerrain(parent.pawn.Map); + return Props.terrainDefs != null && Props.terrainDefs.Contains(casterTerrain); + } + + // 获取地形列表的字符串表示 + private string GetTerrainList() + { + if (Props.terrainDefs == null) + return ""; + + string terrainList = ""; + foreach (var terrain in Props.terrainDefs) + { + if (terrainList.Length > 0) + terrainList += ", "; + terrainList += terrain.label; + } + return terrainList; + } + } +} diff --git a/Source/ArachnaeSwarm/Abilities/ARA_TerrainRestriction/CompProperties_TerrainRestriction.cs b/Source/ArachnaeSwarm/Abilities/ARA_TerrainRestriction/CompProperties_TerrainRestriction.cs new file mode 100644 index 0000000..73113d7 --- /dev/null +++ b/Source/ArachnaeSwarm/Abilities/ARA_TerrainRestriction/CompProperties_TerrainRestriction.cs @@ -0,0 +1,20 @@ +using RimWorld; +using System.Collections.Generic; +using Verse; +namespace ArachnaeSwarm +{ + public class CompProperties_AbilityTerrainRestriction : CompProperties_AbilityEffect + { + // 允许释放技能的地形列表 + public List terrainDefs; + // 失败消息配置 + [MustTranslate] + public string casterTerrainFailMessage = "AbilityMustBeOnTerrain"; + [MustTranslate] + public string disabledReasonKey = "AbilityDisabledNotOnTerrain"; + public CompProperties_AbilityTerrainRestriction() + { + compClass = typeof(CompAbilityEffect_TerrainRestriction); + } + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index 9466487..1a1d4d2 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -89,6 +89,8 @@ + +