diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 31cc85f..4be69bd 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 327f160..499156f 100644 --- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml +++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml @@ -3,18 +3,18 @@ ARA_BindDrone - 使用信息素标记一只阿拉克涅督虫,受到标记的督虫和其麾下的辅虫将誓死效忠于女皇种,并与其建立心灵链接。\n\n除了手动链接外,女皇种也会每60秒尝试自动链接所有未链接的阿拉克涅督虫,此类链接和手动链接不一样,不需要目视。 + 使用信息素标记一只阿拉克涅督虫(包括野生虫群子个体),受到标记的督虫和其麾下的辅虫将誓死效忠于女皇种,并与其建立心灵链接。\n\n除了手动链接外,女皇种也会每60秒尝试自动链接己方所有未链接的阿拉克涅督虫,此类链接和手动链接不一样,不需要目视。 ArachnaeSwarm/UI/Abilities/ARA_BindDrone Misc1 CastAbilityOnThing true - 60 + 600 Verb_CastAbility - 0 - 99 + 1 + 30 true false @@ -863,6 +863,45 @@ + + ARA_FireSpew + + 爆燃种经过短暂蓄力后,向前大范围地喷出火焰。这种火焰喷射距离不是太长,但是可以形成一道致密的火墙。 + ArachnaeSwarm/UI/Abilities/ARA_FireSpew + 5000 + true + true + true + FireSpew_Warmup + 3 + true + + Verb_CastAbility + 10 + 1 + FireSpew_Resolve + + true + + + +
  • + 饮食 + true + Food + 0.25 + 营养值不足,需要进食 +
  • +
  • + 10 + 35 + Filth_FlammableBile + Fire_Spew + true +
  • +
    +
    + ARA_TerrainHeal_Ability @@ -1093,8 +1132,8 @@ AcidSpray_Warmup Verb_CastAbility - -1 - 0.1 + 24 + 0 AcidSpray_Resolve false false @@ -1124,6 +1163,7 @@ 1000 3 true + false false false @@ -1296,7 +1336,7 @@ 只要一声令下,阿拉克涅虫族随时可以为了虫巢的大业立刻死去 ArachnaeSwarm/UI/Abilities/ARA_Suicide_Ability 1 - true + false 9900 true AcidSpray_Warmup diff --git a/1.6/1.6/Defs/DamageDefs/ARA_Damage_Freeze.xml b/1.6/1.6/Defs/DamageDefs/ARA_Damage_Freeze.xml index 5737d0a..e42b26f 100644 --- a/1.6/1.6/Defs/DamageDefs/ARA_Damage_Freeze.xml +++ b/1.6/1.6/Defs/DamageDefs/ARA_Damage_Freeze.xml @@ -31,10 +31,12 @@
  • (0.35, 0.65)
  • (0.5, 0.5)
  • (0.65, 0.35)
  • -
  • (0.85, 0.15)
  • +
  • (0.85, 0.15)
  • +
  • (1.25, 0.01)
  • +
  • (2.5, 0.001)
  • - 1.0 + 0.25 diff --git a/1.6/1.6/Defs/EventDefs/ARA_Loop_Attack_EventDef.xml b/1.6/1.6/Defs/EventDefs/ARA_Loop_Attack_EventDef.xml index 21a59fa..1ee7017 100644 --- a/1.6/1.6/Defs/EventDefs/ARA_Loop_Attack_EventDef.xml +++ b/1.6/1.6/Defs/EventDefs/ARA_Loop_Attack_EventDef.xml @@ -81,43 +81,8 @@ Combat 100 - 20 - 5 - - - - -
  • - 10000 - ARA_Hostile_Hive - ImmediateAttack - EdgeWalkIn - Combat - -
  • - Combat - 100 - - 20 - 3 - -
  • - - -
  • - 10000 - ARA_Hostile_Hive - ImmediateAttack - EdgeWalkIn - Combat - -
  • - Combat - 100 - - 20 - 3 - 7 + 7 + 3
  • diff --git a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml index 495a6f9..1093200 100644 --- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml +++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml @@ -345,6 +345,35 @@ false false 1.0 + +
  • + PawnRenderNode_AttachmentHead + PawnRenderNodeWorker_FlipWhenCrawling + ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_Stomach + Body + false + false + Fresh, Rotting + + + (0, 0, -0.05) + 120 + + + (0, 0, -0.05) + + + (0, 0, -0.05) + + + (0, 0, -0.05) + + + -40 + + +
  • +
    + + true + + Chemfuel + + 20 + + + 1 + + 1 + 0 + + + false + + true + + true + + 20 + + + true + + false + +
  • + +
  • ARA_FireSpew
  • + + + + @@ -795,9 +997,41 @@ false false 1.0 + +
  • + PawnRenderNode_AttachmentHead + PawnRenderNodeWorker_FlipWhenCrawling + ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_ShieldBody + Body + false + false + Fresh, Rotting + + + (0, 0, 0) + + + (0, 0, 0) + + + (0, 0, 0) + + + (0, 0, 0) + + + 40 + + +
  • +
  • 0 + + 0.4 + 0.5 +
  • @@ -849,11 +1083,13 @@
  • ARA_ShieldHead_Protector
  • +
  • ARA_ShieldHead_HiveBuilder
  • ARA_ShieldHead_Protector
  • +
  • ARA_ShieldHead_HiveBuilder
  • @@ -925,11 +1161,41 @@ false false 1.0 + +
  • + PawnRenderNode_AttachmentHead + PawnRenderNodeWorker_FlipWhenCrawling + ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_ShieldBody + Body + false + false + Fresh, Rotting + + + (0, 0, 0) + + + (0, 0, 0) + + + (0, 0, 0) + + + (0, 0, 0) + + + 800 + + +
  • +
  • - 0.01 + 0 1 + 0.4 + 0.5
  • @@ -941,6 +1207,116 @@
    + + ARA_ShieldHead_HiveBuilder + + 使盾头种发生内驱性进化,以防御能力为代价,使其获得更强大的甲壳素产出能力和建造技能。\n\n该进化过程不可逆! + ArachnaeSwarm/UI/Abilities/ARA_ShieldHead_HiveBuilder + 1800 + false + true + true + false + false + true + false + CastAbilityOnThing + + Verb_CastAbility + 1 + 12 + AcidSpray_Resolve + false + false + + True + + + +
  • + CompAbilityEffect_GiveHediff + ARA_ShieldHead_HiveBuilder + True + true + 1 +
  • +
  • + +
  • + Construction + Major + 350000 +
  • + + +
  • + ARA_Technology_3CON + 需要科技 节点CON-3"建造者" 以解锁进化 +
  • +
    +
    + + ARA_ShieldHead_HiveBuilder + + 这只阿拉克涅盾头种已经获得拔耀,获得了强大的产出能力和建造能力。一只盾头种每天产出25份甲壳素。 + HediffWithComps + (0.6, 0.4, 0.8) + false + false + 1.0 + +
  • + 0 +
  • +
    + +
  • + + + true + + ARA_Carapace + + 25 + + + 1 + + 1 + 0 + + + false + + true + + true + + 20 + + + true + + false +
  • +
    +
    diff --git a/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml b/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml index b266aa8..f0cc427 100644 --- a/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml +++ b/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml @@ -22,7 +22,7 @@ - Medieval + Industrial
  • Surface
  • @@ -30,12 +30,12 @@
  • (0.6, 0.5, 0.9)
  • -
  • RandomDrop
  • - --> +
  • (300, 0)
  • @@ -47,11 +47,24 @@
  • - + 100 Combat - 7 - 3 + 3 + +
  • +
  • + 80 + Combat + + 3 + +
  • +
  • + 80 + Combat + + 5
  • @@ -76,7 +89,7 @@ true true - + false false @@ -97,8 +110,8 @@ -2000~2000 1 900 - ActiveDropPodMechanoid - DropPodIncomingMechanoidRapid + ARA_ActiveDropPod + ARA_DropPodIncoming
  • Children
  • diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Damage.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Damage.xml index f087aa2..7ef3f81 100644 --- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Damage.xml +++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Damage.xml @@ -473,7 +473,7 @@ ARA_CryoShock - 目标正处于急冻状态。这种状态将导致目标身体结构极度脆弱。当此效果加深时,足以摧毁其身体部位的“冷冻”伤害阈值将会显著降低。 + 目标正处于急冻状态。这种状态将导致目标身体结构极度脆弱。当此效果加深时,其身体部位有可能会被冷冻伤害直接摧毁。 (1, 1, 0.8) ArachnaeSwarm.HediffCurseFlame @@ -493,11 +493,11 @@
  • - + true
  • - + 0.2 40 @@ -513,7 +513,7 @@
  • - + 0.35 80 @@ -529,7 +529,7 @@
  • - + 0.5 120 @@ -545,7 +545,7 @@
  • - + 0.65 160 @@ -561,7 +561,7 @@
  • - + 0.85 200 @@ -576,6 +576,38 @@
  • +
  • + + 1.25 + + 500 + + + 0.01 + + +
  • + Consciousness + -0.50 +
  • + + +
  • + + 2.5 + + 1000 + + + 0.001 + + +
  • + Consciousness + -0.50 +
  • + +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Mutants.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Mutants.xml index 872c1b3..1eb66ff 100644 --- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Mutants.xml +++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Mutants.xml @@ -163,6 +163,17 @@
  • 0 0 + 0 + +
  • Mood
  • +
  • Joy
  • +
  • Beauty
  • +
  • Comfort
  • +
  • Outdoors
  • +
  • Indoors
  • +
  • DrugDesire
  • +
  • RoomSize
  • + 1.5 0 diff --git a/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml b/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml deleted file mode 100644 index b896818..0000000 --- a/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml +++ /dev/null @@ -1,205 +0,0 @@ - - - - - ARA_SpecialAttack - ARA_Hostile_Hive - -
  • - 0 - 800 - ARA_WavePool_Stage1 -
  • -
    - 3 - - Linear - 1.2 - -
    - - - ARA_WavePool_Stage1 - -
  • ARA_Wave_Scout_Patrol
  • -
  • ARA_Wave_Assault_Team
  • -
  • ARA_Wave_Acid_Swarm
  • -
  • ARA_Wave_Heavy_Defense
  • -
  • ARA_Wave_Mixed_Forces
  • -
    - -
  • - ARA_Wave_Scout_Patrol - 0.25 -
  • -
  • - ARA_Wave_Assault_Team - 0.25 -
  • -
  • - ARA_Wave_Acid_Swarm - 0.20 -
  • -
  • - ARA_Wave_Heavy_Defense - 0.15 -
  • -
  • - ARA_Wave_Mixed_Forces - 0.15 -
  • -
    -
    - - - - ARA_Wave_Scout_Patrol - - 一支小型侦察队伍,主要由远程单位组成,进行骚扰射击 - -
  • CenterDrop
  • -
    - -
  • - ARA_Raid_Shooter - 0.7 - 2 - 6 - true -
  • -
  • - ARA_Raid_Assault - 0.3 - 1 - 3 -
  • -
    -
    - - - ARA_Wave_Assault_Team - - 以近战单位为主的快速突击队伍,擅长冲锋陷阵 - -
  • CenterDrop
  • -
    - -
  • - ARA_Raid_Assault - 0.6 - 3 - 8 - true -
  • -
  • - ARA_Raid_Shooter - 0.4 - 2 - 4 -
  • -
    -
    - - - ARA_Wave_Acid_Swarm - - 大量酸噬种辅虫组成的虫海战术,数量庞大但个体脆弱 - -
  • CenterDrop
  • -
    - -
  • - ARA_Raid_AcidSwarm - 0.8 - 8 - 20 - true -
  • -
  • - ARA_Raid_Assault - 0.2 - 2 - 5 -
  • -
    -
    - - - ARA_Wave_Heavy_Defense - - 以盾头种为主的防御型队伍,移动缓慢但防御力强 - -
  • CenterDrop
  • -
    - -
  • - ARA_Raid_Heavy - 0.5 - 2 - 6 - true -
  • -
  • - ARA_Raid_Shooter - 0.3 - 2 - 4 -
  • -
  • - ARA_Raid_Acidling - 0.2 - 3 - 8 -
  • -
    -
    - - - ARA_Wave_Mixed_Forces - - 均衡配置的混合部队,包含各种单位类型 - -
  • CenterDrop
  • -
    - -
  • - ARA_Raid_Assault - 0.3 - 2 - 5 -
  • -
  • - ARA_Raid_Shooter - 0.3 - 2 - 5 -
  • -
  • - ARA_Raid_Heavy - 0.2 - 1 - 3 -
  • -
  • - ARA_Raid_AcidSwarm - 0.2 - 3 - 6 - true -
  • -
    -
    - - - - ARA_Raid_Incident - - ArachnaeSwarm.IncidentWorker_CustomRaid - Special - 5 - 0 - -
  • Map_PlayerHome
  • -
    -
    -
    diff --git a/1.6/1.6/Defs/PawnKindDef/ARA_Hostile_Hive_PawnKinds.xml b/1.6/1.6/Defs/PawnKindDef/ARA_Hostile_Hive_PawnKinds.xml index c0447ee..417102f 100644 --- a/1.6/1.6/Defs/PawnKindDef/ARA_Hostile_Hive_PawnKinds.xml +++ b/1.6/1.6/Defs/PawnKindDef/ARA_Hostile_Hive_PawnKinds.xml @@ -1,144 +1,85 @@ - - - 150 + + ArachnaeNode_Race_Fighter_Enermy true false 0 true true - 99~99 - 99~99 1 true - 2 - 1 false ARA_Hostile_Hive - 0 - -
  • Violent
  • -
    - -
  • - ARA_Creep - 1.5 -
  • -
    -
    - - - - - ARA_Raid_Assault - - ArachnaeNode_Race_Fighter - 200 -
  • ARA_Armed_Organ_Melee
  • +
  • ARA_Armed_Organ_T1
  • ARA_Inner
  • ARA_Clothes
  • - 200 - 50000 - -
  • ARA_BaseRace_Acid_Launcher
  • -
    + 1000 + 5000 + 250
    - - - ARA_Raid_Shooter - - ArachnaeNode_Race_Fighter - 180 + + ArachnaeNode_Race_ShieldHead_Enermy + true + false + 0 + true + true + 1 + true + false + ARA_Hostile_Hive -
  • ARA_Armed_Organ_Small_Ranged_Needle
  • -
  • ARA_Armed_Organ_Small_Ranged_Acid
  • +
  • ARA_Armed_Organ_T1
  • ARA_Inner
  • +
  • ARA_Clothes
  • - 150 - 50000 - 0 - -
  • ARA_BaseRace_Acid_Launcher
  • -
    + 1000 + 5000 + 330
    + + ArachnaeNode_Race_Praetorian_Enermy + true + false + 0 + true + true + 1 + true + false + ARA_Hostile_Hive + +
  • ARA_Armed_Organ_T3
  • +
    + +
  • ARA_Inner
  • +
  • ARA_Clothes
  • +
    + 1000 + 5000 + 700 +
    + - - ARA_Raid_AcidSwarm - - 80 - 0 - 0 - 0 - ArachnaeBase_Race_Acidcut - -
  • - - ArachnaeSwarm/Things/ARA_Acidcut/Bodies/Naked_Thin - 1 - - (0.4, 0.5, 0.37) - (0,0,-0.15) - - - - Things/Pawn/Animal/Spelopede/Dessicated_Spelopede - 1 - -
  • -
    -
    - - - - - ARA_Raid_Heavy - - ArachnaeNode_Race_ShieldHead - 350 - -
  • ARA_Armed_Organ_Melee
  • -
  • ARA_Armed_Organ_Small_Ranged_Needle
  • -
  • ARA_Armed_Organ_Small_Ranged_Acid
  • -
    - -
  • ARA_Inner
  • -
  • ARA_Clothes
  • -
    - 400 - 1200 - 0 -
    - - - ARA_Raid_Acidling - - ArachnaeBase_Race_Acidling + + ArachnaeBase_Race_Acidcut_Enermy 50 0 0 0 - -
  • - - ArachnaeSwarm/Things/ARA_Acidling/Bodies/Naked_Thin - 1 - - (0.4, 0.5, 0.37) - (0,0,-0.15) - - - - Things/Pawn/Animal/Spelopede/Dessicated_Spelopede - 1 - -
  • -
    +
    + + ArachnaeBase_Race_Acidling_Enermy + 150 + 0 + 0 + 0
    diff --git a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml index dccb76e..6785fd2 100644 --- a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml +++ b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml @@ -217,7 +217,7 @@ 0 - + ArachnaeNode_Race_ShieldHead ArachnaeNode_Race_ShieldHead @@ -282,7 +282,7 @@ 0 - + ArachnaeNode_Race_Fighter ArachnaeNode_Race_Fighter @@ -390,7 +390,7 @@ 0 - + ArachnaeNode_Race_Praetorian ArachnaeNode_Race_Praetorian @@ -520,7 +520,7 @@ - + ArachnaeBase_Race_Acidcut ArachnaeBase_Race_Acidcut @@ -541,7 +541,7 @@ - + ArachnaeBase_Race_Acidling ArachnaeBase_Race_Acidling diff --git a/1.6/1.6/Defs/PawnsArrivalModeDefs/ARA_PawnsArrivalModes.xml b/1.6/1.6/Defs/PawnsArrivalModeDefs/ARA_PawnsArrivalModes.xml new file mode 100644 index 0000000..915ae0f --- /dev/null +++ b/1.6/1.6/Defs/PawnsArrivalModeDefs/ARA_PawnsArrivalModes.xml @@ -0,0 +1,38 @@ + + + + ARA_EdgeDropGroups + PawnsArrivalModeWorker_EdgeDropGroups + +
  • Surface
  • +
  • Orbit
  • +
    + 0.1 + + +
  • (0, 1)
  • +
  • (99999, 1)
  • +
    +
    + +
  • + ARA_Hostile_Hive + + +
  • (0, 1)
  • +
  • (99999, 1)
  • + + + +
    + + Medieval + 一些来自 {1} 的 {0} 正在通过气囊种空降到附近。 + Several separate groups of friendly {0} from {1} have arrived in transport pods nearby. + Several separate groups of {0_pawnsPluralDef} will arrive in transport pods. +
    +
    diff --git a/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml b/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml index 11ac680..c18dbd9 100644 --- a/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml +++ b/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml @@ -608,7 +608,7 @@ ARA_Technology_1MED - 允许蜜罐种进行定向进化,以强化其自身的医疗能力并解锁孵化医药茧的技能。\n\n阿拉克涅虫群所有需要蓝图的科技,其蓝图只能通过女皇种的基因试验卵获取。 + 允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以强化其自身的医疗能力并解锁孵化医药茧的技能。\n\n阿拉克涅虫群所有需要蓝图的科技,其蓝图只能通过女皇种的基因试验卵获取。 1200 5.50 2.10 @@ -660,6 +660,30 @@
  • ARA_Technology_2WMT
  • + + ARA_Technology_3CON + + 允许盾头种进行定向进化,抛弃其防御能力以换取更强大的甲壳素产出能力和建造建筑的能力。\n\n阿拉克涅虫群所有需要蓝图的科技,其蓝图只能通过女皇种的基因试验卵获取。 + 300 + 2.00 + 2.70 + ARA_ResearchBench + +
  • ARA_Base_Technology
  • +
    +
    + + ARA_Technology_8FEL + + 允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以获得防御力增强、生产化合燃料和喷射火焰的能力。\n\n阿拉克涅虫群所有需要蓝图的科技,其蓝图只能通过女皇种的基因试验卵获取。 + 300 + 2.00 + 2.10 + ARA_ResearchBench + +
  • ARA_Base_Technology
  • +
    +
    ARA_Technology_1EVO 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 fc8add0..3d11687 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml @@ -4,6 +4,7 @@ + 2~3 0 @@ -403,15 +404,10 @@
  • BodyPurist
  • Cannibal
  • -
  • CreepyBreathing
  • DislikesWomen
  • Gourmand
  • -
  • QuickSleeper
  • Wimp
  • -
  • Beauty
  • DrugDesire
  • -
  • Immunity
  • -
  • PsychicSensitivity
  • @@ -624,6 +620,8 @@ +
  • ARA_CureBloodRot
  • +
  • ARA_CureAcid
  • RemovePorcupineQuill
  • SurgicalInspection
  • ARA_Surgery_Install_Plasteel
  • @@ -723,7 +721,7 @@ - +
    @@ -886,7 +884,7 @@ -
  • + @@ -949,8 +947,8 @@ - 0.5 - 0.75 + 0.1 + 0.25 0.2 @@ -1942,6 +1940,7 @@ true +
  • ARA_RW_Large_Arc_Gun
  • ARA_RW_Acid_Mortar
  • ARA_RW_Basic_SniperCannon_Gun
  • ARA_RW_Basic_FireSpewer_Gun
  • diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml index f9303ad..b61550d 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml @@ -713,6 +713,8 @@
  • RemovePorcupineQuill
  • +
  • ARA_CureBloodRot
  • +
  • ARA_CureAcid
  • diff --git a/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_PowerArmor.xml b/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_PowerArmor.xml index df15eab..4df1d34 100644 --- a/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_PowerArmor.xml +++ b/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_PowerArmor.xml @@ -20,8 +20,9 @@ true 0.5 false + 0.5 (1,1) - + ARA_Buildings
  • ARA_Technology_2SYM
  • @@ -111,7 +112,7 @@ ArachnaeSwarm/Building/ARA_Building_SpiderOne_south - +
  • ARA_PowerArmor
  • 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 c838d49..427b3ea 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 @@ -2294,7 +2294,7 @@ 1.5 ARA_Damage_Freeze 5 - Explosion_Stun + 0 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 77defab..0d1df17 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_SwarmTurret.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_SwarmTurret.xml @@ -373,10 +373,10 @@ Graphic_Single - 0.60 - 0.70 - 0.65 - 0.55 + 0.4 + 0.7 + 0.86 + 0.9 2.2 diff --git a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ArachnaeSwarm_Keys.xml b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ArachnaeSwarm_Keys.xml index 98ea168..82f1be2 100644 --- a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ArachnaeSwarm_Keys.xml +++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ArachnaeSwarm_Keys.xml @@ -10,7 +10,11 @@ 目标 {0} 不是阿拉克涅的督虫,或不需要链接。 目标 {0} 已绑定到 {1}。 施法者 {0} 不是阿拉克涅的女皇种。 - + + 成功将 {0} 转换为我方子个体并绑定到 {1} + 转换 {0} 成功,但绑定到 {1} 失败 + {0} 不是阿拉克涅的女皇种 + 目标必须是类人生物。 {0} 已被寄生。 diff --git a/1.6/1.6/Patches/ARA_SearchAndDestroy.xml b/1.6/1.6/Patches/ARA_SearchAndDestroy.xml new file mode 100644 index 0000000..47396ac --- /dev/null +++ b/1.6/1.6/Patches/ARA_SearchAndDestroy.xml @@ -0,0 +1,29 @@ + + + + +
  • Search and Destroy (Continued)
  • +
    + + Defs/ThinkTreeDef[defName = "ARA_Humanlike"]/thinkRoot[@Class ="ThinkNode_Priority"]/subNodes/li[@Class="ThinkNode_ConditionalColonist"] + + +
  • + +
  • + + +
  • + 200 + 72 +
  • +
  • + +
  • + + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/1.6/Patches/Patch.xml b/1.6/1.6/Patches/Patch.xml new file mode 100644 index 0000000..93fa24d --- /dev/null +++ b/1.6/1.6/Patches/Patch.xml @@ -0,0 +1,10 @@ + + + + /Defs/ThingDef[@Name="Human"]/recipes + +
  • ARA_CureAcid
  • +
  • ARA_CureBloodRot
  • +
    +
    +
    \ No newline at end of file diff --git a/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachFuel_east.png b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachFuel_east.png new file mode 100644 index 0000000..57f096a Binary files /dev/null and b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachFuel_east.png differ diff --git a/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachFuel_north.png b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachFuel_north.png new file mode 100644 index 0000000..f27bade Binary files /dev/null and b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachFuel_north.png differ diff --git a/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachFuel_south.png b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachFuel_south.png new file mode 100644 index 0000000..6f4b1ab Binary files /dev/null and b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachFuel_south.png differ diff --git a/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachMedicine_east.png b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachMedicine_east.png new file mode 100644 index 0000000..184900d Binary files /dev/null and b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachMedicine_east.png differ diff --git a/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachMedicine_north.png b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachMedicine_north.png new file mode 100644 index 0000000..4c4dc55 Binary files /dev/null and b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachMedicine_north.png differ diff --git a/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachMedicine_south.png b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachMedicine_south.png new file mode 100644 index 0000000..6f4b1ab Binary files /dev/null and b/Content/Textures/ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_StomachMedicine_south.png differ diff --git a/Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_FireSpew.png b/Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_FireSpew.png new file mode 100644 index 0000000..54e8db9 Binary files /dev/null and b/Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_FireSpew.png differ diff --git a/Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_Myrmecocystus_Production_Fuel.png b/Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_Myrmecocystus_Production_Fuel.png new file mode 100644 index 0000000..82adc03 Binary files /dev/null and b/Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_Myrmecocystus_Production_Fuel.png differ diff --git a/Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_ShieldHead_HiveBuilder.png b/Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_ShieldHead_HiveBuilder.png new file mode 100644 index 0000000..2d56e18 Binary files /dev/null and b/Content/Textures/ArachnaeSwarm/UI/Abilities/ARA_ShieldHead_HiveBuilder.png differ diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index 62e10fb..2870b6b 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 f5a7b14..a0ab510 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -2,6 +2,22 @@ "Version": 1, "WorkspaceRootPath": "E:\\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\\hediffs\\ara_hivemind\\hediff_hivemindmaster.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\hediff_hivemindmaster.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\ara_hivemind\\hediff_hiveminddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\hediff_hiveminddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\ara_hivemind\\compabilityeffect_binddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\compabilityeffect_binddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\ara_hivemind\\compproperties_abilitybinddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\compproperties_abilitybinddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, { "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\verbs\\verb_shootarc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\verb_shootarc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -14,21 +30,73 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": 2, "Children": [ { "$type": "Bookmark", "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Hediff_HiveMindDrone.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs", + "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs", + "RelativeToolTip": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs", + "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-10-20T17:26:14.842Z", + "EditorCaption": "" + }, { "$type": "Document", "DocumentIndex": 0, + "Title": "Hediff_HiveMindMaster.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs", + "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs", + "RelativeToolTip": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs", + "ViewState": "AgIAAHwAAAAAAAAAAAAkwJwAAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-10-20T17:25:29.183Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "CompAbilityEffect_BindDrone.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", + "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", + "RelativeToolTip": "Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", + "ViewState": "AgIAADYAAAAAAAAAAAAAwE8AAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-10-20T17:10:14.403Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "CompProperties_AbilityBindDrone.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\CompProperties_AbilityBindDrone.cs", + "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\CompProperties_AbilityBindDrone.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\CompProperties_AbilityBindDrone.cs", + "RelativeToolTip": "Hediffs\\ARA_HiveMind\\CompProperties_AbilityBindDrone.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA/AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-10-20T17:10:09.072Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, "Title": "Verb_ShootArc.cs", "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Verb_ShootArc.cs", "RelativeDocumentMoniker": "Verbs\\Verb_ShootArc.cs", "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Verb_ShootArc.cs", "RelativeToolTip": "Verbs\\Verb_ShootArc.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAAAAAAAAAAAAADwvw4AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-10-19T13:10:19.942Z", "EditorCaption": "" diff --git a/Source/ArachnaeSwarm/Hediffs/ARA_HiveMind/CompAbilityEffect_BindDrone.cs b/Source/ArachnaeSwarm/Hediffs/ARA_HiveMind/CompAbilityEffect_BindDrone.cs index 12d9a05..2d39566 100644 --- a/Source/ArachnaeSwarm/Hediffs/ARA_HiveMind/CompAbilityEffect_BindDrone.cs +++ b/Source/ArachnaeSwarm/Hediffs/ARA_HiveMind/CompAbilityEffect_BindDrone.cs @@ -15,6 +15,17 @@ namespace ArachnaeSwarm if (masterPawn != null && dronePawn != null) { + // 检查目标是否有 ARA_NonPlayer_HiveMindDroneHediff + Hediff nonPlayerDroneHediff = dronePawn.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("ARA_NonPlayer_HiveMindDroneHediff")); + + if (nonPlayerDroneHediff != null) + { + // 处理非玩家派系的无人机 + HandleNonPlayerDroneConversion(dronePawn, masterPawn); + return; + } + + // 原有的玩家派系无人机绑定逻辑 Hediff_HiveMindMaster masterHediff = masterPawn.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("ARA_HiveMindMaster")) as Hediff_HiveMindMaster; if (masterHediff != null) { @@ -34,6 +45,56 @@ namespace ArachnaeSwarm } } + /// + /// 处理非玩家派系无人机的转换 + /// + private void HandleNonPlayerDroneConversion(Pawn dronePawn, Pawn masterPawn) + { + // 1. 改变阵营 + if (dronePawn.Faction != masterPawn.Faction) + { + dronePawn.SetFaction(masterPawn.Faction, masterPawn); + Log.Message($"Converted {dronePawn.LabelShort} from {dronePawn.Faction?.Name ?? "null"} to {masterPawn.Faction?.Name}"); + } + + // 2. 移除 ARA_NonPlayer_HiveMindDroneHediff + Hediff nonPlayerHediff = dronePawn.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("ARA_NonPlayer_HiveMindDroneHediff")); + if (nonPlayerHediff != null) + { + dronePawn.health.RemoveHediff(nonPlayerHediff); + Log.Message($"Removed ARA_NonPlayer_HiveMindDroneHediff from {dronePawn.LabelShort}"); + } + + // 3. 添加 ARA_HiveMindDrone + HediffDef hiveMindDroneDef = HediffDef.Named("ARA_HiveMindDrone"); + if (hiveMindDroneDef != null && !dronePawn.health.hediffSet.HasHediff(hiveMindDroneDef)) + { + dronePawn.health.AddHediff(hiveMindDroneDef); + Log.Message($"Added ARA_HiveMindDrone to {dronePawn.LabelShort}"); + } + + // 4. 尝试绑定到主节点 + Hediff_HiveMindMaster masterHediff = masterPawn.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("ARA_HiveMindMaster")) as Hediff_HiveMindMaster; + if (masterHediff != null) + { + if (masterHediff.TryBindDrone(dronePawn)) + { + Messages.Message("ARA_BindDrone_ConversionSuccess".Translate(dronePawn.LabelShort, masterPawn.LabelShort), MessageTypeDefOf.PositiveEvent, historical: false); + Log.Message($"Successfully bound converted drone {dronePawn.LabelShort} to master {masterPawn.LabelShort}"); + } + else + { + Messages.Message("ARA_BindDrone_ConversionFailure".Translate(dronePawn.LabelShort, masterPawn.LabelShort), MessageTypeDefOf.NegativeEvent, historical: false); + Log.Warning($"Failed to bind converted drone {dronePawn.LabelShort} to master {masterPawn.LabelShort}"); + } + } + else + { + Messages.Message("ARA_BindDrone_NoMasterForConversion".Translate(masterPawn.LabelShort), MessageTypeDefOf.NegativeEvent, historical: false); + Log.Error($"[ArachnaeSwarm] Master {masterPawn.LabelShort} tried to convert a non-player drone but does not have Hediff_HiveMindMaster."); + } + } + public override bool Valid(LocalTargetInfo target, bool throwMessages = false) { if (!base.Valid(target, throwMessages)) @@ -64,7 +125,16 @@ namespace ArachnaeSwarm return false; } - // Target must have ARA_HiveMindDrone hediff + // 检查目标是否有 ARA_NonPlayer_HiveMindDroneHediff(新增条件) + Hediff nonPlayerDroneHediff = dronePawn.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("ARA_NonPlayer_HiveMindDroneHediff")); + if (nonPlayerDroneHediff != null) + { + // 对于非玩家派系无人机,只需要基本检查,不需要绑定状态检查 + // 所有检查通过 + return true; + } + + // 原有的玩家派系无人机检查逻辑 Hediff_HiveMindDrone droneHediff = dronePawn.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("ARA_HiveMindDrone")) as Hediff_HiveMindDrone; if (droneHediff == null) { @@ -105,4 +175,4 @@ namespace ArachnaeSwarm return Valid(target); } } -} \ No newline at end of file +} diff --git a/Source/ArachnaeSwarm/Hediffs/ARA_HiveMind/Hediff_HiveMindMaster.cs b/Source/ArachnaeSwarm/Hediffs/ARA_HiveMind/Hediff_HiveMindMaster.cs index bced785..580b94b 100644 --- a/Source/ArachnaeSwarm/Hediffs/ARA_HiveMind/Hediff_HiveMindMaster.cs +++ b/Source/ArachnaeSwarm/Hediffs/ARA_HiveMind/Hediff_HiveMindMaster.cs @@ -74,6 +74,9 @@ namespace ArachnaeSwarm return false; } + // 新增:强制赋予主节点的文化给无人机 + ForceMasterCultureToDrone(drone); + droneHediff.target = this.pawn; // Set the drone's target to this master drones.Add(drone); UpdateSeverity(); @@ -81,6 +84,84 @@ namespace ArachnaeSwarm return true; } + /// + /// 强制将主节点的文化赋予无人机 + /// + private void ForceMasterCultureToDrone(Pawn drone) + { + // 检查是否有意识形态系统(Ideology DLC) + if (ModsConfig.IdeologyActive) + { + // 获取主节点的意识形态 + Ideo masterIdeo = this.pawn.Ideo; + + if (masterIdeo != null) + { + // 设置无人机的意识形态为主节点的意识形态 + if (drone.Ideo != masterIdeo) + { + drone.ideo.SetIdeo(masterIdeo); + Log.Message($"[ArachnaeSwarm] Set drone {drone.LabelShort} ideology to master's ideology: {masterIdeo.name}"); + } + } + else + { + Log.Warning($"[ArachnaeSwarm] Master {this.pawn.LabelShort} has no ideology to assign to drone {drone.LabelShort}"); + } + + // 强制同步文化相关记忆和状态 + SyncCulturalMemories(drone); + } + else + { + Log.Message($"[ArachnaeSwarm] Ideology DLC not active, skipping cultural assignment for drone {drone.LabelShort}"); + } + } + + /// + /// 同步文化相关记忆和状态 + /// + private void SyncCulturalMemories(Pawn drone) + { + try + { + // 清除可能存在的文化冲突记忆 + if (drone.needs?.mood != null) + { + // 移除与文化转换相关的负面想法 + var thoughtsToRemove = drone.needs.mood.thoughts.memories.Memories + .Where(thought => thought.def.defName.Contains("Cultural") || + thought.def.defName.Contains("Ideo") || + thought.def.defName.Contains("Convert")) + .ToList(); + + foreach (var thought in thoughtsToRemove) + { + drone.needs.mood.thoughts.memories.RemoveMemory(thought); + } + + if (thoughtsToRemove.Count > 0) + { + Log.Message($"[ArachnaeSwarm] Removed {thoughtsToRemove.Count} cultural conflict thoughts from drone {drone.LabelShort}"); + } + + // 添加蜂群文化适应的正面想法 + ThoughtDef culturalHarmonyThought = DefDatabase.GetNamedSilentFail("ARA_CulturalHarmony"); + if (culturalHarmonyThought != null) + { + drone.needs.mood.thoughts.memories.TryGainMemory(culturalHarmonyThought); + } + } + + // 同步服装和文化偏好 + Log.Message($"[ArachnaeSwarm] Successfully synchronized cultural memories for drone {drone.LabelShort}"); + } + catch (System.Exception ex) + { + Log.Error($"[ArachnaeSwarm] Error synchronizing cultural memories for drone {drone.LabelShort}: {ex.Message}"); + } + } + public void TryBindAllAvailableDrones() { if (this.pawn?.Map == null) return; @@ -102,6 +183,9 @@ namespace ArachnaeSwarm // Check if the drone is unlinked (target is null) and not already in our list if (droneHediff != null && droneHediff.target == null && !drones.Contains(drone)) { + // 新增:在自动绑定时也强制赋予文化 + ForceMasterCultureToDrone(drone); + droneHediff.target = this.pawn; // Set the drone's target to this master drones.Add(drone); Log.Message($"[ArachnaeSwarm] Master {this.pawn.LabelShort} automatically bound drone {drone.LabelShort}."); @@ -144,4 +228,4 @@ namespace ArachnaeSwarm } } } -} \ No newline at end of file +} diff --git a/Source/ArachnaeSwarm/Pawn_Comps/ARA_NodeSwarmLifetime/CompNodeSwarmLifetime.cs b/Source/ArachnaeSwarm/Pawn_Comps/ARA_NodeSwarmLifetime/CompNodeSwarmLifetime.cs index f368c26..b6890a3 100644 --- a/Source/ArachnaeSwarm/Pawn_Comps/ARA_NodeSwarmLifetime/CompNodeSwarmLifetime.cs +++ b/Source/ArachnaeSwarm/Pawn_Comps/ARA_NodeSwarmLifetime/CompNodeSwarmLifetime.cs @@ -37,11 +37,24 @@ namespace ArachnaeSwarm // 添加:获取总天数 public float TotalDays => Props.lifetimeDays; + // 新增:检查是否为玩家派系 + public bool IsPlayerFaction + { + get + { + Pawn pawn = parent as Pawn; + return pawn != null && pawn.Faction == Faction.OfPlayer; + } + } + // 添加:检查是否有关闭系统的 Hediff public bool HasShutdownHediff { get { + // 非玩家派系不检查 Hediff + if (!IsPlayerFaction) return false; + // 每 300 tick 检查一次,避免性能问题 if (hasShutdownHediffCached == null || Find.TickManager.TicksGame > lastHediffCheckTick + 300) { @@ -77,6 +90,9 @@ namespace ArachnaeSwarm // 新增:当hediff消失时执行的处理 private void HandleMissingHediff() { + // 非玩家派系不处理 Hediff 消失 + if (!IsPlayerFaction) return; + Pawn pawn = parent as Pawn; if (pawn == null) return; @@ -109,6 +125,9 @@ namespace ArachnaeSwarm // 新增:获取或创建寿命Hediff private Hediff GetOrCreateLifespanHediff() { + // 非玩家派系不创建 Hediff + if (!IsPlayerFaction) return null; + Pawn pawn = parent as Pawn; if (pawn == null) return null; @@ -150,6 +169,9 @@ namespace ArachnaeSwarm // 新增:同步组件和Hediff的寿命数据 private void SyncLifespanWithHediff() { + // 非玩家派系不进行同步 + if (!IsPlayerFaction) return; + Pawn pawn = parent as Pawn; if (pawn == null) return; @@ -198,6 +220,9 @@ namespace ArachnaeSwarm // 新增:将Comp的数据写入Hediff(用于调试命令) private void WriteCompDataToHediff() { + // 非玩家派系不写入 Hediff + if (!IsPlayerFaction) return; + Pawn pawn = parent as Pawn; if (pawn == null) return; @@ -223,6 +248,9 @@ namespace ArachnaeSwarm // 新增:定期校验Hediff状态 private void ValidateHediffState() { + // 非玩家派系不进行 Hediff 校验 + if (!IsPlayerFaction) return; + Pawn pawn = parent as Pawn; if (pawn == null) return; @@ -259,6 +287,9 @@ namespace ArachnaeSwarm // 新增:检查是否需要创建寿命 Hediff private bool ShouldCreateLifespanHediff() { + // 非玩家派系不创建 Hediff + if (!IsPlayerFaction) return false; + // 如果有关闭 Hediff,不应该创建寿命 Hediff if (HasShutdownHediff) { @@ -290,33 +321,39 @@ namespace ArachnaeSwarm lastHediffSyncTick = Find.TickManager.TicksGame; lastHediffMissingCheckTick = Find.TickManager.TicksGame; - // 添加:检查是否需要创建寿命 Hediff - if (ShouldCreateLifespanHediff()) + // 只有玩家派系才进行 Hediff 管理 + if (IsPlayerFaction) { - // 确保寿命Hediff存在 - GetOrCreateLifespanHediff(); - - // 初始同步 - SyncLifespanWithHediff(); - } - else - { - Log.Message($"Skipping lifespan hediff creation for {parent.Label} due to shutdown hediff"); + // 添加:检查是否需要创建寿命 Hediff + if (ShouldCreateLifespanHediff()) + { + // 确保寿命Hediff存在 + GetOrCreateLifespanHediff(); + + // 初始同步 + SyncLifespanWithHediff(); + } + else + { + Log.Message($"Skipping lifespan hediff creation for {parent.Label} due to shutdown hediff"); + } } } public override IEnumerable CompGetGizmosExtra() { + // 非玩家派系不显示 Gizmo(除非特别配置) + if (!IsPlayerFaction && !Props.showGizmoOnNonPlayerControlled) + { + yield break; + } + // 添加:如果有关闭 Hediff,不显示任何 Gizmo if (HasShutdownHediff) { yield break; } - if (parent.Faction != Faction.OfPlayer && !Props.showGizmoOnNonPlayerControlled) - { - yield break; - } if (Find.Selector.SingleSelectedThing == parent) { if (gizmo == null) @@ -340,6 +377,7 @@ namespace ArachnaeSwarm if (pawn != null) { string message = $"关闭Hediff状态:\n" + + $"玩家派系: {IsPlayerFaction}\n" + $"HasShutdownHediff: {HasShutdownHediff}\n" + $"Shutdown Hediff Def: {Props.immuteHediff?.defName ?? "None"}\n" + $"实际存在: {(Props.immuteHediff != null ? pawn.health.hediffSet.HasHediff(Props.immuteHediff).ToString() : "N/A")}"; @@ -431,6 +469,7 @@ namespace ArachnaeSwarm if (hediff != null) { string message = $"寿命Hediff信息:\n" + + $"玩家派系: {IsPlayerFaction}\n" + $"严重程度: {hediff.Severity:P4}\n" + $"剩余ticks: {powerTicksLeft}\n" + $"剩余天数: {DaysLeft:F4}\n" + @@ -444,6 +483,7 @@ namespace ArachnaeSwarm else { string message = $"未找到寿命hediff\n" + + $"玩家派系: {IsPlayerFaction}\n" + $"关闭Hediff存在: {HasShutdownHediff}"; Messages.Message(message, MessageTypeDefOf.SilentInput); } @@ -507,6 +547,9 @@ namespace ArachnaeSwarm { base.CompTick(); + // 非玩家派系不进行任何 Tick 逻辑 + if (!IsPlayerFaction) return; + // 添加:如果有关闭 Hediff,停止所有 Tick 逻辑 if (HasShutdownHediff) { @@ -605,19 +648,23 @@ namespace ArachnaeSwarm powerTicksLeft = (int)(Props.lifetimeDays * 60000); } - // 立即检查hediff是否存在 - ValidateHediffState(); + // 只有玩家派系才进行 Hediff 管理 + if (IsPlayerFaction) + { + // 立即检查hediff是否存在 + ValidateHediffState(); - // 添加:检查是否需要创建寿命 Hediff - if (ShouldCreateLifespanHediff()) - { - // 确保寿命Hediff存在并同步 - GetOrCreateLifespanHediff(); - SyncLifespanWithHediff(); - } - else - { - Log.Message($"Skipping lifespan hediff creation for {parent.Label} after load due to shutdown hediff"); + // 添加:检查是否需要创建寿命 Hediff + if (ShouldCreateLifespanHediff()) + { + // 确保寿命Hediff存在并同步 + GetOrCreateLifespanHediff(); + SyncLifespanWithHediff(); + } + else + { + Log.Message($"Skipping lifespan hediff creation for {parent.Label} after load due to shutdown hediff"); + } } } } diff --git a/非公开资源/Content/Textures/UI/Abilities/ARA_FireSpew.sai2 b/非公开资源/Content/Textures/UI/Abilities/ARA_FireSpew.sai2 new file mode 100644 index 0000000..887da61 Binary files /dev/null and b/非公开资源/Content/Textures/UI/Abilities/ARA_FireSpew.sai2 differ diff --git a/非公开资源/Content/Textures/UI/Abilities/ARA_Queen_Upgrade_1_Stage.sai2 b/非公开资源/Content/Textures/UI/Abilities/ARA_Queen_Upgrade_1_Stage.sai2 index 12e6cce..d2ae893 100644 Binary files a/非公开资源/Content/Textures/UI/Abilities/ARA_Queen_Upgrade_1_Stage.sai2 and b/非公开资源/Content/Textures/UI/Abilities/ARA_Queen_Upgrade_1_Stage.sai2 differ