diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 0a13835..d47b472 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 ca908ee..a799b7a 100644 --- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml +++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml @@ -842,7 +842,7 @@ ARA_TerrainHeal_Ability - 从菌毯的营养管线抽取生物质,快速合成治愈素治疗目标,使其在一段时间内快速愈合。 + 从菌毯的营养管线抽取生物质,快速合成治愈素治疗目标,使其在一段时间内快速愈合,只能对拥有自愈能力的阿拉克涅虫群单位使用。 ArachnaeSwarm/UI/Abilities/ARA_TerrainHeal_Ability 3800 true @@ -881,6 +881,47 @@ +
  • + +
  • ARA_HiveStrength
  • +
  • ARA_HiveStrength_Low
  • + + 目标必须是拥有自愈能力的阿拉克涅虫群 + 只能对拥有自愈能力的阿拉克涅虫群单位使用 + + +
    + + + ARA_Strengthening_Tendon_Jump + + 受到强化的肌腱可以让阿拉克涅虫群进行较短距离的跳跃。 + ArachnaeSwarm/UI/Abilities/ARA_Fighter_Invisibility_jump + 6000 + false + false + + Verb_CastAbilityJump + false + false + + 6 + false + Longjump_Jump + Longjump_Land + + true + false + false + + + CastJump + +
  • + Food + 0.1 + 营养值不足,需要进食 +
  • \ No newline at end of file diff --git a/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml b/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml index 47a773e..5771ad7 100644 --- a/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml +++ b/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml @@ -703,6 +703,14 @@ false 0 + + ARA_Pouch + + 1 + true + false + 0.01 + ARA_Genitalias @@ -734,6 +742,11 @@ 128 + + ARA_Pouchs + + 129 + ArachnaeMyrmecocystus_Body @@ -1103,6 +1116,15 @@
  • ARA_Toxic_Needles
  • + +
  • + ARA_Pouch + 0.001 + Inside + +
  • ARA_Pouchs
  • + + @@ -1469,6 +1491,15 @@ + +
  • + ARA_Pouch + 0.001 + Inside + +
  • ARA_Pouchs
  • + +
    @@ -1836,6 +1867,15 @@
  • Arms
  • + +
  • + ARA_Pouch + 0.001 + Inside + +
  • ARA_Pouchs
  • + + @@ -2208,6 +2248,15 @@
  • ARA_Toxic_Needles
  • + +
  • + ARA_Pouch + 0.001 + Inside + +
  • ARA_Pouchs
  • + +
  • @@ -2998,6 +3047,15 @@
  • ARA_Smoke_Chambers
  • + +
  • + ARA_Pouch + 0.001 + Inside + +
  • ARA_Pouchs
  • + + @@ -3352,6 +3410,15 @@
  • Torso
  • + +
  • + ARA_Pouch + 0.001 + Inside + +
  • ARA_Pouchs
  • + + diff --git a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml index e246742..3602a1b 100644 --- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml +++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml @@ -1052,4 +1052,101 @@ + + + + ARA_Skyraider_Base + + 阿拉克涅空天种是天空的统治者,她们身躯庞大但又敏捷致命,在携带大型武器的同时还拥有其他人难以企及的机动性。 + HediffWithComps + (0.6, 0.4, 0.8) + false + false + 1.0 + +
  • + 0 + + 2 + +
  • +
    + +
  • + +
  • ARA_Skyraider_jump
  • +
  • ARA_Skyraider_Hivelord
  • + + +
  • + +
  • ARA_Skyraider_Hivelord
  • + + +
    +
    + + ARA_Skyraider_Hivelord + + 使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得向敌方自动投射各种辅虫的能力。\n\n该进化过程不可逆! + ArachnaeSwarm/UI/Abilities/ARA_ShieldHead_Protector + 1800 + false + true + true + false + true + true + false + CastAbilityOnThing + + Verb_CastAbility + 1 + 12 + AcidSpray_Resolve + false + false + + True + + + +
  • + CompAbilityEffect_GiveHediff + ARA_Skyraider_Hivelord + True + true + 1 +
  • +
  • + ARA_Technology_1VTE + 需要科技 节点VTE-1"护卫者" 以解锁进化 +
  • +
    +
    + + ARA_Skyraider_Hivelord + + 这只阿拉克涅空天种已经获得拔耀,在敌方靠近时,会对敌方投掷能够通过近战施加酸烧的酸噬种辅虫。 + HediffWithComps + (0.6, 0.4, 0.8) + false + false + 1.0 + +
  • + 0.01 + + 1 + +
  • +
    + +
  • + ARA_Skyraider_Hivelord_Turret + 0 + true +
  • +
    +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml b/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml index f06691a..9dd8416 100644 --- a/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml +++ b/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml @@ -36,6 +36,7 @@ + ARA_Surgery_Install_Plasteel @@ -64,7 +65,7 @@ ARA_Plasteel_Shell_Hediff - + ARA_Plasteel_Shell_Hediff Hediff_Implant @@ -88,13 +89,13 @@ - - ARA_Surgery_Install_Huge_Stomach - - 诱发阿拉克涅虫族的定向变异,使其储存营养的胃囊增大,以储存更多食物。 + ARA_Surgery_Install_Shell_Thorn + + 为阿拉克涅虫族的甲壳植入两排棘刺腔管,它们是拥有半自主意识的器官,会对附近的敌军自动发射棘刺。此外,该变异也会加厚甲壳以获得更强的防御力。 - ARA_Huge_Stomach_Hediff + ARA_Shell_Thorn_Hediff + ARA_Shell_Thorn_Turret 正在实施定向变异 @@ -107,9 +108,252 @@ 6 + +
  • ARA_Chitin_Shell
  • +
    + + +
  • ARA_Activated_Bacterium
  • +
    +
    + ARA_Shell_Thorn_Hediff +
    + + ARA_Shell_Thorn_Hediff + + Hediff_Implant + 阿拉克涅虫族在甲壳上植入了两排棘刺腔管,只要不处于近战状态下,它们就会对靠近的敌人自动发射棘刺攻击对方。 + + ARA_Surgery_Install_Shell_Thorn + ARA_Shell_Thorn_Turret + + + true + + +
  • + + 0.2 + 0.2 + +
  • +
    + +
  • + ARA_Shell_Thorn_Turret + 0 + true +
  • +
    +
    + + ARA_Surgery_Install_Reactive_Shell + + 为阿拉克涅虫族的甲壳植入特殊的反应甲壳,它们是一次性的,可以在伤害袭来的时候弹出甲壳挡住伤害以免伤及本体。 + + ARA_Reactive_Shell_Hediff + + 正在实施定向变异 + +
  • + + +
  • ARA_Activated_Bacterium
  • + + + 6 + +
    + + +
  • ARA_Activated_Bacterium
  • +
    +
    + +
  • ARA_Chitin_Shell
  • +
    + ARA_Reactive_Shell_Hediff +
    + + ARA_Reactive_Shell_Hediff + + 阿拉克涅虫族的反应甲壳可以使其免受一次外来伤害,但是随后这块甲片就会弹开,不再给予防御力。 + ArachnaeSwarm.Hediff_DamageShield + (0.52, 1, 0.95) + + ARA_Surgery_Install_Reactive_Shell + + false + other + 1 + 1 + + + + + ARA_Surgery_Install_Strengthening_Tendon + + 为阿拉克涅虫族的腿部植入强化肌腱,允许虫族以更高的速度移动并获得短距离跳跃的能力。 + + ARA_Strengthening_Tendon_Hediff + + 正在实施定向变异 + +
  • + + +
  • ARA_Activated_Bacterium
  • + + + 6 + +
    + + +
  • ARA_Activated_Bacterium
  • +
    +
    + +
  • Leg
  • +
    + ARA_Strengthening_Tendon_Hediff +
    + + ARA_Strengthening_Tendon_Hediff + + Hediff_Implant + 阿拉克涅虫族受到强化的肌腱使得她们能高速移动,同时获得跳跃能力。 + + ARA_Surgery_Install_Plasteel + + + true + + +
  • + 0 + + 0.5 + +
  • +
    + +
  • + +
  • ARA_Strengthening_Tendon_Jump
  • + + +
    +
    + + ARA_Surgery_Install_Slide_Patagium + + 为阿拉克涅虫族的腿部植入滑行翼膜,允许虫族在菌毯上活动时获得极高的速度。 + + ARA_Slide_Patagium_Hediff + + 正在实施定向变异 + +
  • + + +
  • ARA_Activated_Bacterium
  • + + + 6 + +
    + + +
  • ARA_Activated_Bacterium
  • +
    +
    + +
  • Leg
  • +
    + ARA_Slide_Patagium_Hediff +
    + + ARA_Slide_Patagium_Hediff + + Hediff_Implant + 阿拉克涅虫族腿部的滑行翼膜可以让她们在菌毯上快速移动,但是离开菌毯后加成将立刻失效。 + + ARA_Surgery_Install_Plasteel + + + true + + 1.0 + 0.01 + +
  • + false + 0 + +
  • +
  • + 0.1 + + 0.5 + +
  • +
  • + 0.5 + + 1 + +
  • +
  • + 0.8 + + 2 + +
  • +
    + +
  • + 180 + + + + + +
  • ARA_InsectCreep
  • +
  • ARA_InsectCreepFloor
  • + + + + 0.05 + + + -2 + +
    +
    + + + + ARA_Surgery_Install_Huge_Stomach + + 诱发阿拉克涅虫族的定向变异,使其储存营养的胃囊增大,以储存更多食物。 + + ARA_Huge_Stomach_Hediff + + 正在实施定向变异
  • Stomach
  • + +
  • + + +
  • ARA_Activated_Bacterium
  • + + + 6 + +
  • ARA_Activated_Bacterium
  • @@ -118,7 +362,7 @@ ARA_Huge_Stomach_Hediff ARA_Technology_1EVO
    - + ARA_Huge_Stomach_Hediff Hediff_Implant @@ -138,6 +382,7 @@ + ARA_Surgery_Install_Cycle_Suppression @@ -166,7 +411,7 @@ ARA_Cycle_Suppression_Hediff - + ARA_Cycle_Suppression_Hediff Hediff_Implant diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml index 033ae7c..24c89ec 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml @@ -625,6 +625,10 @@
  • ARA_Surgery_Install_Plasteel
  • ARA_Surgery_Install_Huge_Stomach
  • ARA_Surgery_Install_Cycle_Suppression
  • +
  • ARA_Surgery_Install_Shell_Thorn
  • +
  • ARA_Surgery_Install_Reactive_Shell
  • +
  • ARA_Surgery_Install_Strengthening_Tendon
  • +
  • ARA_Surgery_Install_Slide_Patagium
  • @@ -1331,7 +1335,7 @@ - 3 + 2.5 9999 0 @@ -1369,6 +1373,13 @@ +
  • + +
  • ARA_Skyraider_Base
  • + + 1.0 + false +
  • diff --git a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml index 7fb3315..b589f9d 100644 --- a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml +++ b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml @@ -1050,4 +1050,87 @@ + + ARA_Shell_Thorn_Turret + + 阿拉克涅虫族甲壳上的半自主器官,可以自动发射。 + + ArachnaeSwarm/Weapon/ARA_Weapon_Empty + Graphic_Single + + + ARA_Shell_Thorn_Hediff + + + 1 + 1 + 1 + 1 + 0 + + +
  • + Verb_Shoot + true + Bullet_ARA_Shell_Thorn_Turret + 8 + 12 + 2 + Shot_TurretSniper + GunTail_Medium + 9 + 4 +
  • + + + + Bullet_ARA_Shell_Thorn_Turret + + + ArachnaeSwarm/Mote/ARA_Spike_Shell + Graphic_Single_AgeSecs + MoteGlow + (0.3,0.6) + (0.9,0.9,0.9,1) + + + Bullet + 3 + 0.75 + 40 + + + + ARA_Skyraider_Hivelord_Turret + + 阿拉克涅领主种身上的共生器官,会对敌方自动投射酸噬种辅虫。 + + ArachnaeSwarm/Weapon/ARA_Weapon_Empty + Graphic_Single + + + ARA_Skyraider_Hivelord + + + 1 + 1 + 1 + 1 + 0 + + +
  • + Verb_Shoot + true + ArachnaeBase_Race_Acid_Proj + 32 + 2 + 2 + Shot_TurretSniper + GunTail_Medium + 9 + 6 +
  • +
    +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/Thing_building/ARA_SwarmTurret.xml b/1.6/1.6/Defs/Thing_building/ARA_SwarmTurret.xml index c895139..efc893c 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_SwarmTurret.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_SwarmTurret.xml @@ -167,7 +167,6 @@ Misc2 - ARA_Gun_Beespikeshooter @@ -476,7 +475,6 @@ ArachnaeBase_Race_Acidling_Proj Projectile_SpawnsPawnZeroAge - Wula/Things/WULA_Attack_Cat/WULA_Cat_Thin_south Things/Pawn/Animal/Spelopede/Spelopede Graphic_Multi diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index 470bd16..3479fc0 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 c882f47..990db67 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -1,32 +1,7 @@ { "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\\abilities\\ara_showtemperaturerange\\compabilityeffect_abilityshowtemperaturerange.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_showtemperaturerange\\compabilityeffect_abilityshowtemperaturerange.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_hediffdefof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_hediffdefof.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\\mainharmony.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:mainharmony.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\\supercarryextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:supercarryextension.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\\floatmenuoptionprovider_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:floatmenuoptionprovider_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\\jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - } - ], + "Documents": [], "DocumentGroupContainers": [ { "Orientation": 0, @@ -34,84 +9,11 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": -1, "Children": [ { "$type": "Bookmark", "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "CompAbilityEffect_AbilityShowTemperatureRange.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", - "RelativeDocumentMoniker": "Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", - "RelativeToolTip": "Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA9AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-09-27T08:23:51.83Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "ARA_HediffDefOf.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs", - "RelativeDocumentMoniker": "ARA_HediffDefOf.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs", - "RelativeToolTip": "ARA_HediffDefOf.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-09-27T03:14:05.334Z" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "MainHarmony.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\MainHarmony.cs", - "RelativeDocumentMoniker": "MainHarmony.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\MainHarmony.cs", - "RelativeToolTip": "MainHarmony.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-09-27T03:13:34.632Z" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "SuperCarryExtension.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\SuperCarryExtension.cs", - "RelativeDocumentMoniker": "SuperCarryExtension.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\SuperCarryExtension.cs", - "RelativeToolTip": "SuperCarryExtension.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-09-27T03:13:32.751Z" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "FloatMenuOptionProvider_SuperCarry.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\FloatMenuOptionProvider_SuperCarry.cs", - "RelativeDocumentMoniker": "FloatMenuOptionProvider_SuperCarry.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\FloatMenuOptionProvider_SuperCarry.cs", - "RelativeToolTip": "FloatMenuOptionProvider_SuperCarry.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-09-27T03:13:31.262Z" - }, - { - "$type": "Document", - "DocumentIndex": 5, - "Title": "JobDriver_SuperCarry.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\JobDriver_SuperCarry.cs", - "RelativeDocumentMoniker": "JobDriver_SuperCarry.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\JobDriver_SuperCarry.cs", - "RelativeToolTip": "JobDriver_SuperCarry.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-09-27T03:13:30.358Z" } ] } diff --git a/Source/ArachnaeSwarm/Abilities/ARA_DestroyOwnBodyPart/CompAbilityEffect_DestroyOwnBodyPart.cs b/Source/ArachnaeSwarm/Abilities/ARA_DestroyOwnBodyPart/CompAbilityEffect_DestroyOwnBodyPart.cs new file mode 100644 index 0000000..d3e2359 --- /dev/null +++ b/Source/ArachnaeSwarm/Abilities/ARA_DestroyOwnBodyPart/CompAbilityEffect_DestroyOwnBodyPart.cs @@ -0,0 +1,62 @@ +using RimWorld; +using System.Collections.Generic; +using System.Linq; +using Verse; + +namespace ArachnaeSwarm +{ + public class CompAbilityEffect_DestroyOwnBodyPart : CompAbilityEffect + { + public new CompProperties_AbilityDestroyOwnBodyPart Props => (CompProperties_AbilityDestroyOwnBodyPart)props; + + public override void Apply(LocalTargetInfo target, LocalTargetInfo dest) + { + base.Apply(target, dest); + + Pawn caster = parent.pawn; + if (caster == null || caster.Dead) + return; + + // 获取要破坏的身体部位 + List partsToDestroy = GetBodyPartsToDestroy(caster); + + if (partsToDestroy.Count == 0) + return; + + // 对每个部位执行破坏 + foreach (BodyPartRecord part in partsToDestroy) + { + DestroyBodyPart(caster, part); + } + } + + // 获取要破坏的身体部位列表 + private List GetBodyPartsToDestroy(Pawn pawn) + { + List validParts = new List(); + + // 获取指定的身体部位 + foreach (BodyPartDef partDef in Props.bodyPartsToDestroy) + { + var parts = pawn.RaceProps.body.GetPartsWithDef(partDef); + foreach (BodyPartRecord part in parts) + { + // 检查部位是否已经缺失 + if (!pawn.health.hediffSet.PartIsMissing(part)) + { + validParts.Add(part); + } + } + } + + return validParts; + } + + // 实际执行身体部位的破坏 + private void DestroyBodyPart(Pawn pawn, BodyPartRecord part) + { + // 直接添加缺失部位hediff + pawn.health.AddHediff(HediffDefOf.MissingBodyPart, part); + } + } +} diff --git a/Source/ArachnaeSwarm/Abilities/ARA_DestroyOwnBodyPart/CompProperties_AbilityDestroyOwnBodyPart.cs b/Source/ArachnaeSwarm/Abilities/ARA_DestroyOwnBodyPart/CompProperties_AbilityDestroyOwnBodyPart.cs new file mode 100644 index 0000000..94a864c --- /dev/null +++ b/Source/ArachnaeSwarm/Abilities/ARA_DestroyOwnBodyPart/CompProperties_AbilityDestroyOwnBodyPart.cs @@ -0,0 +1,17 @@ +using RimWorld; +using System.Collections.Generic; +using Verse; + +namespace ArachnaeSwarm +{ + public class CompProperties_AbilityDestroyOwnBodyPart : CompProperties_AbilityEffect + { + // 要破坏的身体部位列表 + public List bodyPartsToDestroy; + + public CompProperties_AbilityDestroyOwnBodyPart() + { + compClass = typeof(CompAbilityEffect_DestroyOwnBodyPart); + } + } +} diff --git a/Source/ArachnaeSwarm/Abilities/ARA_HediffRestriction/CompAbilityEffect_HediffRestriction.cs b/Source/ArachnaeSwarm/Abilities/ARA_HediffRestriction/CompAbilityEffect_HediffRestriction.cs new file mode 100644 index 0000000..e0b9cea --- /dev/null +++ b/Source/ArachnaeSwarm/Abilities/ARA_HediffRestriction/CompAbilityEffect_HediffRestriction.cs @@ -0,0 +1,146 @@ +using RimWorld; +using Verse; + +namespace ArachnaeSwarm +{ + public class CompAbilityEffect_HediffRestriction : CompAbilityEffect + { + public new CompProperties_AbilityHediffRestriction Props => (CompProperties_AbilityHediffRestriction)props; + + // 检查能力是否可用 + public override bool GizmoDisabled(out string reason) + { + if (!IsTargetValid(null)) // 对Gizmo检查,没有具体目标 + { + reason = Props.disabledReasonKey.Translate(GetHediffList()); + return true; + } + reason = null; + return false; + } + + // 验证目标是否有效 + public override bool Valid(LocalTargetInfo target, bool throwMessages = false) + { + if (!base.Valid(target, throwMessages)) + return false; + + // 检查目标hediff条件 + if (!IsTargetValid(target)) + { + if (throwMessages) + { + Messages.Message(Props.targetHediffFailMessage.Translate(GetHediffList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false); + } + return false; + } + return true; + } + + // 应用效果前的最终验证 + public override bool CanApplyOn(LocalTargetInfo target, LocalTargetInfo dest) + { + if (!IsTargetValid(target)) + { + Messages.Message(Props.targetHediffFailMessage.Translate(GetHediffList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false); + return false; + } + return base.CanApplyOn(target, dest); + } + + // 检查目标是否满足hediff条件 + private bool IsTargetValid(LocalTargetInfo target) + { + // 如果目标不是pawn,始终允许(如地面、物品等) + Pawn targetPawn = target.Thing as Pawn; + if (targetPawn == null) + return true; + + // 检查必须有的hediff + if (Props.requiredHediff != null) + { + if (!targetPawn.health.hediffSet.HasHediff(Props.requiredHediff)) + return false; + } + + // 检查禁止的hediff + if (Props.forbiddenHediff != null) + { + if (targetPawn.health.hediffSet.HasHediff(Props.forbiddenHediff)) + return false; + } + + // 检查必须有的hediff列表 + if (Props.requiredHediffs != null && Props.requiredHediffs.Count > 0) + { + bool hasAnyRequired = false; + foreach (var hediff in Props.requiredHediffs) + { + if (targetPawn.health.hediffSet.HasHediff(hediff)) + { + hasAnyRequired = true; + break; + } + } + if (!hasAnyRequired) + return false; + } + + // 检查禁止的hediff列表 + if (Props.forbiddenHediffs != null && Props.forbiddenHediffs.Count > 0) + { + foreach (var hediff in Props.forbiddenHediffs) + { + if (targetPawn.health.hediffSet.HasHediff(hediff)) + return false; + } + } + + return true; + } + + // 获取hediff列表的字符串表示 + private string GetHediffList() + { + string hediffList = ""; + + // 添加必须有的hediff + if (Props.requiredHediff != null) + { + hediffList += Props.requiredHediff.label; + } + else if (Props.requiredHediffs != null && Props.requiredHediffs.Count > 0) + { + foreach (var hediff in Props.requiredHediffs) + { + if (hediffList.Length > 0) + hediffList += ", "; + hediffList += hediff.label; + } + } + + // 添加禁止的hediff + if (Props.forbiddenHediff != null) + { + if (hediffList.Length > 0) + hediffList += "; "; + hediffList += "不能有: " + Props.forbiddenHediff.label; + } + else if (Props.forbiddenHediffs != null && Props.forbiddenHediffs.Count > 0) + { + if (hediffList.Length > 0) + hediffList += "; "; + hediffList += "不能有: "; + foreach (var hediff in Props.forbiddenHediffs) + { + if (hediffList.EndsWith("不能有: ")) + hediffList += hediff.label; + else + hediffList += ", " + hediff.label; + } + } + + return hediffList; + } + } +} diff --git a/Source/ArachnaeSwarm/Abilities/ARA_HediffRestriction/CompProperties_AbilityHediffRestriction.cs b/Source/ArachnaeSwarm/Abilities/ARA_HediffRestriction/CompProperties_AbilityHediffRestriction.cs new file mode 100644 index 0000000..381996c --- /dev/null +++ b/Source/ArachnaeSwarm/Abilities/ARA_HediffRestriction/CompProperties_AbilityHediffRestriction.cs @@ -0,0 +1,33 @@ +using RimWorld; +using System.Collections.Generic; +using Verse; + +namespace ArachnaeSwarm +{ + public class CompProperties_AbilityHediffRestriction : CompProperties_AbilityEffect + { + // 必须有的hediff(单个) + public HediffDef requiredHediff; + + // 必须有的hediff(多个,满足任意一个即可) + public List requiredHediffs; + + // 禁止的hediff(单个) + public HediffDef forbiddenHediff; + + // 禁止的hediff(多个,有任意一个就不行) + public List forbiddenHediffs; + + // 失败消息配置 + [MustTranslate] + public string targetHediffFailMessage = "AbilityTargetHediffRestriction"; + + [MustTranslate] + public string disabledReasonKey = "AbilityDisabledHediffRestriction"; + + public CompProperties_AbilityHediffRestriction() + { + compClass = typeof(CompAbilityEffect_HediffRestriction); + } + } +} diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index b6fb090..40c27db 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -73,8 +73,12 @@ + + + +