diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 24cac34..47bdf0a 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/AnimationDefs/ArachnaeNode_Race/Constant/Constant.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/Constant/Constant.xml deleted file mode 100644 index 2e801bb..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/Constant/Constant.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - ArachnaeNode_normal - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - normal - normal - normal - normal -
  • -
    - 0 -
    - - ArachnaeNode_eyeMoving - ArachnaeNode_Race_Myrmecocystus - -
  • - 15 - (-0.005,0,0) -
  • -
    - 1002 - 30 - 500 -
    - - ArachnaeNode_eyeMoving2 - ArachnaeNode_Race_Myrmecocystus - -
  • - 15 - (0.005,0,0) -
  • -
    - 1001 - 30 - 500 -
    - - ArachnaeNode_eyeFlicker - ArachnaeNode_Race_Myrmecocystus - -
  • - 3 -
  • -
    - 1001 - 10 - 30 -
    - - ArachnaeNode_blink - ArachnaeNode_Race_Myrmecocystus - -
  • - 3 - (0,0,-0.005) - (0,0,-0.005) - normal -
  • -
  • - 12 - (0,0,-0.01) - close -
  • -
  • - 3 - (0,0,-0.005) - (0,0,-0.005) - normal -
  • -
    - 30 - 500 - 1000 -
    - - -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/Constant/Thoughts.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/Constant/Thoughts.xml deleted file mode 100644 index 0e3bc26..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/Constant/Thoughts.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/AttackMelee.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/AttackMelee.xml deleted file mode 100644 index 88e7398..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/AttackMelee.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - ArachnaeNode_AttackMelee - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - angled - open - (0,0,-0.00875) - (0.0,0,-0.005) -
  • -
    - -
  • AttackMelee
  • -
    - 10200 -
    - - - AttackMelee2 - -
  • - 1 - angled - normal -
  • -
    - -
  • AttackMelee
  • -
    - 10201 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/AttackStatic.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/AttackStatic.xml deleted file mode 100644 index 3acb48e..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/AttackStatic.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - ArachnaeNode_AttackStatic - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - angled - open - (0,0,-0.00875) - (0.0,0,-0.005) -
  • -
    - -
  • AttackStatic
  • -
    - 10200 -
    - - - AttackStatic2 - -
  • - 1 - angled - normal -
  • -
    - -
  • AttackStatic
  • -
    - 10201 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/DoBill.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/DoBill.xml deleted file mode 100644 index c0bee2d..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/DoBill.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - ArachnaeNode_DoBill - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - (0,0,-0.00625) - (0.0,0,-0.0075) - (0,0,-0.0007) - normal - (0,0,-0.00325) - (0,0,-0.00125) -
  • -
    - 0 - 0 - -
  • DoBill
  • -
    - 10000 - true -
    - - - ArachnaeNode_DoBill2 - ArachnaeNode_Race_Myrmecocystus - -
  • - 3 - (0,0,-0.0035) - (0.0,0,-0.00375) - (0,0,-0.0035) - normal - (0,0,-0.00025) - (0,0,-0.000625) -
  • -
  • - 6 - (0,0,-0.007) - (0.0,0,-0.00525) - (0,0,-0.0075) - normal - (0,0,-0.00375) - (0,0,-0.00125) -
  • -
  • - 3 - (0,0,-0.0035) - (0.0,0,-0.00375) - (0,0,-0.0035) - normal - (0,0,-0.00025) - (0,0,-0.000625) -
  • -
    - 100 - 200 - -
  • DoBill
  • -
    - 10001 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Goto.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Goto.xml deleted file mode 100644 index 4fe2805..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Goto.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - ArachnaeNode_Goto - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - angled - normal - (0.0,0,-0.0025) -
  • -
    - -
  • Goto
  • -
    - 10300 -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Ingest.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Ingest.xml deleted file mode 100644 index 3cdcc4c..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Ingest.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - ArachnaeNode_Ingest - ArachnaeNode_Race_Myrmecocystus - -
  • - 4 - (0.0,0,0.0025) - open -
  • -
  • - 4 - (0.0,0,0.005) - open -
  • -
  • - 6 - (0.0,0,0) - normal -
  • -
    - 0 - 30 - -
  • Ingest
  • -
    - 10 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/LayDown.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/LayDown.xml deleted file mode 100644 index a7fb6bf..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/LayDown.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - ArachnaeNode_laydown - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - flat - close - normal -
  • -
    - 0 - 0 - -
  • LayDown
  • -
    - 10001 - true -
    - - - ArachnaeNode_laydown2 - ArachnaeNode_Race_Myrmecocystus - -
  • - 240 - open -
  • -
    - 100 - 500 - -
  • LayDown
  • -
    - 10002 - true -
    - - - ArachnaeNode_laydown3 - ArachnaeNode_Race_Myrmecocystus - -
  • - 15 - (0.0,0,0.0015) - (0,0,0.0035) - (0,0,0.00025) - (0,0,0.000625) -
  • -
  • - 60 - (0.0,0,0.00275) - (0,0,0.0075) - (0,0,0.00375) - (0,0,0.00125) -
  • -
  • - 10 - (0.0,0,0.0015) - (0,0,0.0035) - (0,0,0.00025) - (0,0,0.000625) -
  • -
    - 40 - 200 - -
  • LayDown
  • -
    - 10003 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Lovin.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Lovin.xml deleted file mode 100644 index 23e8c77..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Lovin.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - ArachnaeNode_Lovin - ArachnaeNode_Race_Myrmecocystus - -
  • - 8 - s-shaped - (0.0,0,0.00125) - (0.0,0,-0.005) - close - (0.0,0,-0.001) - (0.0,0,0.0075) - open - blush -
  • -
  • - 8 - s-shaped - (0.0,0,-0.00375) - (0.0,0,-0.0075) - close - (0.0,0,-0.0015) - (0.0,0,0.0075) - open - (0,0,-0.002) - blush -
  • -
  • - 8 - s-shaped - (0.0,0,0.0075) - (0.0,0,0.00125) - close - (0.0,0,0.001) - (0.0,0,0.0075) - open - (0,0,-0.001) - blush -
  • -
    - true - -
  • Lovin
  • -
  • MLI_Jobs_MassLoveIn
  • -
  • MLI_Jobs_SingleLoveIn
  • -
    - 10400 -
    - - - ArachnaeNode_Lovin2 - ArachnaeNode_Race_Myrmecocystus - -
  • - 240 - s-shaped - (0.0,0,0.01) - (0.0,0,-0.00) - normal - (0.0,0,-0.001) - (0,0,-0.001) - (0.0,0,0.005) - normal - blush -
  • -
    - 240 - 240 - true - -
  • Lovin
  • -
  • MLI_Jobs_MassLoveIn
  • -
  • MLI_Jobs_SingleLoveIn
  • -
    - 10500 -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Mine.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Mine.xml deleted file mode 100644 index 0e168f9..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Mine.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - ArachnaeNode_Mine - ArachnaeNode_Race_Myrmecocystus - -
  • - 10 - (0,0,0.005) - (0,0,0) - angled - (0,0,0.0025) - open -
  • -
  • - 5 - (0,0,0.01) - (0,0,-0.01) - angled - (0,0,-0.0025) - open -
  • -
    - 0 - 0 - -
  • Mine
  • -
    - 10000 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/RemoveApparel.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/RemoveApparel.xml deleted file mode 100644 index 4bceab1..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/RemoveApparel.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - ArachnaeNode_RemoveApparel - ArachnaeNode_Race_Myrmecocystus - -
  • - 10 - (0,0,0.0) - (-0.005,0,0.005) - open - blush -
  • -
  • - 10 - (0,0,0.0) - (0.005,0,0.005) - open - blush -
  • -
  • - 10 - (0,0,0.0) - (0,0,0.005) - open - blush -
  • -
    - -
  • RemoveApparel
  • -
    - 105 - true - 30 - 300 -
    - - - ArachnaeNode_RemoveApparel2 - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - s-shaped - normal - (0.0,0,0.005) - blush -
  • -
    - -
  • RemoveApparel
  • -
    - 104 - true -
    - - - ArachnaeNode_RemoveApparel3 - ArachnaeNode_Race_Myrmecocystus - -
  • - 120 - flat - close - (0.0,0,0.005) - blush -
  • -
    - -
  • RemoveApparel
  • -
    - 110 - true - 30 - 300 -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Research.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Research.xml deleted file mode 100644 index 84c987e..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Research.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - - - ArachnaeNode_Research - ArachnaeNode_Race_Myrmecocystus - -
  • - 10 - (0,0,-0.005) - (0,0,-0.01) - flat - normal - (0,0,-0.00375) -
  • -
    - -
  • Research
  • -
    - 10001 - true -
    - - - ArachnaeNode_Research2 - ArachnaeNode_Race_Myrmecocystus - -
  • - 4 - (0,0,0.00325) - (0,0,0.00625) - (0,0,0.005) - normal - open -
  • -
  • - 40 - (0,0,0.00625) - (0,0,0.00875) - (0,0,0.01) - normal - (0,0,0.0025) - open -
  • -
  • - 3 - (0,0,0.00625) - (0,0,0.00875) - (0,0,0.01) - close - normal - (0,0,0.0025) - open -
  • -
  • - 20 - (0,0,0.00625) - (0,0,0.00875) - (0,0,0.01) - normal - (0,0,0.0025) - open -
  • -
  • - 3 - (0,0,0.00625) - (0,0,0.00875) - (0,0,0.01) - close - normal - (0,0,0.0025) - open -
  • -
  • - 40 - (0,0,0.00625) - (0,0,0.00875) - (0,0,0.01) - normal - (0,0,0.0025) - open -
  • -
  • - 8 - (0,0,0.00325) - (0,0,0.00625) - (0,0,0.005) - normal - open -
  • -
    - 900 - 1200 - -
  • Research
  • -
    - 10002 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/SocialRelax.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/SocialRelax.xml deleted file mode 100644 index fff8b13..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/SocialRelax.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - ArachnaeNode_SocialRelax - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - normal - close -
  • -
    - -
  • SocialRelax
  • -
    - 10200 -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/StandAndBeSociallyActive.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/StandAndBeSociallyActive.xml deleted file mode 100644 index cfdbbbd..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/StandAndBeSociallyActive.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - ArachnaeNode_StandAndBeSociallyActive - ArachnaeNode_Race_Myrmecocystus - -
  • - 3 - normal - (0.0,0,-0.0025) - open -
  • -
  • - 3 - normal - (0.0,0,-0.005) - open -
  • -
  • - 3 - normal - (0.0,0,0) - normal -
  • -
    - 0 - 100 - -
  • StandAndBeSociallyActive
  • -
    - 10 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Strip.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Strip.xml deleted file mode 100644 index 38c6499..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Strip.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - ArachnaeNode_Strip - ArachnaeNode_Race_Myrmecocystus - -
  • - 10 - (0,0,0.0) - (-0.005,0,0.005) - blush -
  • -
  • - 10 - (0,0,0.0) - (0.005,0,0.005) - blush -
  • -
  • - 10 - (0,0,0.0) - (0,0,0.005) - blush -
  • -
    - -
  • Strip
  • -
    - 105 - true - 30 - 300 -
    - - - Strip2 - -
  • - 1 - s-shaped - normal - open - blush -
  • -
    - -
  • Strip
  • -
    - 106 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/WaitCombat.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/WaitCombat.xml deleted file mode 100644 index 3a6a2a7..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/WaitCombat.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - ArachnaeNode_WaitCombat - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - angled - normal -
  • -
    - -
  • Wait_Combat
  • -
    - 10200 -
    - - - ArachnaeNode_Wait_Combat_Rare - ArachnaeNode_Race_Myrmecocystus - -
  • - 15 - normal -
  • -
  • - 4 - (0,0,-0.00375) - flat - close - (0,0,-0.0025) - (0,0,-0.00625) - open -
  • -
  • - 45 - (0,0,-0.01) - s-shaped - close - (0,0,-0.005) - (0,0,-0.0175) - open - (0,0,-0.005) -
  • -
  • - 30 - (0,0,-0.01) - s-shaped - close - (0,0,-0.005) - (0,0,-0.015) - open - (0,0,-0.005) -
  • -
  • - 7 - (0,0,-0.00375) - s-shaped - close - (0,0,-0.0025) - (0,0,-0.0085) - open -
  • -
  • - 4 - flat - close - normal -
  • -
  • - 30 - normal -
  • -
    - -
  • Wait_Combat
  • -
    - 10301 - 1000 - 2000 -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Wait_Downed.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Wait_Downed.xml deleted file mode 100644 index b5dab76..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Wait_Downed.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - ArachnaeNode_Wait_Downed - ArachnaeNode_Race_Myrmecocystus - -
  • - 30 - (0,0,0.015) - (0,0,0.01) - (0,0,0.01) - flat - (0,0,0.0025) - open -
  • -
  • - 3 - (0,0,0.0075) - (0,0,0.005) - (0,0,0.005) - flat - normal -
  • -
    - 0 - 100 - -
  • Wait_Downed
  • -
    - 10000 - true -
    - - - Wait_Downed2 - -
  • - 3 - (0,0,0.005) - flat -
  • -
    - -
  • Wait_Downed
  • -
    - 10001 - true -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Wear.xml b/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Wear.xml deleted file mode 100644 index 03d1202..0000000 --- a/1.6/1.6/Defs/AnimationDefs/ArachnaeNode_Race/ForJobs/Wear.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - ArachnaeNode_Wear - ArachnaeNode_Race_Myrmecocystus - -
  • - 10 - (0,0,0.0) - (-0.005,0,0.005) - open - blush -
  • -
  • - 10 - (0,0,0.0) - (0.005,0,0.005) - open - blush -
  • -
  • - 10 - (0,0,0.0) - (0,0,0.005) - open - blush -
  • -
    - -
  • Wear
  • -
    - 105 - true - 30 - 300 -
    - - - ArachnaeNode_Wear2 - ArachnaeNode_Race_Myrmecocystus - -
  • - 1 - s-shaped - normal - (0.0,0,0.005) - blush -
  • -
    - -
  • Wear
  • -
    - 104 - true -
    - - - Wear3 - -
  • - 120 - flat - close - (0.0,0,0.005) - blush -
  • -
    - -
  • Wear
  • -
    - 110 - true - 30 - 300 -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AnimationDefs/WULA_Mech_Flyer_Anim.xml b/1.6/1.6/Defs/AnimationDefs/WULA_Mech_Flyer_Anim.xml new file mode 100644 index 0000000..34824ca --- /dev/null +++ b/1.6/1.6/Defs/AnimationDefs/WULA_Mech_Flyer_Anim.xml @@ -0,0 +1,58 @@ + + + + + + WULA_Mech_Flyer_North + 4 + true + +
  • + ARA_Flight_Attachment + + +
  • WULA_Mech_Flyer_Flying_north_0_gs0
  • +
  • WULA_Mech_Flyer_Flying_north_1_gs2
  • + + + +
    +
    + + + + WULA_Mech_Flyer_East + 4 + true + +
  • + ARA_Flight_Attachment + + +
  • WULA_Mech_Flyer_Flying_east_0_gs0
  • +
  • WULA_Mech_Flyer_Flying_east_1_gs2
  • + + + +
    +
    + + + + WULA_Mech_Flyer_South + 4 + true + +
  • + ARA_Flight_Attachment + + +
  • WULA_Mech_Flyer_Flying_south_0_gs0
  • +
  • WULA_Mech_Flyer_Flying_south_1_gs2
  • + + + +
    +
    + +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/GraphicStateDefs/WULA_Mech_Flyer_Graphics.xml b/1.6/1.6/Defs/GraphicStateDefs/WULA_Mech_Flyer_Graphics.xml new file mode 100644 index 0000000..92aadc2 --- /dev/null +++ b/1.6/1.6/Defs/GraphicStateDefs/WULA_Mech_Flyer_Graphics.xml @@ -0,0 +1,52 @@ + + + + + + WULA_Mech_Flyer_Flying_north_0_gs + + Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer_Flying_north_0 + 1.35 + + + + WULA_Mech_Flyer_Flying_north_1_gs + + Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer_Flying_north_1 + 1.35 + + + + + + WULA_Mech_Flyer_Flying_east_0_gs + + Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer_Flying_east_0 + 1.35 + + + + WULA_Mech_Flyer_Flying_east_1_gs + + Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer_Flying_east_1 + 1.35 + + + + + + WULA_Mech_Flyer_Flying_south_0_gs + + Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer_Flying_south_0 + 1.35 + + + + WULA_Mech_Flyer_Flying_south_1_gs + + Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer_Flying_south_1 + 1.35 + + + + \ No newline at end of file diff --git a/1.6/1.6/Defs/HeadType_Defs/ARA_HeadTypeDefs.xml b/1.6/1.6/Defs/HeadType_Defs/ARA_HeadTypeDefs.xml index ea612ad..3b0e85e 100644 --- a/1.6/1.6/Defs/HeadType_Defs/ARA_HeadTypeDefs.xml +++ b/1.6/1.6/Defs/HeadType_Defs/ARA_HeadTypeDefs.xml @@ -12,7 +12,7 @@ ARA_QUEEN_Female_AverageNormalA - Textures/Pawns/General/Invisible/Inv + ArachnaeSwarm/Things/General/Invisible/Inv diff --git a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml index 2087809..8bf5e9b 100644 --- a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml +++ b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml @@ -169,7 +169,7 @@ 0 - + ArachnaeNode_Race_Facehugger ArachnaeNode_Race_Facehugger @@ -219,6 +219,11 @@ ArachnaeNode_Race_Skyraider PlayerColony 0 + Things/Pawn/Animal/Goose/Goose_Flying_ + 1.35 + 2 + 2 + false
  • diff --git a/1.6/1.6/Defs/PawnRenderNodeTagDefs/ARA_NodeTagDefs.xml b/1.6/1.6/Defs/PawnRenderNodeTagDefs/ARA_NodeTagDefs.xml new file mode 100644 index 0000000..f5ee0bc --- /dev/null +++ b/1.6/1.6/Defs/PawnRenderNodeTagDefs/ARA_NodeTagDefs.xml @@ -0,0 +1,6 @@ + + + + ARA_Flight_Attachment + + \ No newline at end of file diff --git a/1.6/1.6/Defs/PawnRenderTreeDefs/ARA_RenderTree.xml b/1.6/1.6/Defs/PawnRenderTreeDefs/ARA_RenderTree.xml new file mode 100644 index 0000000..1973a1d --- /dev/null +++ b/1.6/1.6/Defs/PawnRenderTreeDefs/ARA_RenderTree.xml @@ -0,0 +1,153 @@ + + + + ARA_ArachnaeRenderTree + + Root + Root + +
  • + Body + PawnRenderNode_Body + PawnRenderNodeWorker_Body + Body + Body + Skin + true + true + +
  • + Body tattoo + PawnRenderNode_Tattoo_Body + PawnRenderNodeWorker_Body_Tattoo + Skin + true + 2 + Fresh, Rotting +
  • +
  • + Wounds - pre apparel + PawnRenderNodeWorker_OverlayWounds + Body + 8 +
  • +
  • + Baby swaddle + PawnRenderNode_Swaddle + PawnRenderNodeWorker_Swaddle + Things/Pawn/Humanlike/Apparel/SwaddledBaby/Swaddled_Child + 0.1 + 0.6~0.89 + 10 +
  • + + +
  • + Arachnae Flight Attachment + ARA_Flight_Attachment + ArachnaeSwarm/Things/General/Invisible/Inv + -10 +
  • + + +
  • + Apparel root + ApparelBody + 20 +
  • +
  • + Wounds - post apparel + PawnRenderNodeWorker_OverlayWounds + true + Body + 30 +
  • +
  • + Firefoam + PawnRenderNodeWorker_OverlayFirefoam + Body + 40 +
  • + + +
  • + Head stump + PawnRenderNode_Stump + PawnRenderNodeWorker_Stump + Things/Pawn/Humanlike/Heads/None_Average_Stump + 50 + Skin + Head + true + true + Fresh, Rotting +
  • +
  • + Head + PawnRenderNode_Head + PawnRenderNodeWorker_Head + Head + Head + 50 + Skin + true + true + +
  • + Head tattoo + PawnRenderNode_Tattoo_Head + PawnRenderNodeWorker_Tattoo_Head + Fresh, Rotting + Skin + 52 +
  • +
  • + Beard + PawnRenderNode_Beard + PawnRenderNodeWorker_Beard + Fresh, Rotting + Hair + Beard + 60 +
  • +
  • + Hair + PawnRenderNode_Hair + PawnRenderNodeWorker_FlipWhenCrawling + Fresh, Rotting + Hair + Hair + 62 +
  • +
  • + Head wounds + PawnRenderNodeWorker_OverlayWounds + Head + 65 +
  • +
  • + Apparel root + ApparelHead + 70 +
  • +
  • + Firefoam + PawnRenderNodeWorker_OverlayFirefoam + Head + 85 +
  • +
  • + Status overlay + PawnRenderNodeWorker_OverlayStatus + 100 +
  • + + +
  • + Weapon/carried thing + PawnRenderNodeWorker_Carried +
  • + + + + \ No newline at end of file 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 7f0bbaf..b0491f2 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml @@ -1169,85 +1169,20 @@ true + -
  • - - - +
  • - - Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer_Flying_ + + Drafted - - 2 - - - 2 - - - - - - - 1.35 - - - (0, 0.1, -0.2) - - - false - - - Body - - - 90 - - - - - - - 40 - - - 40 - - - 15 - - - 10 - - - 1.0 - - - - - - - - -
  • (0, 0)
  • -
  • (0.5, 0.6)
  • -
  • (1, 1)
  • - - - - - - -
  • (0, 1)
  • -
  • (0.5, 0.4)
  • -
  • (1, 0)
  • -
    -
    + + WULA_Mech_Flyer_North + WULA_Mech_Flyer_East + WULA_Mech_Flyer_South - -
    @@ -1255,6 +1190,9 @@ 4.5 + 9999 + 0 + @@ -1295,6 +1233,8 @@ ArachnaeFighter_Body + ARA_ArachnaeRenderTree + 1.0 0.85 2 5 diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index 0b17708..1129ebc 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -141,8 +141,6 @@ - - diff --git a/Source/ArachnaeSwarm/CompPawnFlight.cs b/Source/ArachnaeSwarm/CompPawnFlight.cs index 31e8b76..58d39e2 100644 --- a/Source/ArachnaeSwarm/CompPawnFlight.cs +++ b/Source/ArachnaeSwarm/CompPawnFlight.cs @@ -1,132 +1,14 @@ -using UnityEngine; using Verse; -using Verse.AI; -using RimWorld; -using System.Collections.Generic; namespace ArachnaeSwarm { + /// + /// 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. + /// public class CompPawnFlight : ThingComp { - private enum FlightState { Grounded, TakingOff, Flying, Landing } - - private FlightState flightState; - private int flightTicks = -1; - private int flightCooldownTicks; - private int lerpTick; - - private Dictionary> cachedGraphics = new Dictionary>(); - private PawnRenderNode_AnimatedAttachment activeWingNode; - - private Pawn Pawn => (Pawn)parent; public CompProperties_PawnFlight Props => (CompProperties_PawnFlight)props; - - public bool Flying => flightState != FlightState.Grounded; - public bool ShouldShowWings => flightState != FlightState.Grounded; - - // Hardcoded curves, similar to vanilla Pawn_FlightTracker - private static readonly SimpleCurve TakeoffCurve = new SimpleCurve { new CurvePoint(0f, 0f), new CurvePoint(0.5f, 0.6f), new CurvePoint(1f, 1f) }; - private static readonly SimpleCurve LandingCurve = new SimpleCurve { new CurvePoint(0f, 1f), new CurvePoint(0.5f, 0.4f), new CurvePoint(1f, 0f) }; - - - public override void CompTick() - { - base.CompTick(); - if (!parent.Spawned) return; - - FlightState oldState = flightState; - - switch (flightState) - { - case FlightState.TakingOff: - lerpTick++; - if (lerpTick >= Props.takeoffDurationTicks) { flightState = FlightState.Flying; lerpTick = 0; } - break; - case FlightState.Landing: - lerpTick++; - if (lerpTick >= Props.landingDurationTicks) { flightState = FlightState.Grounded; lerpTick = 0; flightCooldownTicks = (int)(Props.flightCooldownSeconds * 60f); } - break; - case FlightState.Flying: - flightTicks++; - if (flightTicks >= Props.maxFlightTimeSeconds * 60f) { flightState = FlightState.Landing; } - break; - case FlightState.Grounded: - if (flightCooldownTicks > 0) { flightCooldownTicks--; } - break; - } - - if (oldState != flightState) - { - StateChanged(); - } - } - - private void StateChanged() - { - Pawn.Drawer.renderer.SetAllGraphicsDirty(); - } - - public void Notify_JobStarted(Job job) - { - bool isFlyingOrTakingOff = flightState == FlightState.Flying || flightState == FlightState.TakingOff; - bool wantsToFly = (job.def.tryStartFlying || (job.def.ifFlyingKeepFlying && isFlyingOrTakingOff)); - if (wantsToFly && flightState == FlightState.Grounded && flightCooldownTicks <= 0 && Rand.Chance(Props.flightStartChanceOnJobStart)) - { - flightState = FlightState.TakingOff; - flightTicks = 0; - lerpTick = 0; - StateChanged(); - } - else if (!wantsToFly && isFlyingOrTakingOff) - { - flightState = FlightState.Landing; - lerpTick = 0; - StateChanged(); - } - } - - public void LinkToRenderNode(PawnRenderNode_AnimatedAttachment node) - { - activeWingNode = node; - } - - public int GetCurrentFrame(int totalFrames) - { - if (totalFrames == 0) return 0; - int currentTickInAnim = (flightState == FlightState.Flying) ? flightTicks : lerpTick; - return (currentTickInAnim / Props.ticksPerFrame) % totalFrames; - } - - public List GetGraphicsForRotation(Rot4 rot) - { - if (cachedGraphics.TryGetValue(rot, out var graphics)) return graphics; - - var newGraphics = new List(); - bool isFemale = Pawn.gender == Gender.Female && !string.IsNullOrEmpty(Props.flyingAnimationFramePathPrefixFemale); - string prefix = isFemale ? Props.flyingAnimationFramePathPrefixFemale : Props.flyingAnimationFramePathPrefix; - string suffix = (rot == Rot4.North) ? "_north" : (rot == Rot4.South) ? "_south" : "_east"; - - if (rot == Rot4.West) suffix = "_east"; - - for (int i = 1; i <= Props.flyingAnimationFrameCount; i++) - { - string path = prefix + i + suffix; - Color color = Props.inheritColors ? Pawn.story.SkinColor : Color.white; - var graphic = GraphicDatabase.Get(path, ShaderDatabase.Transparent, Vector2.one * Props.drawSize, color); - newGraphics.Add(graphic); - } - - cachedGraphics[rot] = newGraphics; - return newGraphics; - } - - public override void PostExposeData() - { - base.PostExposeData(); - Scribe_Values.Look(ref flightTicks, "flightTicks", -1); - Scribe_Values.Look(ref flightCooldownTicks, "flightCooldownTicks", 0); - Scribe_Values.Look(ref lerpTick, "lerpTick", 0); - Scribe_Values.Look(ref flightState, "flightState", FlightState.Grounded); - } } } \ No newline at end of file diff --git a/Source/ArachnaeSwarm/CompProperties_PawnFlight.cs b/Source/ArachnaeSwarm/CompProperties_PawnFlight.cs index fd10f65..26da5b6 100644 --- a/Source/ArachnaeSwarm/CompProperties_PawnFlight.cs +++ b/Source/ArachnaeSwarm/CompProperties_PawnFlight.cs @@ -1,33 +1,45 @@ using Verse; using RimWorld; -using UnityEngine; namespace ArachnaeSwarm { + public enum FlightCondition + { + Drafted + } + public class CompProperties_PawnFlight : CompProperties { - // --- Animation --- + // --- Custom Flight Logic --- + public FlightCondition flightCondition = FlightCondition.Drafted; + + // --- Vanilla PawnKindDef Flight Parameters --- + [NoTranslate] public string flyingAnimationFramePathPrefix; + + [NoTranslate] public string flyingAnimationFramePathPrefixFemale; - public int flyingAnimationFrameCount = 1; - public int ticksPerFrame = 2; - - // --- Render Node Properties (Defined directly here) --- - public Vector3 offset = Vector3.zero; - public float drawSize = 1f; - public bool inheritColors = false; - public PawnRenderNodeTagDef parentTagDef; // e.g., "Body" - public float baseLayer = 85f; - // --- Flight Mechanics --- - public int takeoffDurationTicks = 50; - public int landingDurationTicks = 50; - public float maxFlightTimeSeconds = 5f; - public float flightCooldownSeconds = 2f; - public float flightStartChanceOnJobStart = 0.5f; + 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; - // takeoffCurve and landingCurve are removed as they cannot be loaded directly from XML. - // They will be hardcoded in the CompPawnFlight class. public CompProperties_PawnFlight() { diff --git a/Source/ArachnaeSwarm/DynamicPawnRenderNodeSetup_FlightWings.cs b/Source/ArachnaeSwarm/DynamicPawnRenderNodeSetup_FlightWings.cs deleted file mode 100644 index 150205e..0000000 --- a/Source/ArachnaeSwarm/DynamicPawnRenderNodeSetup_FlightWings.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using Verse; -using RimWorld; -using HarmonyLib; // Required for AccessTools - -namespace ArachnaeSwarm -{ - public class DynamicPawnRenderNodeSetup_FlightWings : DynamicPawnRenderNodeSetup - { - public override bool HumanlikeOnly => false; - - public override IEnumerable<(PawnRenderNode node, PawnRenderNode parent)> GetDynamicNodes(Pawn pawn, PawnRenderTree tree) - { - CompPawnFlight flightComp = pawn.GetComp(); - if (flightComp != null && flightComp.ShouldShowWings) - { - // Create properties directly from CompProperties - var nodeProps = new PawnRenderNodeProperties - { - nodeClass = typeof(PawnRenderNode_AnimatedAttachment), - workerClass = AccessTools.TypeByName("Verse.PawnRenderNodeWorker_Flip"), - parentTagDef = flightComp.Props.parentTagDef ?? PawnRenderNodeTagDefOf.Body, - baseLayer = flightComp.Props.baseLayer - }; - - // Create a new DrawData struct and set its offset, then assign it. - DrawData drawData = new DrawData(); - typeof(DrawData).GetField("offset").SetValueDirect(__makeref(drawData), flightComp.Props.offset); - nodeProps.drawData = drawData; - - if (tree.ShouldAddNodeToTree(nodeProps)) - { - var newNode = (PawnRenderNode_AnimatedAttachment)Activator.CreateInstance( - nodeProps.nodeClass, pawn, nodeProps, tree - ); - - flightComp.LinkToRenderNode(newNode); - yield return (node: newNode, parent: null); - } - } - yield break; - } - } -} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/HarmonyPatches.cs b/Source/ArachnaeSwarm/HarmonyPatches.cs index f2a9aa8..db53363 100644 --- a/Source/ArachnaeSwarm/HarmonyPatches.cs +++ b/Source/ArachnaeSwarm/HarmonyPatches.cs @@ -1,70 +1,100 @@ using HarmonyLib; using Verse; -using System.Reflection; using RimWorld; +using Verse.AI; namespace ArachnaeSwarm { - [StaticConstructorOnStartup] - public static class HarmonyPatches + // Note: We are no longer patching PawnGenerator. + // We will inject/override flight logic at more precise points. + [HarmonyPatch] + public static class FlightHarmonyPatches { - private static readonly FieldInfo flightField = AccessTools.Field(typeof(Pawn), "flight"); - - static HarmonyPatches() + // Patch 1: Override the animation selection + [HarmonyPrefix] + [HarmonyPatch(typeof(Pawn_FlightTracker), "GetBestFlyAnimation")] + public static bool GetBestFlyAnimation_Prefix(Pawn_FlightTracker __instance, Pawn ___pawn, Rot4? facingOverride, ref AnimationDef __result) { - var harmony = new Harmony("com.arachnaeswarm.flightcomp"); - - harmony.Patch(AccessTools.Method(typeof(PawnComponentsUtility), nameof(PawnComponentsUtility.AddComponentsForSpawn)), - postfix: new HarmonyMethod(typeof(HarmonyPatches), nameof(DisableVanillaFlightTracker))); - - harmony.Patch(AccessTools.PropertyGetter(typeof(Pawn), nameof(Pawn.Flying)), - postfix: new HarmonyMethod(typeof(HarmonyPatches), nameof(OverrideFlyingProperty))); - - harmony.Patch(AccessTools.Method(typeof(Pawn), nameof(Pawn.ExposeData)), - prefix: new HarmonyMethod(typeof(HarmonyPatches), nameof(PreventVanillaFlightTrackerSave_Prefix)), - postfix: new HarmonyMethod(typeof(HarmonyPatches), nameof(PreventVanillaFlightTrackerSave_Postfix))); - } - - public static void DisableVanillaFlightTracker(Pawn pawn) - { - if (pawn.TryGetComp() != null) + var flightComp = ___pawn.TryGetComp(); + if (flightComp == null) { - flightField?.SetValue(pawn, null); + return true; // Let original method run for non-comped pawns } - } - public static void OverrideFlyingProperty(Pawn __instance, ref bool __result) - { - var comp = __instance.TryGetComp(); - if (comp != null) + var compProps = flightComp.Props; + bool isFemale = ___pawn.gender == Gender.Female; + + // Determine which animation to use based on rotation and gender + AnimationDef selectedAnim = null; + switch ((facingOverride ?? ___pawn.Rotation).AsInt) { - __result = comp.Flying; + case 0: // North + selectedAnim = isFemale ? compProps.flyingAnimationNorthFemale : compProps.flyingAnimationNorth; + break; + case 1: // East + selectedAnim = isFemale ? compProps.flyingAnimationEastFemale : compProps.flyingAnimationEast; + break; + case 2: // South + selectedAnim = isFemale ? compProps.flyingAnimationSouthFemale : compProps.flyingAnimationSouth; + break; + case 3: // West - Use East animation as fallback if West is not defined + selectedAnim = isFemale ? (compProps.flyingAnimationEastFemale ?? compProps.flyingAnimationEast) : compProps.flyingAnimationEast; + break; } - } - - // Correct fix: Use 'object' to store the instance, avoiding direct type reference at compile time. - private static object tempFlightTracker; - public static void PreventVanillaFlightTrackerSave_Prefix(Pawn __instance) - { - if (__instance.TryGetComp() != null) + // If we have a valid animation from our comp, use it and stop the original method. + if (selectedAnim != null) { - object flightTrackerInstance = flightField?.GetValue(__instance); - if (flightTrackerInstance != null) + __result = selectedAnim; + return false; // Stop original method + } + + return true; // Fallback to original if no animation is found in comp + } + + + // Patch 2: Decide whether to fly when a new job starts + [HarmonyPrefix] + [HarmonyPatch(typeof(Pawn_FlightTracker), "Notify_JobStarted")] + public static bool Notify_JobStarted_Prefix(Job job, Pawn_FlightTracker __instance, Pawn ___pawn) + { + var flightComp = ___pawn.TryGetComp(); + if (flightComp == null || !__instance.CanEverFly || ___pawn.Dead) + { + return true; // Let original method run + } + + var compProps = flightComp.Props; + bool shouldBeFlying = false; + + // Check our custom condition + if (compProps.flightCondition == FlightCondition.Drafted) + { + if (___pawn.Drafted) { - tempFlightTracker = flightTrackerInstance; - flightField.SetValue(__instance, null); + shouldBeFlying = true; } } - } - public static void PreventVanillaFlightTrackerSave_Postfix(Pawn __instance) - { - if (tempFlightTracker != null) + // Apply the decision + if (shouldBeFlying) { - flightField?.SetValue(__instance, tempFlightTracker); - tempFlightTracker = null; + if (!__instance.Flying) + { + __instance.StartFlying(); + } + job.flying = true; // Mark the job as a flying job } + else + { + if (__instance.Flying) + { + __instance.ForceLand(); + } + job.flying = false; + } + + return false; // We have handled the logic, stop the original method. } } } \ No newline at end of file diff --git a/Source/ArachnaeSwarm/PawnRenderNode_AnimatedAttachment.cs b/Source/ArachnaeSwarm/PawnRenderNode_AnimatedAttachment.cs deleted file mode 100644 index 8a954a6..0000000 --- a/Source/ArachnaeSwarm/PawnRenderNode_AnimatedAttachment.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; -using Verse; - -namespace ArachnaeSwarm -{ - public class PawnRenderNode_AnimatedAttachment : PawnRenderNode - { - private CompPawnFlight flightComp; - private List cachedGraphics; - - public PawnRenderNode_AnimatedAttachment(Pawn pawn, PawnRenderNodeProperties props, PawnRenderTree tree) : base(pawn, props, tree) - { - flightComp = pawn.GetComp(); - } - - public override Graphic GraphicFor(Pawn pawn) - { - if (flightComp == null) return null; - - if (cachedGraphics == null) - { - cachedGraphics = flightComp.GetGraphicsForRotation(pawn.Rotation); - } - - if (cachedGraphics.NullOrEmpty()) return null; - - int frame = flightComp.GetCurrentFrame(cachedGraphics.Count); - return cachedGraphics[frame]; - } - - // We might need to override this if west-facing graphics need to be flipped. - // public override Mesh GetMesh(PawnDrawParms parms) - // { - // return base.GetMesh(parms); - // } - } -} \ No newline at end of file