This commit is contained in:
Tourswen
2025-09-09 01:14:39 +08:00
31 changed files with 611 additions and 997 deletions

Binary file not shown.

View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<AnimationDef>
<defName>ARA_FlyEast</defName>
<durationTicks>60</durationTicks>
<keyframeParts>
<li>
<key>ARA_Flight_Attachment</key>
<value>
<keyframes>
<li><graphicState>ARA_FlyEast_0</graphicState><tick>0</tick></li>
<li><graphicState>ARA_FlyEast_1</graphicState><tick>4</tick></li>
<li><graphicState>ARA_FlyEast_2</graphicState><tick>8</tick></li>
<li><graphicState>ARA_FlyEast_3</graphicState><tick>12</tick></li>
<li><graphicState>ARA_FlyEast_4</graphicState><tick>16</tick></li>
<li><graphicState>ARA_FlyEast_5</graphicState><tick>20</tick></li>
<li><graphicState>ARA_FlyEast_6</graphicState><tick>24</tick></li>
<li><graphicState>ARA_FlyEast_7</graphicState><tick>28</tick></li>
</keyframes>
</value>
</li>
<li>
<key>Root</key>
<value><workerType>AnimationWorker_Keyframes</workerType><keyframes>
<li><tick>0</tick><offset>(0,0,-0.05)</offset></li>
<li><tick>30</tick><offset>(0,0,0.05)</offset></li>
<li><tick>60</tick><offset>(0,0,-0.05)</offset></li>
</keyframes></value>
</li>
</keyframeParts>
</AnimationDef>
<AnimationDef>
<defName>ARA_FlyNorth</defName>
<durationTicks>60</durationTicks>
<keyframeParts>
<li>
<key>ARA_Flight_Attachment</key>
<value>
<keyframes>
<li><graphicState>ARA_FlyNorth_0</graphicState><tick>0</tick></li>
<li><graphicState>ARA_FlyNorth_1</graphicState><tick>4</tick></li>
<li><graphicState>ARA_FlyNorth_2</graphicState><tick>8</tick></li>
<li><graphicState>ARA_FlyNorth_3</graphicState><tick>12</tick></li>
<li><graphicState>ARA_FlyNorth_4</graphicState><tick>16</tick></li>
<li><graphicState>ARA_FlyNorth_5</graphicState><tick>20</tick></li>
<li><graphicState>ARA_FlyNorth_6</graphicState><tick>24</tick></li>
<li><graphicState>ARA_FlyNorth_7</graphicState><tick>28</tick></li>
</keyframes>
</value>
</li>
<li>
<key>Root</key>
<value><workerType>AnimationWorker_Keyframes</workerType><keyframes>
<li><tick>0</tick><offset>(0,0,-0.05)</offset></li>
<li><tick>30</tick><offset>(0,0,0.05)</offset></li>
<li><tick>60</tick><offset>(0,0,-0.05)</offset></li>
</keyframes></value>
</li>
</keyframeParts>
</AnimationDef>
<AnimationDef>
<defName>ARA_FlySouth</defName>
<durationTicks>60</durationTicks>
<keyframeParts>
<li>
<key>ARA_Flight_Attachment</key>
<value>
<keyframes>
<li><graphicState>ARA_FlySouth_0</graphicState><tick>0</tick></li>
<li><graphicState>ARA_FlySouth_1</graphicState><tick>4</tick></li>
<li><graphicState>ARA_FlySouth_2</graphicState><tick>8</tick></li>
<li><graphicState>ARA_FlySouth_3</graphicState><tick>12</tick></li>
<li><graphicState>ARA_FlySouth_4</graphicState><tick>16</tick></li>
<li><graphicState>ARA_FlySouth_5</graphicState><tick>20</tick></li>
<li><graphicState>ARA_FlySouth_6</graphicState><tick>24</tick></li>
<li><graphicState>ARA_FlySouth_7</graphicState><tick>28</tick></li>
</keyframes>
</value>
</li>
<li>
<key>Root</key>
<value><workerType>AnimationWorker_Keyframes</workerType><keyframes>
<li><tick>0</tick><offset>(0,0,-0.05)</offset></li>
<li><tick>30</tick><offset>(0,0,0.05)</offset></li>
<li><tick>60</tick><offset>(0,0,-0.05)</offset></li>
</keyframes></value>
</li>
</keyframeParts>
</AnimationDef>
</Defs>

View File

@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_normal</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>normal</browShapeDef>
<lidShapeDef>normal</lidShapeDef>
<mouthShapeDef>normal</mouthShapeDef>
<headShapeDef>normal</headShapeDef>
</li>
</animationFrames>
<priority>0</priority>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_eyeMoving</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>15</duration>
<eyeballOffset>(-0.005,0,0)</eyeballOffset>
</li>
</animationFrames>
<priority>1002</priority>
<roopIntervalMin>30 </roopIntervalMin>
<roopIntervalMax>500</roopIntervalMax>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_eyeMoving2</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>15</duration>
<eyeballOffset>(0.005,0,0)</eyeballOffset>
</li>
</animationFrames>
<priority>1001</priority>
<roopIntervalMin>30 </roopIntervalMin>
<roopIntervalMax>500</roopIntervalMax>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_eyeFlicker</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>3</duration>
</li>
</animationFrames>
<priority>1001</priority>
<roopIntervalMin>10 </roopIntervalMin>
<roopIntervalMax>30</roopIntervalMax>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_blink</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>3</duration>
<browOffset>(0,0,-0.005)</browOffset>
<lidOffset>(0,0,-0.005)</lidOffset>
<lidShapeDef>normal</lidShapeDef>
</li>
<li>
<duration>12</duration>
<browOffset>(0,0,-0.01)</browOffset>
<lidShapeDef>close</lidShapeDef>
</li>
<li>
<duration>3</duration>
<browOffset>(0,0,-0.005)</browOffset>
<lidOffset>(0,0,-0.005)</lidOffset>
<lidShapeDef>normal</lidShapeDef>
</li>
</animationFrames>
<roopIntervalMin>30 </roopIntervalMin>
<roopIntervalMax>500</roopIntervalMax>
<priority>1000</priority>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- 裸体想法 -->
<!-- <FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Thought_Naked</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<headShapeDef>blush</headShapeDef>
<browShapeDef>s-shaped</browShapeDef>
</li>
</animationFrames>
<priority>200</priority>
<targetThoughtDefs>
<li>Naked</li>
<li>GroinUncovered_Disapproved_Male</li>
<li>GroinUncovered_Disapproved_Female</li>
<li>GroinOrChestUncovered_Disapproved_Male</li>
<li>GroinOrChestUncovered_Disapproved_Female</li>
<li>GroinChestOrHairUncovered_Disapproved_Male</li>
<li>GroinChestOrHairUncovered_Disapproved_Female</li>
<li>GroinChestHairOrFaceUncovered_Disapproved_Male</li>
<li>GroinChestHairOrFaceUncovered_Disapproved_Female</li>
</targetThoughtDefs>
</FacialAnimation.FaceAnimationDef> -->
</Defs>

View File

@@ -1,37 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_AttackMelee</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>angled</browShapeDef>
<mouthShapeDef>open</mouthShapeDef>
<browOffset>(0,0,-0.00875)</browOffset>
<lidOffset>(0.0,0,-0.005)</lidOffset>
</li>
</animationFrames>
<targetJobs>
<li>AttackMelee</li>
</targetJobs>
<priority>10200</priority>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>AttackMelee2</defName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>angled</browShapeDef>
<mouthShapeDef>normal</mouthShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>AttackMelee</li>
</targetJobs>
<priority>10201</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,37 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_AttackStatic</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>angled</browShapeDef>
<mouthShapeDef>open</mouthShapeDef>
<browOffset>(0,0,-0.00875)</browOffset>
<lidOffset>(0.0,0,-0.005)</lidOffset>
</li>
</animationFrames>
<targetJobs>
<li>AttackStatic</li>
</targetJobs>
<priority>10200</priority>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>AttackStatic2</defName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>angled</browShapeDef>
<mouthShapeDef>normal</mouthShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>AttackStatic</li>
</targetJobs>
<priority>10201</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,67 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_DoBill</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<lidOffset>(0,0,-0.00625)</lidOffset>
<eyeballOffset>(0.0,0,-0.0075)</eyeballOffset>
<headOffset>(0,0,-0.0007)</headOffset>
<browShapeDef>normal</browShapeDef>
<browOffset>(0,0,-0.00325)</browOffset>
<mouthOffset>(0,0,-0.00125)</mouthOffset>
</li>
</animationFrames>
<roopIntervalMin>0</roopIntervalMin>
<roopIntervalMax>0</roopIntervalMax>
<targetJobs>
<li>DoBill</li>
</targetJobs>
<priority>10000</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_DoBill2</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>3</duration>
<lidOffset>(0,0,-0.0035)</lidOffset>
<eyeballOffset>(0.0,0,-0.00375)</eyeballOffset>
<headOffset>(0,0,-0.0035)</headOffset>
<browShapeDef>normal</browShapeDef>
<browOffset>(0,0,-0.00025)</browOffset>
<mouthOffset>(0,0,-0.000625)</mouthOffset>
</li>
<li>
<duration>6</duration>
<lidOffset>(0,0,-0.007)</lidOffset>
<eyeballOffset>(0.0,0,-0.00525)</eyeballOffset>
<headOffset>(0,0,-0.0075)</headOffset>
<browShapeDef>normal</browShapeDef>
<browOffset>(0,0,-0.00375)</browOffset>
<mouthOffset>(0,0,-0.00125)</mouthOffset>
</li>
<li>
<duration>3</duration>
<lidOffset>(0,0,-0.0035)</lidOffset>
<eyeballOffset>(0.0,0,-0.00375)</eyeballOffset>
<headOffset>(0,0,-0.0035)</headOffset>
<browShapeDef>normal</browShapeDef>
<browOffset>(0,0,-0.00025)</browOffset>
<mouthOffset>(0,0,-0.000625)</mouthOffset>
</li>
</animationFrames>
<roopIntervalMin>100</roopIntervalMin>
<roopIntervalMax>200</roopIntervalMax>
<targetJobs>
<li>DoBill</li>
</targetJobs>
<priority>10001</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Goto</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>angled</browShapeDef>
<mouthShapeDef>normal</mouthShapeDef>
<headOffset>(0.0,0,-0.0025)</headOffset>
</li>
</animationFrames>
<targetJobs>
<li>Goto</li>
</targetJobs>
<priority>10300</priority>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Ingest</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>4</duration>
<headOffset>(0.0,0,0.0025)</headOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>4</duration>
<headOffset>(0.0,0,0.005)</headOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>6</duration>
<headOffset>(0.0,0,0)</headOffset>
<mouthShapeDef>normal</mouthShapeDef>
</li>
</animationFrames>
<roopIntervalMin>0</roopIntervalMin>
<roopIntervalMax>30</roopIntervalMax>
<targetJobs>
<li>Ingest</li>
</targetJobs>
<priority>10</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,76 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_laydown</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>flat</browShapeDef>
<lidShapeDef>close</lidShapeDef>
<mouthShapeDef>normal</mouthShapeDef>
</li>
</animationFrames>
<roopIntervalMin>0</roopIntervalMin>
<roopIntervalMax>0</roopIntervalMax>
<targetJobs>
<li>LayDown</li>
</targetJobs>
<priority>10001</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_laydown2</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>240</duration>
<mouthShapeDef>open</mouthShapeDef>
</li>
</animationFrames>
<roopIntervalMin>100</roopIntervalMin>
<roopIntervalMax>500</roopIntervalMax>
<targetJobs>
<li>LayDown</li>
</targetJobs>
<priority>10002</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_laydown3</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>15</duration>
<lidOffset>(0.0,0,0.0015)</lidOffset>
<headOffset>(0,0,0.0035)</headOffset>
<browOffset>(0,0,0.00025)</browOffset>
<mouthOffset>(0,0,0.000625)</mouthOffset>
</li>
<li>
<duration>60</duration>
<lidOffset>(0.0,0,0.00275)</lidOffset>
<headOffset>(0,0,0.0075)</headOffset>
<browOffset>(0,0,0.00375)</browOffset>
<mouthOffset>(0,0,0.00125)</mouthOffset>
</li>
<li>
<duration>10</duration>
<lidOffset>(0.0,0,0.0015)</lidOffset>
<headOffset>(0,0,0.0035)</headOffset>
<browOffset>(0,0,0.00025)</browOffset>
<mouthOffset>(0,0,0.000625)</mouthOffset>
</li>
</animationFrames>
<roopIntervalMin>40</roopIntervalMin>
<roopIntervalMax>200</roopIntervalMax>
<targetJobs>
<li>LayDown</li>
</targetJobs>
<priority>10003</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,80 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Lovin</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>8</duration>
<browShapeDef>s-shaped</browShapeDef>
<headOffset>(0.0,0,0.00125)</headOffset>
<browOffset>(0.0,0,-0.005)</browOffset>
<lidShapeDef>close</lidShapeDef>
<lidOffset>(0.0,0,-0.001)</lidOffset>
<eyeballOffset>(0.0,0,0.0075)</eyeballOffset>
<mouthShapeDef>open</mouthShapeDef>
<headShapeDef>blush</headShapeDef>
</li>
<li>
<duration>8</duration>
<browShapeDef>s-shaped</browShapeDef>
<headOffset>(0.0,0,-0.00375)</headOffset>
<browOffset>(0.0,0,-0.0075)</browOffset>
<lidShapeDef>close</lidShapeDef>
<lidOffset>(0.0,0,-0.0015)</lidOffset>
<eyeballOffset>(0.0,0,0.0075)</eyeballOffset>
<mouthShapeDef>open</mouthShapeDef>
<mouthOffset>(0,0,-0.002)</mouthOffset>
<headShapeDef>blush</headShapeDef>
</li>
<li>
<duration>8</duration>
<browShapeDef>s-shaped</browShapeDef>
<headOffset>(0.0,0,0.0075)</headOffset>
<browOffset>(0.0,0,0.00125)</browOffset>
<lidShapeDef>close</lidShapeDef>
<lidOffset>(0.0,0,0.001)</lidOffset>
<eyeballOffset>(0.0,0,0.0075)</eyeballOffset>
<mouthShapeDef>open</mouthShapeDef>
<mouthOffset>(0,0,-0.001)</mouthOffset>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
<targetJobs>
<li>Lovin</li>
<li>MLI_Jobs_MassLoveIn</li>
<li>MLI_Jobs_SingleLoveIn</li>
</targetJobs>
<priority>10400</priority>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Lovin2</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>240</duration>
<browShapeDef>s-shaped</browShapeDef>
<headOffset>(0.0,0,0.01)</headOffset>
<browOffset>(0.0,0,-0.00)</browOffset>
<lidShapeDef>normal</lidShapeDef>
<lidOffset>(0.0,0,-0.001)</lidOffset>
<mouthOffset>(0,0,-0.001)</mouthOffset>
<eyeballOffset>(0.0,0,0.005)</eyeballOffset>
<mouthShapeDef>normal</mouthShapeDef>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<roopIntervalMin>240</roopIntervalMin>
<roopIntervalMax>240</roopIntervalMax>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
<targetJobs>
<li>Lovin</li>
<li>MLI_Jobs_MassLoveIn</li>
<li>MLI_Jobs_SingleLoveIn</li>
</targetJobs>
<priority>10500</priority>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Mine</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.005)</lidOffset>
<headOffset>(0,0,0)</headOffset>
<browShapeDef>angled</browShapeDef>
<mouthOffset>(0,0,0.0025)</mouthOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>5</duration>
<lidOffset>(0,0,0.01)</lidOffset>
<headOffset>(0,0,-0.01)</headOffset>
<browShapeDef>angled</browShapeDef>
<mouthOffset>(0,0,-0.0025)</mouthOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
</animationFrames>
<roopIntervalMin>0</roopIntervalMin>
<roopIntervalMax>0</roopIntervalMax>
<targetJobs>
<li>Mine</li>
</targetJobs>
<priority>10000</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,78 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_RemoveApparel</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.0)</lidOffset>
<eyeballOffset>(-0.005,0,0.005)</eyeballOffset>
<mouthShapeDef>open</mouthShapeDef>
<headShapeDef>blush</headShapeDef>
</li>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.0)</lidOffset>
<eyeballOffset>(0.005,0,0.005)</eyeballOffset>
<mouthShapeDef>open</mouthShapeDef>
<headShapeDef>blush</headShapeDef>
</li>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.0)</lidOffset>
<eyeballOffset>(0,0,0.005)</eyeballOffset>
<mouthShapeDef>open</mouthShapeDef>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>RemoveApparel</li>
</targetJobs>
<priority>105</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
<roopIntervalMin>30 </roopIntervalMin>
<roopIntervalMax>300</roopIntervalMax>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_RemoveApparel2</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>s-shaped</browShapeDef>
<lidShapeDef>normal</lidShapeDef>
<eyeballOffset>(0.0,0,0.005)</eyeballOffset>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>RemoveApparel</li>
</targetJobs>
<priority>104</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_RemoveApparel3</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>120</duration>
<browShapeDef>flat</browShapeDef>
<lidShapeDef>close</lidShapeDef>
<headOffset>(0.0,0,0.005)</headOffset>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>RemoveApparel</li>
</targetJobs>
<priority>110</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
<roopIntervalMin>30 </roopIntervalMin>
<roopIntervalMax>300</roopIntervalMax>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,100 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Research</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>10</duration>
<lidOffset>(0,0,-0.005)</lidOffset>
<headOffset>(0,0,-0.01)</headOffset>
<browShapeDef>flat</browShapeDef>
<mouthShapeDef>normal</mouthShapeDef>
<mouthOffset>(0,0,-0.00375)</mouthOffset>
</li>
</animationFrames>
<targetJobs>
<li>Research</li>
</targetJobs>
<priority>10001</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Research2</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>4</duration>
<browOffset>(0,0,0.00325)</browOffset>
<lidOffset>(0,0,0.00625)</lidOffset>
<headOffset>(0,0,0.005)</headOffset>
<browShapeDef>normal</browShapeDef>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>40</duration>
<browOffset>(0,0,0.00625)</browOffset>
<lidOffset>(0,0,0.00875)</lidOffset>
<headOffset>(0,0,0.01)</headOffset>
<browShapeDef>normal</browShapeDef>
<mouthOffset>(0,0,0.0025)</mouthOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>3</duration>
<browOffset>(0,0,0.00625)</browOffset>
<lidOffset>(0,0,0.00875)</lidOffset>
<headOffset>(0,0,0.01)</headOffset>
<lidShapeDef>close</lidShapeDef>
<browShapeDef>normal</browShapeDef>
<mouthOffset>(0,0,0.0025)</mouthOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>20</duration>
<browOffset>(0,0,0.00625)</browOffset>
<lidOffset>(0,0,0.00875)</lidOffset>
<headOffset>(0,0,0.01)</headOffset>
<browShapeDef>normal</browShapeDef>
<mouthOffset>(0,0,0.0025)</mouthOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>3</duration>
<browOffset>(0,0,0.00625)</browOffset>
<lidOffset>(0,0,0.00875)</lidOffset>
<headOffset>(0,0,0.01)</headOffset>
<lidShapeDef>close</lidShapeDef>
<browShapeDef>normal</browShapeDef>
<mouthOffset>(0,0,0.0025)</mouthOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>40</duration>
<browOffset>(0,0,0.00625)</browOffset>
<lidOffset>(0,0,0.00875)</lidOffset>
<headOffset>(0,0,0.01)</headOffset>
<browShapeDef>normal</browShapeDef>
<mouthOffset>(0,0,0.0025)</mouthOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>8</duration>
<browOffset>(0,0,0.00325)</browOffset>
<lidOffset>(0,0,0.00625)</lidOffset>
<headOffset>(0,0,0.005)</headOffset>
<browShapeDef>normal</browShapeDef>
<mouthShapeDef>open</mouthShapeDef>
</li>
</animationFrames>
<roopIntervalMin>900</roopIntervalMin>
<roopIntervalMax>1200</roopIntervalMax>
<targetJobs>
<li>Research</li>
</targetJobs>
<priority>10002</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_SocialRelax</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>normal</browShapeDef>
<lidShapeDef>close</lidShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>SocialRelax</li>
</targetJobs>
<priority>10200</priority>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_StandAndBeSociallyActive</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>3</duration>
<browShapeDef>normal</browShapeDef>
<headOffset>(0.0,0,-0.0025)</headOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>3</duration>
<browShapeDef>normal</browShapeDef>
<headOffset>(0.0,0,-0.005)</headOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>3</duration>
<browShapeDef>normal</browShapeDef>
<headOffset>(0.0,0,0)</headOffset>
<mouthShapeDef>normal</mouthShapeDef>
</li>
</animationFrames>
<roopIntervalMin>0</roopIntervalMin>
<roopIntervalMax>100</roopIntervalMax>
<targetJobs>
<li>StandAndBeSociallyActive</li>
</targetJobs>
<priority>10</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,53 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Strip</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.0)</lidOffset>
<eyeballOffset>(-0.005,0,0.005)</eyeballOffset>
<headShapeDef>blush</headShapeDef>
</li>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.0)</lidOffset>
<eyeballOffset>(0.005,0,0.005)</eyeballOffset>
<headShapeDef>blush</headShapeDef>
</li>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.0)</lidOffset>
<eyeballOffset>(0,0,0.005)</eyeballOffset>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>Strip</li>
</targetJobs>
<priority>105</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
<roopIntervalMin>30 </roopIntervalMin>
<roopIntervalMax>300</roopIntervalMax>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>Strip2</defName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>s-shaped</browShapeDef>
<lidShapeDef>normal</lidShapeDef>
<mouthShapeDef>open</mouthShapeDef>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>Strip</li>
</targetJobs>
<priority>106</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_WaitCombat</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>angled</browShapeDef>
<mouthShapeDef>normal</mouthShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>Wait_Combat</li>
</targetJobs>
<priority>10200</priority>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Wait_Combat_Rare</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>15</duration>
<browShapeDef>normal</browShapeDef>
</li>
<li>
<duration>4</duration>
<browOffset>(0,0,-0.00375)</browOffset>
<browShapeDef>flat</browShapeDef>
<lidShapeDef>close</lidShapeDef>
<lidOffset>(0,0,-0.0025)</lidOffset>
<headOffset>(0,0,-0.00625)</headOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>45</duration>
<browOffset>(0,0,-0.01)</browOffset>
<browShapeDef>s-shaped</browShapeDef>
<lidShapeDef>close</lidShapeDef>
<lidOffset>(0,0,-0.005)</lidOffset>
<headOffset>(0,0,-0.0175)</headOffset>
<mouthShapeDef>open</mouthShapeDef>
<mouthOffset>(0,0,-0.005)</mouthOffset>
</li>
<li>
<duration>30</duration>
<browOffset>(0,0,-0.01)</browOffset>
<browShapeDef>s-shaped</browShapeDef>
<lidShapeDef>close</lidShapeDef>
<lidOffset>(0,0,-0.005)</lidOffset>
<headOffset>(0,0,-0.015)</headOffset>
<mouthShapeDef>open</mouthShapeDef>
<mouthOffset>(0,0,-0.005)</mouthOffset>
</li>
<li>
<duration>7</duration>
<browOffset>(0,0,-0.00375)</browOffset>
<browShapeDef>s-shaped</browShapeDef>
<lidShapeDef>close</lidShapeDef>
<lidOffset>(0,0,-0.0025)</lidOffset>
<headOffset>(0,0,-0.0085)</headOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>4</duration>
<browShapeDef>flat</browShapeDef>
<lidShapeDef>close</lidShapeDef>
<mouthShapeDef>normal</mouthShapeDef>
</li>
<li>
<duration>30</duration>
<browShapeDef>normal</browShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>Wait_Combat</li>
</targetJobs>
<priority>10301</priority>
<roopIntervalMin>1000</roopIntervalMin>
<roopIntervalMax>2000</roopIntervalMax>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Wait_Downed</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>30</duration>
<browOffset>(0,0,0.015)</browOffset>
<lidOffset>(0,0,0.01)</lidOffset>
<headOffset>(0,0,0.01)</headOffset>
<browShapeDef>flat</browShapeDef>
<mouthOffset>(0,0,0.0025)</mouthOffset>
<mouthShapeDef>open</mouthShapeDef>
</li>
<li>
<duration>3</duration>
<browOffset>(0,0,0.0075)</browOffset>
<lidOffset>(0,0,0.005)</lidOffset>
<headOffset>(0,0,0.005)</headOffset>
<browShapeDef>flat</browShapeDef>
<mouthShapeDef>normal</mouthShapeDef>
</li>
</animationFrames>
<roopIntervalMin>0</roopIntervalMin>
<roopIntervalMax>100</roopIntervalMax>
<targetJobs>
<li>Wait_Downed</li>
</targetJobs>
<priority>10000</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>Wait_Downed2</defName>
<animationFrames>
<li>
<duration>3</duration>
<lidOffset>(0,0,0.005)</lidOffset>
<browShapeDef>flat</browShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>Wait_Downed</li>
</targetJobs>
<priority>10001</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -1,77 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Wear</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.0)</lidOffset>
<eyeballOffset>(-0.005,0,0.005)</eyeballOffset>
<mouthShapeDef>open</mouthShapeDef>
<headShapeDef>blush</headShapeDef>
</li>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.0)</lidOffset>
<eyeballOffset>(0.005,0,0.005)</eyeballOffset>
<mouthShapeDef>open</mouthShapeDef>
<headShapeDef>blush</headShapeDef>
</li>
<li>
<duration>10</duration>
<lidOffset>(0,0,0.0)</lidOffset>
<eyeballOffset>(0,0,0.005)</eyeballOffset>
<mouthShapeDef>open</mouthShapeDef>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>Wear</li>
</targetJobs>
<priority>105</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
<roopIntervalMin>30 </roopIntervalMin>
<roopIntervalMax>300</roopIntervalMax>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>ArachnaeNode_Wear2</defName>
<raceName>ArachnaeNode_Race_Myrmecocystus</raceName>
<animationFrames>
<li>
<duration>1</duration>
<browShapeDef>s-shaped</browShapeDef>
<lidShapeDef>normal</lidShapeDef>
<eyeballOffset>(0.0,0,0.005)</eyeballOffset>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>Wear</li>
</targetJobs>
<priority>104</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
</FacialAnimation.FaceAnimationDef>
<FacialAnimation.FaceAnimationDef MayRequire="Nals.FacialAnimation">
<defName>Wear3</defName>
<animationFrames>
<li>
<duration>120</duration>
<browShapeDef>flat</browShapeDef>
<lidShapeDef>close</lidShapeDef>
<headOffset>(0.0,0,0.005)</headOffset>
<headShapeDef>blush</headShapeDef>
</li>
</animationFrames>
<targetJobs>
<li>Wear</li>
</targetJobs>
<priority>110</priority>
<applyWhenStandingOnly>true</applyWhenStandingOnly>
<roopIntervalMin>30 </roopIntervalMin>
<roopIntervalMax>300</roopIntervalMax>
</FacialAnimation.FaceAnimationDef>
</Defs>

View File

@@ -204,6 +204,37 @@
</spawnCategories>
</AlienRace.AlienBackstoryDef>
<AlienRace.AlienBackstoryDef ParentName="ARA_BaseBackStory">
<defName>Arachnae_Node_BS_Adult_Skyraider</defName>
<title>阿拉克涅空天种</title>
<titleShort>空天种</titleShort>
<description>[PAWN_nameDef]是一只阿拉克涅空天种督虫,空天种作为阿拉克涅督虫中的精锐,进化出了强大的飞行能力,是巢穴中无可争议的空中霸主。\n\n作为为数不多拥有飞行能力的虫族她可以从空中掠袭猎物并将其带至千米高空之上俯冲投下只留其余猎物在地面无助的挣扎。</description>
<slot>Adulthood</slot>
<workDisables>
<li>Cleaning</li>
<!-- <li>Hauling</li> -->
<li>Mining</li>
<li>PlantWork</li>
<!-- <li>Animals</li> -->
<!-- <li>Hunting</li> -->
<li>Crafting</li>
<li>Cooking</li>
<li>Constructing</li>
<li>Caring</li>
<li>Social</li>
<li>Artistic</li>
<li>Intellectual</li>
</workDisables>
<skillGains>
<Shooting>5</Shooting>
<Melee>5</Melee>
</skillGains>
<spawnCategories>
<li>ArachnaeNode_spawnCategories_Skyraider</li>
</spawnCategories>
</AlienRace.AlienBackstoryDef>
<AlienRace.AlienBackstoryDef ParentName="ARA_BaseBackStory">
<defName>Arachnae_Node_BS_Adult_Facehugger</defName>
<title>阿拉克涅原虫种</title>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- North Frames -->
<GraphicStateDef><defName>ARA_FlyNorth_0</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_1_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_1</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_2_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_2</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_3_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_3</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_4_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_4</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_5_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_5</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_6_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_6</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_7_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyNorth_7</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_8_north</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<!-- East Frames -->
<GraphicStateDef><defName>ARA_FlyEast_0</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_1_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_1</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_2_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_2</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_3_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_3</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_4_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_4</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_5_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_5</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_6_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_6</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_7_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlyEast_7</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_8_east</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<!-- South Frames -->
<GraphicStateDef><defName>ARA_FlySouth_0</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_1_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_1</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_2_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_2</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_3_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_3</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_4_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_4</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_5_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_5</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_6_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_6</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_7_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
<GraphicStateDef><defName>ARA_FlySouth_7</defName><defaultGraphicData><graphicClass>Graphic_Single</graphicClass><texPath>Things/Pawn/Animal/Goose/Goose_Flying_8_south</texPath><drawSize>1.35</drawSize></defaultGraphicData></GraphicStateDef>
</Defs>

View File

@@ -12,7 +12,7 @@
<HeadTypeDef ParentName="ARA_FemaleHeadtypeBase">
<defName>ARA_QUEEN_Female_AverageNormalA</defName>
<graphicPath>Textures/Pawns/General/Invisible/Inv</graphicPath>
<graphicPath>ArachnaeSwarm/Things/General/Invisible/Inv</graphicPath>
</HeadTypeDef>

View File

@@ -235,6 +235,34 @@
</apparelTags>
<apparelMoney>0</apparelMoney>
</PawnKindDef>
<PawnKindDef ParentName="ArachnaeNodeABasePawnKind">
<defName>ArachnaeNode_Race_Skyraider</defName>
<label>阿拉克涅空天种</label>
<race>ArachnaeNode_Race_Skyraider</race>
<defaultFactionType>PlayerColony</defaultFactionType>
<invNutrition>0</invNutrition>
<flyingAnimationFramePathPrefix>Things/Pawn/Animal/Goose/Goose_Flying_</flyingAnimationFramePathPrefix>
<flyingAnimationDrawSize>1.35</flyingAnimationDrawSize>
<flyingAnimationFrameCount>2</flyingAnimationFrameCount>
<flyingAnimationTicksPerFrame>2</flyingAnimationTicksPerFrame>
<flyingAnimationInheritColors>false</flyingAnimationInheritColors>
<backstoryFiltersOverride>
<li>
<categories>
<li>ArachnaeNode_spawnCategoriesA</li>
<li>ArachnaeNode_spawnCategories_Fighter</li>
</categories>
</li>
</backstoryFiltersOverride>
<abilities>
<li>ARA_BaseRace_Acid_Launcher</li>
<li>ARA_AcidSprayBurst</li>
<li>ARA_Toxic_Needle_Fire</li>
</abilities>
<apparelTags>
</apparelTags>
<apparelMoney>0</apparelMoney>
</PawnKindDef>
<PawnKindDef Name="ARA_InsectKindBase" ParentName="AnimalKindBase" Abstract="True">
<defaultFactionType>PlayerColony</defaultFactionType>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<PawnRenderNodeTagDef>
<defName>ARA_Flight_Attachment</defName>
</PawnRenderNodeTagDef>
</Defs>

View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<PawnRenderTreeDef>
<defName>ARA_ArachnaeRenderTree</defName>
<root Class="PawnRenderNodeProperties_Parent">
<debugLabel>Root</debugLabel>
<tagDef>Root</tagDef>
<children>
<li>
<debugLabel>Body</debugLabel>
<nodeClass>PawnRenderNode_Body</nodeClass>
<workerClass>PawnRenderNodeWorker_Body</workerClass>
<tagDef>Body</tagDef>
<skipFlag>Body</skipFlag>
<colorType>Skin</colorType>
<useRottenColor>true</useRottenColor>
<useSkinShader>true</useSkinShader>
<children>
<li Class="PawnRenderNodeProperties_Tattoo" MayRequire="Ludeon.RimWorld.Ideology">
<debugLabel>Body tattoo</debugLabel>
<nodeClass>PawnRenderNode_Tattoo_Body</nodeClass>
<workerClass>PawnRenderNodeWorker_Body_Tattoo</workerClass>
<colorType>Skin</colorType>
<useRottenColor>true</useRottenColor>
<baseLayer>2</baseLayer>
<rotDrawMode>Fresh, Rotting</rotDrawMode>
</li>
<li Class="PawnRenderNodeProperties_Overlay">
<debugLabel>Wounds - pre apparel</debugLabel>
<workerClass>PawnRenderNodeWorker_OverlayWounds</workerClass>
<overlayLayer>Body</overlayLayer>
<baseLayer>8</baseLayer>
</li>
<li Class="PawnRenderNodeProperties_Swaddle" MayRequire="Ludeon.RimWorld.Biotech">
<debugLabel>Baby swaddle</debugLabel>
<nodeClass>PawnRenderNode_Swaddle</nodeClass>
<workerClass>PawnRenderNodeWorker_Swaddle</workerClass>
<texPath>Things/Pawn/Humanlike/Apparel/SwaddledBaby/Swaddled_Child</texPath>
<swaddleColorOffset>0.1</swaddleColorOffset>
<brightnessRange>0.6~0.89</brightnessRange>
<baseLayer>10</baseLayer>
</li>
<!-- ===== OUR CUSTOM NODE INSERTION START ===== -->
<!-- Using Milira's exact structure for testing -->
<li>
<debugLabel>Arachnae Flight Attachment</debugLabel>
<tagDef>ARA_Flight_Attachment</tagDef>
<texPath>ArachnaeSwarm/Things/General/Invisible/Inv</texPath>
<baseLayer>60</baseLayer>
<drawData>
<dataSouth>
<layer>-10</layer>
</dataSouth>
</drawData>
</li>
<!-- ===== OUR CUSTOM NODE INSERTION END ===== -->
<li Class="PawnRenderNodeProperties_Parent">
<debugLabel>Apparel root</debugLabel>
<tagDef>ApparelBody</tagDef>
<baseLayer>20</baseLayer>
</li>
<li Class="PawnRenderNodeProperties_Overlay">
<debugLabel>Wounds - post apparel</debugLabel>
<workerClass>PawnRenderNodeWorker_OverlayWounds</workerClass>
<overlayOverApparel>true</overlayOverApparel>
<overlayLayer>Body</overlayLayer>
<baseLayer>30</baseLayer>
</li>
<li Class="PawnRenderNodeProperties_Overlay">
<debugLabel>Firefoam</debugLabel>
<workerClass>PawnRenderNodeWorker_OverlayFirefoam</workerClass>
<overlayLayer>Body</overlayLayer>
<baseLayer>40</baseLayer>
</li>
</children>
</li>
<li>
<debugLabel>Head stump</debugLabel>
<nodeClass>PawnRenderNode_Stump</nodeClass>
<workerClass>PawnRenderNodeWorker_Stump</workerClass>
<texPath>Things/Pawn/Humanlike/Heads/None_Average_Stump</texPath>
<baseLayer>50</baseLayer>
<colorType>Skin</colorType>
<skipFlag>Head</skipFlag>
<useSkinShader>true</useSkinShader>
<useRottenColor>true</useRottenColor>
<rotDrawMode>Fresh, Rotting</rotDrawMode>
</li>
<li>
<debugLabel>Head</debugLabel>
<nodeClass>PawnRenderNode_Head</nodeClass>
<workerClass>PawnRenderNodeWorker_Head</workerClass>
<tagDef>Head</tagDef>
<skipFlag>Head</skipFlag>
<baseLayer>50</baseLayer>
<colorType>Skin</colorType>
<useRottenColor>true</useRottenColor>
<useSkinShader>true</useSkinShader>
<children>
<li Class="PawnRenderNodeProperties_Tattoo" MayRequire="Ludeon.RimWorld.Ideology">
<debugLabel>Head tattoo</debugLabel>
<nodeClass>PawnRenderNode_Tattoo_Head</nodeClass>
<workerClass>PawnRenderNodeWorker_Tattoo_Head</workerClass>
<rotDrawMode>Fresh, Rotting</rotDrawMode>
<colorType>Skin</colorType>
<baseLayer>52</baseLayer>
</li>
<li>
<debugLabel>Beard</debugLabel>
<nodeClass>PawnRenderNode_Beard</nodeClass>
<workerClass>PawnRenderNodeWorker_Beard</workerClass>
<rotDrawMode>Fresh, Rotting</rotDrawMode>
<colorType>Hair</colorType>
<skipFlag>Beard</skipFlag>
<baseLayer>60</baseLayer>
</li>
<li>
<debugLabel>Hair</debugLabel>
<nodeClass>PawnRenderNode_Hair</nodeClass>
<workerClass>PawnRenderNodeWorker_FlipWhenCrawling</workerClass>
<rotDrawMode>Fresh, Rotting</rotDrawMode>
<colorType>Hair</colorType>
<skipFlag>Hair</skipFlag>
<baseLayer>62</baseLayer>
</li>
<li Class="PawnRenderNodeProperties_Overlay">
<debugLabel>Head wounds</debugLabel>
<workerClass>PawnRenderNodeWorker_OverlayWounds</workerClass>
<overlayLayer>Head</overlayLayer>
<baseLayer>65</baseLayer>
</li>
<li Class="PawnRenderNodeProperties_Parent">
<debugLabel>Apparel root</debugLabel>
<tagDef>ApparelHead</tagDef>
<baseLayer>70</baseLayer>
</li>
<li Class="PawnRenderNodeProperties_Overlay">
<debugLabel>Firefoam</debugLabel>
<workerClass>PawnRenderNodeWorker_OverlayFirefoam</workerClass>
<overlayLayer>Head</overlayLayer>
<baseLayer>85</baseLayer>
</li>
<li Class="PawnRenderNodeProperties_Overlay">
<debugLabel>Status overlay</debugLabel>
<workerClass>PawnRenderNodeWorker_OverlayStatus</workerClass>
<baseLayer>100</baseLayer>
</li>
</children>
</li>
<li Class="PawnRenderNodeProperties_Carried">
<debugLabel>Weapon/carried thing</debugLabel>
<workerClass>PawnRenderNodeWorker_Carried</workerClass>
</li>
</children>
</root>
</PawnRenderTreeDef>
</Defs>

View File

@@ -1223,4 +1223,111 @@
</lifeStageAges>
</race>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_Skyraider</defName>
<label>阿拉克涅空天种</label>
<description>阿拉克涅督虫中的精锐,进化出了强大的飞行能力,是巢穴中无可争议的空中霸主。\n\n作为为数不多拥有飞行能力的虫族她可以从空中掠袭猎物并将其带至千米高空之上俯冲投下只留其余猎物在地面无助的挣扎。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
<alienPartGenerator>
<!-- 额外身体部件 -->
<bodyAddons>
<li>
<path>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_Fighter_Claw</path>
<inFrontOfBody>true</inFrontOfBody>
</li>
<li>
<path>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_Fighter_Tail</path>
<inFrontOfBody>false</inFrontOfBody>
<offsets>
<north>
<layerOffset>-0.275</layerOffset>
</north>
</offsets>
</li>
</bodyAddons>
</alienPartGenerator>
</generalSettings>
<raceRestriction>
<onlyEatRaceRestrictedFood>true</onlyEatRaceRestrictedFood>
</raceRestriction>
</alienRace>
<comps>
<!-- Add our new flight component here -->
<li Class="ArachnaeSwarm.CompProperties_PawnFlight"> <!-- 2. 添加我们的飞行组件 -->
<!-- 飞行触发条件:仅在征召时飞行 -->
<flightCondition>Drafted</flightCondition>
<!-- 链接到我们刚刚创建的 AnimationDef -->
<flyingAnimationNorth>ARA_FlyNorth</flyingAnimationNorth>
<flyingAnimationEast>ARA_FlyEast</flyingAnimationEast>
<flyingAnimationSouth>ARA_FlySouth</flyingAnimationSouth>
</li>
</comps>
<!-- 基础属性设置 -->
<statBases>
<!-- 移动速度 -->
<MoveSpeed>4.5</MoveSpeed>
<MaxFlightTime>9999</MaxFlightTime>
<FlightCooldown>0</FlightCooldown>
<!-- <RestRateMultiplier>1</RestRateMultiplier> -->
<!-- <HungerRateMultiplier>1</HungerRateMultiplier> -->
<!-- <EatingSpeed>5</EatingSpeed> -->
<MaxNutrition>2</MaxNutrition>
<CarryingCapacity>100</CarryingCapacity>
<MeatAmount>60</MeatAmount>
<LeatherAmount>30</LeatherAmount>
<MeleeDodgeChance>1.25</MeleeDodgeChance>
<MeleeHitChance>1.25</MeleeHitChance>
<!-- <NegotiationAbility>1</NegotiationAbility> -->
<!-- <SellPriceFactor>1</SellPriceFactor> -->
<!-- <SocialImpact>1</SocialImpact> -->
<!-- <TradePriceImprovement>0.5</TradePriceImprovement> -->
<!-- 自带的甲壳可以防御外部攻击 -->
<ArmorRating_Blunt>0.4</ArmorRating_Blunt>
<ArmorRating_Sharp>0.4</ArmorRating_Sharp>
<ArmorRating_Heat>0.3</ArmorRating_Heat>
</statBases>
<tools>
<li>
<label>巨镰</label>
<capacities>
<li>Cut</li>
</capacities>
<power>20</power>
<cooldownTime>2.5</cooldownTime>
<linkedBodyPartsGroup>ARA_Sickles</linkedBodyPartsGroup>
<!-- <ensureLinkedBodyPartsGroupAlwaysUsable>true</ensureLinkedBodyPartsGroupAlwaysUsable> -->
<chanceFactor>0.5</chanceFactor>
</li>
</tools>
<race>
<!-- 身体类型 -->
<body>ArachnaeFighter_Body</body>
<renderTree>ARA_ArachnaeRenderTree</renderTree>
<flightStartChanceOnJobStart>1.0</flightStartChanceOnJobStart>
<baseBodySize>0.85</baseBodySize>
<baseHealthScale>2</baseHealthScale>
<lifeExpectancy>5</lifeExpectancy>
<lifeStageAges Inherit="False">
<li>
<def>ArachnaeNode_Myrmecocystus_Adult</def>
<minAge>0</minAge>
</li>
</lifeStageAges>
</race>
</AlienRace.ThingDef_AlienRace>
</Defs>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="15.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -137,6 +138,9 @@
</ItemGroup>
<ItemGroup>
<Compile Include="HediffComp_Temperature.cs" />
<Compile Include="CompPawnFlight.cs" />
<Compile Include="CompProperties_PawnFlight.cs" />
<Compile Include="HarmonyPatches.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="Abilities\CompAbilityEffect_TrackingCharge.cs" />

View File

@@ -0,0 +1,14 @@
using Verse;
namespace ArachnaeSwarm
{
/// <summary>
/// A marker component that holds custom flight properties.
/// The actual flight logic is handled by Harmony patches that check for this component
/// and use its properties to override or trigger vanilla flight behavior.
/// </summary>
public class CompPawnFlight : ThingComp
{
public CompProperties_PawnFlight Props => (CompProperties_PawnFlight)props;
}
}

View File

@@ -0,0 +1,49 @@
using Verse;
using RimWorld;
namespace ArachnaeSwarm
{
public enum FlightCondition
{
Drafted
}
public class CompProperties_PawnFlight : CompProperties
{
// --- Custom Flight Logic ---
public FlightCondition flightCondition = FlightCondition.Drafted;
// --- Vanilla PawnKindDef Flight Parameters ---
[NoTranslate]
public string flyingAnimationFramePathPrefix;
[NoTranslate]
public string flyingAnimationFramePathPrefixFemale;
public int flyingAnimationFrameCount;
public int flyingAnimationTicksPerFrame = -1;
public float flyingAnimationDrawSize = 1f;
public bool flyingAnimationDrawSizeIsMultiplier;
public bool flyingAnimationInheritColors;
// --- Vanilla PawnKindLifeStage Flight Parameters ---
// Note: These are normally defined per lifestage, we define them once here for simplicity.
// The harmony patch will need to inject these into the correct lifestage at runtime.
public AnimationDef flyingAnimationEast;
public AnimationDef flyingAnimationNorth;
public AnimationDef flyingAnimationSouth;
public AnimationDef flyingAnimationEastFemale;
public AnimationDef flyingAnimationNorthFemale;
public AnimationDef flyingAnimationSouthFemale;
public CompProperties_PawnFlight()
{
compClass = typeof(CompPawnFlight);
}
}
}

View File

@@ -0,0 +1,81 @@
using HarmonyLib;
using Verse;
using RimWorld;
using Verse.AI;
namespace ArachnaeSwarm
{
[HarmonyPatch]
public static class FlightHarmonyPatches
{
// Corrected Patch 1: The method signature now correctly matches the static target method.
[HarmonyPrefix]
[HarmonyPatch(typeof(Pawn_FlightTracker), "GetBestFlyAnimation")]
public static bool GetBestFlyAnimation_Prefix(Pawn pawn, ref AnimationDef __result) // Correct parameters: Pawn pawn, not __instance and ___pawn
{
var flightComp = pawn?.TryGetComp<CompPawnFlight>();
if (flightComp == null) // No props check needed, as the crash was due to wrong signature
{
return true;
}
var compProps = flightComp.Props;
AnimationDef selectedAnim = null;
if (pawn.gender == Gender.Female && compProps.flyingAnimationNorthFemale != null)
{
switch (pawn.Rotation.AsInt)
{
case 0: selectedAnim = compProps.flyingAnimationNorthFemale; break;
case 1: selectedAnim = compProps.flyingAnimationEastFemale; break;
case 2: selectedAnim = compProps.flyingAnimationSouthFemale; break;
case 3: selectedAnim = compProps.flyingAnimationEastFemale ?? compProps.flyingAnimationEast; break;
}
}
else
{
switch (pawn.Rotation.AsInt)
{
case 0: selectedAnim = compProps.flyingAnimationNorth; break;
case 1: selectedAnim = compProps.flyingAnimationEast; break;
case 2: selectedAnim = compProps.flyingAnimationSouth; break;
case 3: selectedAnim = compProps.flyingAnimationEast; break;
}
}
if (selectedAnim != null)
{
__result = selectedAnim;
return false;
}
return true;
}
// Patch 2 remains correct as Notify_JobStarted is a non-static method.
[HarmonyPrefix]
[HarmonyPatch(typeof(Pawn_FlightTracker), "Notify_JobStarted")]
public static bool Notify_JobStarted_Prefix(Job job, Pawn_FlightTracker __instance, Pawn ___pawn)
{
var flightComp = ___pawn?.TryGetComp<CompPawnFlight>();
if (flightComp == null || __instance == null || !__instance.CanEverFly || ___pawn == null || ___pawn.Dead)
{
return true;
}
var compProps = flightComp.Props;
bool shouldBeFlying = (compProps.flightCondition == FlightCondition.Drafted && ___pawn.Drafted);
if (shouldBeFlying)
{
if (!__instance.Flying) __instance.StartFlying();
job.flying = true;
}
else
{
if (__instance.Flying) __instance.ForceLand();
job.flying = false;
}
return false;
}
}
}