From d1593a60631896ab4f55793457148a74276a52dc Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Thu, 30 Oct 2025 12:35:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/ArachnaeSwarm.dll | Bin 678400 -> 676864 bytes .../Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml | 48 ------------- ...A_ArachnaeNode_Race_Facehugger_JobAnim.xml | 0 .../ARA_ArachnaeNode_Race_Fighter_JobAnim.xml | 0 ...rachnaeNode_Race_Myrmecocystus_JobAnim.xml | 0 ...A_ArachnaeNode_Race_NeuroSwarm_JobAnim.xml | 0 ...A_ArachnaeNode_Race_Praetorian_JobAnim.xml | 0 ...A_ArachnaeNode_Race_ShieldHead_JobAnim.xml | 0 ...RA_ArachnaeNode_Race_Skyraider_JobAnim.xml | 0 ...ARA_ArachnaeNode_Race_Smokepop_JobAnim.xml | 0 ..._ArachnaeNode_Race_WeaponSmith_JobAnim.xml | 0 .../FacialAnimation/ARA_JobAnim.xml | 0 .../Defs/FaceShapeDefs/BrowShape.xml | 0 .../Defs/FaceShapeDefs/EmotionShape.xml | 0 .../Defs/FaceShapeDefs/EyeShape.xml | 0 .../Defs/FaceShapeDefs/HeadShape.xml | 0 .../Defs/FaceShapeDefs/LidOptionShape.xml | 0 .../Defs/FaceShapeDefs/LidShape.xml | 0 .../Defs/FaceShapeDefs/MouthShape.xml | 0 .../Defs/FaceShapeDefs/SkinShape.xml | 0 .../ArachnaeNode_Race/ARA_FaceType.xml | 0 1.6/FA/Patches/ARA_FacialAnimation_Patch.xml | 64 ++++++++++++++++++ LoadFolders.xml | 1 + .../FaceAnimationStaticGenerator.cs | 27 +++++--- 24 files changed, 82 insertions(+), 58 deletions(-) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Facehugger_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Fighter_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Myrmecocystus_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_NeuroSwarm_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Praetorian_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_ShieldHead_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Skyraider_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Smokepop_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_WeaponSmith_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml (100%) rename 1.6/{1.6 => FA}/Defs/FaceShapeDefs/BrowShape.xml (100%) rename 1.6/{1.6 => FA}/Defs/FaceShapeDefs/EmotionShape.xml (100%) rename 1.6/{1.6 => FA}/Defs/FaceShapeDefs/EyeShape.xml (100%) rename 1.6/{1.6 => FA}/Defs/FaceShapeDefs/HeadShape.xml (100%) rename 1.6/{1.6 => FA}/Defs/FaceShapeDefs/LidOptionShape.xml (100%) rename 1.6/{1.6 => FA}/Defs/FaceShapeDefs/LidShape.xml (100%) rename 1.6/{1.6 => FA}/Defs/FaceShapeDefs/MouthShape.xml (100%) rename 1.6/{1.6 => FA}/Defs/FaceShapeDefs/SkinShape.xml (100%) rename 1.6/{1.6 => FA}/Defs/FaceTypeDefs/ArachnaeNode_Race/ARA_FaceType.xml (100%) create mode 100644 1.6/FA/Patches/ARA_FacialAnimation_Patch.xml diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 9ad99a8f44ed2306887cb08cbc9bbaa1493e2ee7..441d9f56f950364cf26964b22ebe656d888c77b4 100644 GIT binary patch delta 14629 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 L^mk54Mx*}+a|t6L delta 16062 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 -
  • - FacialAnimation.DrawFaceGraphicsComp -
  • -
  • - FacialAnimation.HeadControllerComp -
  • -
  • - FacialAnimation.EyeballControllerComp -
  • -
  • - FacialAnimation.LidControllerComp -
  • -
  • - FacialAnimation.BrowControllerComp -
  • -
  • - FacialAnimation.MouthControllerComp -
  • -
  • - FacialAnimation.SkinControllerComp -
  • -
  • - FacialAnimation.FacialAnimationControllerComp -
  • ARA_HiveMindDrone
  • @@ -2110,30 +2086,6 @@ -
  • - FacialAnimation.DrawFaceGraphicsComp -
  • -
  • - FacialAnimation.HeadControllerComp -
  • -
  • - FacialAnimation.EyeballControllerComp -
  • -
  • - FacialAnimation.LidControllerComp -
  • -
  • - FacialAnimation.BrowControllerComp -
  • -
  • - FacialAnimation.MouthControllerComp -
  • -
  • - FacialAnimation.SkinControllerComp -
  • -
  • - FacialAnimation.FacialAnimationControllerComp -
  • ARA_HiveStrength_Low
  • diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Facehugger_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Facehugger_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Facehugger_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Facehugger_JobAnim.xml diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Fighter_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Fighter_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Fighter_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Fighter_JobAnim.xml diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Myrmecocystus_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Myrmecocystus_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Myrmecocystus_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Myrmecocystus_JobAnim.xml diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_NeuroSwarm_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_NeuroSwarm_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_NeuroSwarm_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_NeuroSwarm_JobAnim.xml diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Praetorian_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Praetorian_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Praetorian_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Praetorian_JobAnim.xml diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_ShieldHead_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_ShieldHead_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_ShieldHead_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_ShieldHead_JobAnim.xml diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Skyraider_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Skyraider_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Skyraider_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Skyraider_JobAnim.xml diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Smokepop_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Smokepop_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Smokepop_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_Smokepop_JobAnim.xml diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_WeaponSmith_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_WeaponSmith_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_WeaponSmith_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_ArachnaeNode_Race_WeaponSmith_JobAnim.xml diff --git a/1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml b/1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml similarity index 100% rename from 1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml rename to 1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml diff --git a/1.6/1.6/Defs/FaceShapeDefs/BrowShape.xml b/1.6/FA/Defs/FaceShapeDefs/BrowShape.xml similarity index 100% rename from 1.6/1.6/Defs/FaceShapeDefs/BrowShape.xml rename to 1.6/FA/Defs/FaceShapeDefs/BrowShape.xml diff --git a/1.6/1.6/Defs/FaceShapeDefs/EmotionShape.xml b/1.6/FA/Defs/FaceShapeDefs/EmotionShape.xml similarity index 100% rename from 1.6/1.6/Defs/FaceShapeDefs/EmotionShape.xml rename to 1.6/FA/Defs/FaceShapeDefs/EmotionShape.xml diff --git a/1.6/1.6/Defs/FaceShapeDefs/EyeShape.xml b/1.6/FA/Defs/FaceShapeDefs/EyeShape.xml similarity index 100% rename from 1.6/1.6/Defs/FaceShapeDefs/EyeShape.xml rename to 1.6/FA/Defs/FaceShapeDefs/EyeShape.xml diff --git a/1.6/1.6/Defs/FaceShapeDefs/HeadShape.xml b/1.6/FA/Defs/FaceShapeDefs/HeadShape.xml similarity index 100% rename from 1.6/1.6/Defs/FaceShapeDefs/HeadShape.xml rename to 1.6/FA/Defs/FaceShapeDefs/HeadShape.xml diff --git a/1.6/1.6/Defs/FaceShapeDefs/LidOptionShape.xml b/1.6/FA/Defs/FaceShapeDefs/LidOptionShape.xml similarity index 100% rename from 1.6/1.6/Defs/FaceShapeDefs/LidOptionShape.xml rename to 1.6/FA/Defs/FaceShapeDefs/LidOptionShape.xml diff --git a/1.6/1.6/Defs/FaceShapeDefs/LidShape.xml b/1.6/FA/Defs/FaceShapeDefs/LidShape.xml similarity index 100% rename from 1.6/1.6/Defs/FaceShapeDefs/LidShape.xml rename to 1.6/FA/Defs/FaceShapeDefs/LidShape.xml diff --git a/1.6/1.6/Defs/FaceShapeDefs/MouthShape.xml b/1.6/FA/Defs/FaceShapeDefs/MouthShape.xml similarity index 100% rename from 1.6/1.6/Defs/FaceShapeDefs/MouthShape.xml rename to 1.6/FA/Defs/FaceShapeDefs/MouthShape.xml diff --git a/1.6/1.6/Defs/FaceShapeDefs/SkinShape.xml b/1.6/FA/Defs/FaceShapeDefs/SkinShape.xml similarity index 100% rename from 1.6/1.6/Defs/FaceShapeDefs/SkinShape.xml rename to 1.6/FA/Defs/FaceShapeDefs/SkinShape.xml diff --git a/1.6/1.6/Defs/FaceTypeDefs/ArachnaeNode_Race/ARA_FaceType.xml b/1.6/FA/Defs/FaceTypeDefs/ArachnaeNode_Race/ARA_FaceType.xml similarity index 100% rename from 1.6/1.6/Defs/FaceTypeDefs/ArachnaeNode_Race/ARA_FaceType.xml rename to 1.6/FA/Defs/FaceTypeDefs/ArachnaeNode_Race/ARA_FaceType.xml diff --git a/1.6/FA/Patches/ARA_FacialAnimation_Patch.xml b/1.6/FA/Patches/ARA_FacialAnimation_Patch.xml new file mode 100644 index 0000000..2b950f9 --- /dev/null +++ b/1.6/FA/Patches/ARA_FacialAnimation_Patch.xml @@ -0,0 +1,64 @@ + + + + + /Defs/AlienRace.ThingDef_AlienRace[@Name="ARA_NodeBase"]/comps + +
  • + FacialAnimation.DrawFaceGraphicsComp +
  • +
  • + FacialAnimation.HeadControllerComp +
  • +
  • + FacialAnimation.EyeballControllerComp +
  • +
  • + FacialAnimation.LidControllerComp +
  • +
  • + FacialAnimation.BrowControllerComp +
  • +
  • + FacialAnimation.MouthControllerComp +
  • +
  • + FacialAnimation.SkinControllerComp +
  • +
  • + FacialAnimation.FacialAnimationControllerComp +
  • +
    +
    + + + + /Defs/AlienRace.ThingDef_AlienRace[defName="ArachnaeNode_Race_MimicNematode"]/comps + +
  • + FacialAnimation.DrawFaceGraphicsComp +
  • +
  • + FacialAnimation.HeadControllerComp +
  • +
  • + FacialAnimation.EyeballControllerComp +
  • +
  • + FacialAnimation.LidControllerComp +
  • +
  • + FacialAnimation.BrowControllerComp +
  • +
  • + FacialAnimation.MouthControllerComp +
  • +
  • + FacialAnimation.SkinControllerComp +
  • +
  • + FacialAnimation.FacialAnimationControllerComp +
  • +
    +
    +
    \ No newline at end of file diff --git a/LoadFolders.xml b/LoadFolders.xml index ad7c3bc..4400051 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -1,6 +1,7 @@
  • 1.6/1.6
  • +
  • 1.6/FA
  • Content
  • \ No newline at end of file diff --git a/Source/ArachnaeSwarm/FacialAnimation/FaceAnimationStaticGenerator.cs b/Source/ArachnaeSwarm/FacialAnimation/FaceAnimationStaticGenerator.cs index 5ee5695..3ab33ae 100644 --- a/Source/ArachnaeSwarm/FacialAnimation/FaceAnimationStaticGenerator.cs +++ b/Source/ArachnaeSwarm/FacialAnimation/FaceAnimationStaticGenerator.cs @@ -16,6 +16,13 @@ namespace ArachnaeSwarm static FaceAnimationFileGenerator() { + // 检查 Nals.FacialAnimation 是否被加载 + if (!LoadedModManager.RunningMods.Any(m => m.PackageId == "Nals.FacialAnimation")) + { + Log.Message("[Arachnae Swarm] Facial Animation mod not found. Skipping animation file generation."); + return; // 如果未加载,则直接退出,不执行任何操作 + } + GenerateAllFaceAnimationFiles(); } @@ -40,39 +47,39 @@ namespace ArachnaeSwarm { { "ArachnaeNode_Race_Myrmecocystus", - new List { "1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } + new List { "1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } }, { "ArachnaeNode_Race_ShieldHead", - new List { "1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } + new List { "1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } }, { "ArachnaeNode_Race_WeaponSmith", - new List { "1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } + new List { "1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } }, { "ArachnaeNode_Race_Fighter", - new List { "1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } + new List { "1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } }, { "ArachnaeNode_Race_Facehugger", - new List { "1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } + new List { "1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } }, { "ArachnaeNode_Race_Smokepop", - new List { "1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } + new List { "1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } }, { "ArachnaeNode_Race_NeuroSwarm", - new List { "1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } + new List { "1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } }, { "ArachnaeNode_Race_Praetorian", - new List { "1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } + new List { "1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } }, { "ArachnaeNode_Race_Skyraider", - new List { "1.6/1.6/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } + new List { "1.6/FA/Defs/AnimationDefs/FacialAnimation/ARA_JobAnim.xml" } } }; @@ -234,4 +241,4 @@ namespace ArachnaeSwarm } } } -} +} \ No newline at end of file