From ab63e4cd0cad29a5875bb81aa0ba4f2e6c3b1ec2 Mon Sep 17 00:00:00 2001 From: Snowram Date: Thu, 12 Nov 2020 00:17:12 +0100 Subject: [PATCH] Adds mindflayer npc --- .../npc_weapons/staff/mindflayer_staff.ron | 14 ++++ assets/common/npc_names.json | 4 ++ .../voxel/biped_large_central_manifest.ron | 60 ++++++++++++++++ .../voxel/biped_large_lateral_manifest.ron | 68 ++++++++++++++++++ .../voxel/npc/mindflayer/male/foot_l.vox | Bin 0 -> 1684 bytes .../voxel/npc/mindflayer/male/foot_r.vox | Bin 0 -> 1680 bytes .../voxel/npc/mindflayer/male/hand_l.vox | Bin 0 -> 2244 bytes .../voxel/npc/mindflayer/male/hand_r.vox | Bin 0 -> 2244 bytes .../voxel/npc/mindflayer/male/head.vox | Bin 0 -> 4844 bytes .../voxel/npc/mindflayer/male/leg_l.vox | Bin 0 -> 4940 bytes .../voxel/npc/mindflayer/male/leg_r.vox | Bin 0 -> 4940 bytes .../voxel/npc/mindflayer/male/shoulder_l.vox | Bin 0 -> 1816 bytes .../voxel/npc/mindflayer/male/shoulder_r.vox | Bin 0 -> 1816 bytes .../voxel/npc/mindflayer/male/torso_lower.vox | Bin 0 -> 1996 bytes .../voxel/npc/mindflayer/male/torso_upper.vox | Bin 0 -> 4572 bytes .../weapon/staff/firestaff_mindflayer.vox | Bin 0 -> 3252 bytes assets/voxygen/voxel/weapon/staff/orc-0.vox | Bin 1392 -> 0 bytes common/src/comp/body/biped_large.rs | 6 +- common/src/loadout_builder.rs | 5 ++ voxygen/src/anim/src/biped_large/mod.rs | 17 +++-- voxygen/src/anim/src/biped_large/wield.rs | 6 +- 21 files changed, 171 insertions(+), 9 deletions(-) create mode 100644 assets/common/items/npc_weapons/staff/mindflayer_staff.ron create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/head.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/shoulder_l.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/shoulder_r.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/torso_lower.vox create mode 100644 assets/voxygen/voxel/npc/mindflayer/male/torso_upper.vox create mode 100644 assets/voxygen/voxel/weapon/staff/firestaff_mindflayer.vox delete mode 100644 assets/voxygen/voxel/weapon/staff/orc-0.vox diff --git a/assets/common/items/npc_weapons/staff/mindflayer_staff.ron b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron new file mode 100644 index 0000000000..de92e5a518 --- /dev/null +++ b/assets/common/items/npc_weapons/staff/mindflayer_staff.ron @@ -0,0 +1,14 @@ +ItemDef( + name: "Mindflayer Staff", + description: "Placeholder", + kind: Tool( + ( + kind: Staff, + stats: ( + equip_time_millis: 500, + power: 1.00, + ), + ) + ), + quality: Low, +) diff --git a/assets/common/npc_names.json b/assets/common/npc_names.json index e58400d576..acb401b7ee 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -617,6 +617,10 @@ "saurok_sly": { "keyword": "saurok_sly", "generic": "Sly Saurok" + }, + "mindflayer": { + "keyword": "mindflayer", + "generic": "Mindflayer" } } }, diff --git a/assets/voxygen/voxel/biped_large_central_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron index 49cdbf1642..c3e3c66bb4 100644 --- a/assets/voxygen/voxel/biped_large_central_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -539,4 +539,64 @@ central: ("weapon.bow.longbow_saurok"), ) ), + (Mindflayer, Male): ( + head: ( + offset: (-8.5, -8.0, -10.5), + central: ("npc.mindflayer.male.head"), + ), + torso_upper: ( + offset: (-10.5, -8.5, -11.0), + central: ("npc.mindflayer.male.torso_upper"), + ), + torso_lower: ( + offset: (-4.5, -6.0, -7.5), + central: ("npc.mindflayer.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + main: ( + offset: (-5.5, -3.5, -4.0), + central: ("weapon.staff.firestaff_mindflayer"), + ) + ), + (Mindflayer, Female): ( + head: ( + offset: (-8.5, -8.0, -10.5), + central: ("npc.mindflayer.male.head"), + ), + torso_upper: ( + offset: (-10.5, -8.5, -11.0), + central: ("npc.mindflayer.male.torso_upper"), + ), + torso_lower: ( + offset: (-4.5, -6.0, -7.5), + central: ("npc.mindflayer.male.torso_lower"), + ), + jaw: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + second: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + main: ( + offset: (-5.5, -3.5, -4.0), + central: ("weapon.staff.firestaff_mindflayer"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/biped_large_lateral_manifest.ron b/assets/voxygen/voxel/biped_large_lateral_manifest.ron index 784fb1d729..7a219f56a8 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -611,4 +611,72 @@ lateral: ("npc.saurok_sly.female.foot_r"), ), ), + (Mindflayer, Male): ( + shoulder_l: ( + offset: (-4.5, -3.0, -4.0), + lateral: ("npc.mindflayer.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-4.5, -3.0, -4.0), + lateral: ("npc.mindflayer.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.mindflayer.male.hand_l"), + ), + hand_r: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.mindflayer.male.hand_r"), + ), + leg_l: ( + offset: (-6.5, -10.0, -16.0), + lateral: ("npc.mindflayer.male.leg_l"), + ), + leg_r: ( + offset: (-6.5, -10.0, -16.0), + lateral: ("npc.mindflayer.male.leg_r"), + ), + foot_l: ( + offset: (-2.0, -4.5, -4.0), + lateral: ("npc.mindflayer.male.foot_l"), + ), + foot_r: ( + offset: (-2.0, -4.5, -4.0), + lateral: ("npc.mindflayer.male.foot_r"), + ) + ), + (Mindflayer, Female): ( + shoulder_l: ( + offset: (-4.5, -3.0, -4.0), + lateral: ("npc.mindflayer.male.shoulder_l"), + ), + shoulder_r: ( + offset: (-4.5, -3.0, -4.0), + lateral: ("npc.mindflayer.male.shoulder_r"), + ), + hand_l: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.mindflayer.male.hand_l"), + ), + hand_r: ( + offset: (-4.5, -4.0, -12.0), + lateral: ("npc.mindflayer.male.hand_r"), + ), + leg_l: ( + offset: (-6.5, -10.0, -16.0), + lateral: ("npc.mindflayer.male.leg_l"), + ), + leg_r: ( + offset: (-6.5, -10.0, -16.0), + lateral: ("npc.mindflayer.male.leg_r"), + ), + foot_l: ( + offset: (-2.0, -4.5, -4.0), + lateral: ("npc.mindflayer.male.foot_l"), + ), + foot_r: ( + offset: (-2.0, -4.5, -4.0), + lateral: ("npc.mindflayer.male.foot_r"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/npc/mindflayer/male/foot_l.vox b/assets/voxygen/voxel/npc/mindflayer/male/foot_l.vox new file mode 100644 index 0000000000000000000000000000000000000000..bf71a3cd206e897da14f196bf8d7120958087530 GIT binary patch literal 1684 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 HT)rodwYdw$ z9-Eq)a6ypgnZlJ+X;V4}3x zC?_t;85gC4M(N0yTrlQ@Sd$fJvc{Pckus;|gcX}JkrCkzuVMvjy`g?wJQmoiUE zJ|BDb^6bUYMoIQfvTu@olkA&h-z57c**D3)%-baUGEYjL0`rk$&9O#~lstueUb&Yt zPf9)?d-n3|#nGCAQ;w93EjVRu0pG&{zJ~>T51Dh!Ip#>o=VRp>QhI)AL%lrsTLgZ( zy1H=xh+x^NevB#n8-ElQ;@Y*QdNDk-_RRzg+b9^jTQKREVE$EsyukjQG34lzkV}Qw zKVb;YPA$Tn1*O39(Wn(cBmF?X($O7)3m*usofRBvUH#C34J+~bl3KLX33jX%q&Epp zcL)|$339E^pkp!DZC{RYLx*5Xssf$Om1wQ3M5?R|d!|(5+_FXZblDQjD=)?T>E&4Q zY$Z0YosG8Tg6lCy+SC6)r zSD|a$1{~b=Dmve6L3(c+`p)jdt?Q?-pk@-{bhd~$OH z?xOsW_ivpe1NT4q({E^=S%UR*M`G&cF3j4tAMKaEM8_9jA7IzIgB*1#PX?#W_B=IX#5>+0%oUjT^-f5P4p z-1}Sx&UcUR*ZmJndi$^wW#qhZ=p>)cHM?EY506^>4 AEC2ui literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/mindflayer/male/head.vox b/assets/voxygen/voxel/npc/mindflayer/male/head.vox new file mode 100644 index 0000000000000000000000000000000000000000..4317048c81dec6c00c37aa27435011bf39f6649a GIT binary patch literal 4844 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 XUOjxudvB39UHl2zeD0I4$E*Gc4d9^> literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/mindflayer/male/leg_l.vox b/assets/voxygen/voxel/npc/mindflayer/male/leg_l.vox new file mode 100644 index 0000000000000000000000000000000000000000..e8b0b685f9808781b5ca2b9af3e77e7b6116a56f GIT binary patch literal 4940 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/mindflayer/male/leg_r.vox b/assets/voxygen/voxel/npc/mindflayer/male/leg_r.vox new file mode 100644 index 0000000000000000000000000000000000000000..abc705d27e1ade7b3255198b0df3b00defbfc72d GIT binary patch literal 4940 zcmajieW>4M8OQPK_r31xzVGkj@64TT?x9WR)6TY>b2^<pH!xz7bZr&WaiW{RH7 zD0&6gg-j^|*Ci_Slw4(?2r%vwGD?-HiYbBD1sN1j1Q;TDV&))ICD&ry8}}%=&JhWj z`^@K+GN?+KsZmy3S29(jskpDXuj!B*Uf(cVbX<3QZlBNX^F4i;i9<3-Lv$#Ict)nq zlbJA2rVNqm64h*Wp3E4+{MmE%rc`^Jvp3ZXy{RJfI1l$Q?jsV!=&d&>pa?KTBxL#+ zxkiq>CovN&8+Dgt{Y~{Y?&Ridk~9z6)_^_W25) zui*KLfmkuM*&5EAvW|4eapE}KoMYwNG*Hl^d;?dI&|y-5eeES z>ytq&u(QC<0y_)rEU>e{&ccViNDhr*Ixr0plIRj0G|@2)5t8XL9W>K14G{@a(wFqm zlAdXZNRW!YqK8)WOhZJ1)buqyw5DeoA`+ybZ|I>7J<|}8AZ=i0ft`hyw54z95s^@I zM#BKwN$E3&W1z9Rb~gT~0dBKsmw6wOz1gYpNdT2$@G(;pwO<&VPYkH<3B0(DZh926`GYt_5 z(k6D5*i~Xz^esIi5{izzBk#x&k)VCDJ{iO^yUOe;v#ZRmGP}y`iVTVXgCz1q4n=?= zLNZ;ZgCf8Xksu{~Ne@MUAtFI4`idTk07FEA)buqy6aj{a1Zn6SdME-65ed>}c9q#x zW>@quL?jd)c}EUIM1uA+yW;&;vZs^ykwFn)kW8M*p$ITUNJ&@HK@nhxkczINgCf8XAvIl1 z2StD(LK?b;4vGLngtQgsuQ-3j`RQPYC_1u^42B5pSDc^sSRStf%bz#t`gNe)GTK`Qc!9Et#g)Z{fe6afZl$QyDf0u0i2Ja@-) zcRY8;ze8lHKj@)=WUf&_5g=uMqF0hZ5g-*=MFvHH)MPao6amtZHDpi(NK1yI?eh$M zo}oYZ-0e5t#Q(p}{Ww39lav0z^Ws|uXZ)h!fBD~shyC>F?X#7?y7lLuXlQhyZ{BmY zkA3|{ADQ0dGG;FOE0<&Extv+(L)*m{Js`ej>@r{b6Y;!Xygej7|A_d)SH!Q{Ui-EO zhJ5_7`Tq24pYmHL#djPP|MCg(N8aYWJC^wJeJlOq$<@B`)Tl3=81|Kim-yKXRY=u><0_jEK+d{j?vrmG?cg%`cfh z&-ab3^n*KA`QBBld~Er0e|+6)e`U)p{wNsPH~IcA-Q|-H?)GOM z{fZy_#<(AOV!xj{{-mFMbKo~@TTC&eXINjhc@_`S8s9u=i5H<%#a`c@v#5& z?Zy6{uQ=!V_g*V==YR3ffAt+#E%9BOmiZO;Px{plKIIc9f8_^$`5XV%nLqfG@4WA8 zE?W5U`4`ERzFbCqjqLGj(bNC{ literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/mindflayer/male/shoulder_l.vox b/assets/voxygen/voxel/npc/mindflayer/male/shoulder_l.vox new file mode 100644 index 0000000000000000000000000000000000000000..4a5fa844222b2c01135801797696b6310c16a9bc GIT binary patch literal 1816 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/staff/firestaff_mindflayer.vox b/assets/voxygen/voxel/weapon/staff/firestaff_mindflayer.vox new file mode 100644 index 0000000000000000000000000000000000000000..64054e38ef0b7e8e6c36179ee3db6f21bf8f423c GIT binary patch literal 3252 zcmai$ZETfi8OQJEetphqfxeuc_MFq6ms02pIL6DmF*fWAWt6R(b%uc)V(>f>z3E zwdk~3@~Aax$r-iiQ5!|WE{aAyYIHPg!GVVW#^8Yi4)vQnEP1S)1YpB74)s}PE5szA9N1U;Iz8$gJG4Ggn%u|C0t3AHQ_xRM{ z!Rmk?@B=0xhRyW}{;Wyz^g9odd@tg6R z@u|Us)h#^F7T!w>&$EU1(Zcg=;rX{R-^zR|^VHzM=nPqgEJK#526|&Mti=NlA?a;~ zcbVZ`G9R@Kd$78Vb#1I`V^3=EiP|>4D_QoI0HPTpQMrk(E( zy=hvDAm zKG7)8zIoQ!t2N!kLjP9&k-C1*}M+0cnSvRJ$X2F4{4-ivpOJ>PX z2Oa{%c-pa_V?S`N^Nyzv)N$f_e9vBJK&|SkJJnV5sEN92Hljy81Zu6jI9nHI!>9HT zAg0%bHHI~)Lp=oQ7_=n=3l6*`gP2-7GS_v-f}{3mfS6kQu9}0`Goy-}ugLj|bx$2o z9Thoev2LRx&kY{}#PpFaR<$PAtOG~w(SXKiiaavRm}1RQIjcG=>y;I+?S~S?0ikv&=z&7*a{@ z$Q}EDbEUf;4G`mNPX-pe$4BGDQ{}n^2Oa`MQJH&|d0%DjNrrj|5Ywl~l`eBn=5(2R zGN+jXPaPnJ6nPqyVHUJu7OY_wJas^0NRg+LIm?{ovn_Mrz(ar-Qc3Q}9l0ytb*{YR z(Lf)A@vQOXrQnl$RH`PbaEA)-s=^&AysHZ5uW+Z0zc1wAAz1cEe8)O)uEM)uovYN9?jDYG_h<^z)XH>^My7i>1?i;L z>v^W@t1+Y?GV~BbDyel3XYS!|X%90!Wb_aqPHMe@Yy%z&MsK9wNRNUsy=ZUsvyY7o zEBo*Ndk8=C^Yil21tt65SdsOaf6Cu78M$#|B8lX!@t=JnO+#7Pb@%}p``T{lU)(8b z%!!&wi@MYzY9%X86H3~TDcLmEE1Q3;B%V>SWkkp0J+Wa@=hIdi>B z_RK4pyr|?$SCyQ&$=b=h6pwaG&-{Q4E)Pkenvw2vc^SA|lC8h#mG;9*dR|bn`4uIP zyrV>Yj?bTqMO|Dg>RLul_cqIw``hG$M++kRE3!)|8HYc>U*KY0$<^;Dxp76wx#_1q z=FFido53UcnT4YEAFMW#M8EHhtxQs$2zlC#f$S?0bzCFft9k>x9=XfTX-SWrZ4#S0;Dl<>1av zx&PUDdEoeIsb2e~%>Lrn^39ds%c=Ko%ck|&kMG~Ewndz#Wy{t}vg`Co$t~pM&nq+X!6DvRTbuOv_si_;tUR&rny7_2X{)x$_16x{ zr7;97^i#tb-NypAFNMXy>d(EnU0sUfA&;S4c literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/staff/orc-0.vox b/assets/voxygen/voxel/weapon/staff/orc-0.vox deleted file mode 100644 index 9abf8eb2c8ba84483b6dbb19d2ab6cc001acc409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1392 zcmeH_OHWf#5XaAdF4PD3Dxh$0NnDuLm?}zAe3U8_k(LT7h<$;?YBcOjM2#;hAP@@F zMAW#D#KeUQm#z#639vB5tzX0sV8%H&@kAnqz40cKng7h3Ils(3S1zRXzg9|hwZ^-} zss3`MdgGb)N-gBG#LC3##Zu`^JO~No>l6dFPXZMaz_uv>d7%6eu=N3;o&q!ils$&B zXMima0qco^=Q~g}4tSpd)nkBf8mOHEYDNkBicn&xnMNEk>MNEk>MNEk>MNEpcT10)P245ZHp0|^5O0|^5O1J#Veatg5I zKB}7qX)g?xJ)_)M7)TgM7)TgM7)Tg|mGn$YOjt?x!Y+aAWsvh3aF%;IqOI-{-OVW$ z_uu}}9lXy)S=+~<4*qnzix=J9MOzC(ODd4zAI8~IMQiN^;{ z@%-Rv_uQ>_2_Aga&Z$BRU&@EMbGV7yhK_Ob)u4NJv$vB>CC%H4v_&}795UJ$@bS{x zlF{=EFL|;!Wpp;zZ{p4F`CI*F?4mp4gWtd5tn`_4T=a(djotW1{cU{%Cqm(M`Qdwc zZtzsNxxQp>U2P) { pub saurok_occult: SpeciesMeta, pub saurok_mighty: SpeciesMeta, pub saurok_sly: SpeciesMeta, + pub mindflayer: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -77,11 +79,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Occultsaurok => &self.saurok_occult, Species::Mightysaurok => &self.saurok_mighty, Species::Slysaurok => &self.saurok_sly, + Species::Mindflayer => &self.mindflayer, } } } -pub const ALL_SPECIES: [Species; 9] = [ +pub const ALL_SPECIES: [Species; 10] = [ Species::Ogre, Species::Cyclops, Species::Wendigo, @@ -91,6 +94,7 @@ pub const ALL_SPECIES: [Species; 9] = [ Species::Occultsaurok, Species::Mightysaurok, Species::Slysaurok, + Species::Mindflayer, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/loadout_builder.rs b/common/src/loadout_builder.rs index f0be91a52d..0ef9f7ca36 100644 --- a/common/src/loadout_builder.rs +++ b/common/src/loadout_builder.rs @@ -139,6 +139,11 @@ impl LoadoutBuilder { "common.items.npc_weapons.sword.dullahan_sword", )); }, + (biped_large::Species::Mindflayer, _) => { + main_tool = Some(Item::new_from_asset_expect( + "common.items.npc_weapons.staff.mindflayer_staff", + )); + }, }, Body::Humanoid(_) => { if is_giant { diff --git a/voxygen/src/anim/src/biped_large/mod.rs b/voxygen/src/anim/src/biped_large/mod.rs index b99da516b6..b01f413bd6 100644 --- a/voxygen/src/anim/src/biped_large/mod.rs +++ b/voxygen/src/anim/src/biped_large/mod.rs @@ -191,6 +191,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Occultsaurok, _) => (6.0, 3.5), (Mightysaurok, _) => (6.0, 3.5), (Slysaurok, _) => (6.0, 3.5), + (Mindflayer, _) => (5.0, 5.5), }, jaw: match (body.species, body.body_type) { (Ogre, _) => (0.0, 0.0), @@ -202,6 +203,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Occultsaurok, _) => (1.0, -2.5), (Mightysaurok, _) => (1.0, -2.5), (Slysaurok, _) => (1.0, -2.5), + (Mindflayer, _) => (0.0, 0.0), }, upper_torso: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 28.0), @@ -214,6 +216,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Occultsaurok, _) => (3.0, 23.0), (Mightysaurok, _) => (3.0, 23.0), (Slysaurok, _) => (3.0, 23.0), + (Mindflayer, _) => (0.0, 31.0), }, lower_torso: match (body.species, body.body_type) { (Ogre, Male) => (1.0, -7.0), @@ -226,17 +229,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Occultsaurok, _) => (0.0, -6.0), (Mightysaurok, _) => (0.0, -6.0), (Slysaurok, _) => (0.0, -6.0), + (Mindflayer, _) => (5.5, -18.0), }, tail: match (body.species, body.body_type) { - (Ogre, _) => (0.0, 0.0), - (Cyclops, _) => (0.0, 0.0), - (Wendigo, _) => (0.0, 0.0), - (Troll, _) => (0.0, 0.0), - (Dullahan, _) => (0.0, 0.0), (Werewolf, _) => (-5.5, -2.0), (Occultsaurok, _) => (-4.5, -6.0), (Mightysaurok, _) => (-4.5, -6.0), (Slysaurok, _) => (-4.5, -6.0), + (_, _) => (0.0, 0.0), }, shoulder: match (body.species, body.body_type) { (Ogre, Male) => (12.0, 0.5, 0.0), @@ -249,6 +249,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Occultsaurok, _) => (7.5, 1.0, -1.5), (Mightysaurok, _) => (7.5, 1.0, -1.5), (Slysaurok, _) => (7.5, 1.0, -1.5), + (Mindflayer, _) => (8.0, 0.5, -1.0), }, hand: match (body.species, body.body_type) { (Ogre, Male) => (14.5, 0.0, -2.0), @@ -261,6 +262,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Occultsaurok, _) => (8.0, 1.5, -5.5), (Mightysaurok, _) => (8.0, 1.5, -5.5), (Slysaurok, _) => (8.0, 1.5, -5.5), + (Mindflayer, _) => (9.0, 0.5, -4.5), }, leg: match (body.species, body.body_type) { (Ogre, Male) => (0.0, 0.0, -4.0), @@ -273,6 +275,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Occultsaurok, _) => (3.0, 0.5, -6.0), (Mightysaurok, _) => (3.0, 0.5, -6.0), (Slysaurok, _) => (3.0, 0.5, -6.0), + (Mindflayer, _) => (6.0, -2.0, 6.5), }, foot: match (body.species, body.body_type) { (Ogre, Male) => (4.0, 1.0, -13.5), @@ -285,6 +288,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Occultsaurok, _) => (3.5, 2.0, -12.0), (Mightysaurok, _) => (3.5, 2.0, -12.0), (Slysaurok, _) => (3.5, 2.0, -12.0), + (Mindflayer, _) => (4.5, -0.5, -12.5), }, shl: match (body.species, body.body_type) { (Dullahan, _) => (-4.75, -11.0, 8.5, 1.47, -0.2, 0.0), @@ -322,16 +326,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { sthl: match (body.species, body.body_type) { (Ogre, Female) => (-1.0, -5.0, 12.0, 1.27, 0.0, 0.0), (Occultsaurok, _) => (-1.0, -7.0, 12.0, 1.27, 0.0, 0.0), + (Mindflayer, _) => (-1.0, -5.0, 12.0, 1.27, 0.0, 0.0), (_, _) => (11.0, 5.0, -4.0, 1.27, 0.0, 0.0), }, sthr: match (body.species, body.body_type) { (Ogre, Female) => (5.0, -3.5, 18.0, 1.57, 0.8, 0.0), (Occultsaurok, _) => (7.0, -3.5, 18.0, 1.57, 0.8, 0.0), + (Mindflayer, _) => (7.0, -3.5, 18.0, 1.57, 0.8, 0.0), (_, _) => (17.0, 7.5, 2.0, 1.57, 0.8, 0.0), }, stc: match (body.species, body.body_type) { (Ogre, Female) => (-10.0, 7.0, -23.0, -0.3, 0.15, 0.0), (Occultsaurok, _) => (-10.0, 7.0, -22.0, -0.3, 0.15, 0.0), + (Mindflayer, _) => (-10.0, 7.0, -22.0, -0.3, 0.15, 0.0), (_, _) => (-18.0, 1.0, -2.0, -0.3, 0.15, 0.0), }, bhl: match (body.species, body.body_type) { diff --git a/voxygen/src/anim/src/biped_large/wield.rs b/voxygen/src/anim/src/biped_large/wield.rs index bd77702bb5..12d70ad99f 100644 --- a/voxygen/src/anim/src/biped_large/wield.rs +++ b/voxygen/src/anim/src/biped_large/wield.rs @@ -263,10 +263,10 @@ impl Animation for WieldAnimation { next.main.orientation = Quaternion::rotation_y(0.0); }, Some(ToolKind::Staff) => { - next.hand_l.position = Vec3::new(s_a.sthl.0, s_a.sthl.1, s_a.sthl.2); + next.hand_l.position = Vec3::new(s_a.sthl.0 + 2.0, s_a.sthl.1 - 5.5, s_a.sthl.2 - 5.0); next.hand_l.orientation = Quaternion::rotation_x(s_a.sthl.3) * Quaternion::rotation_y(s_a.sthl.4); - next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1, s_a.sthr.2); + next.hand_r.position = Vec3::new(s_a.sthr.0, s_a.sthr.1 - 5.5, s_a.sthr.2 - 5.0); next.hand_r.orientation = Quaternion::rotation_x(s_a.sthr.3) * Quaternion::rotation_y(s_a.sthr.4); @@ -278,7 +278,7 @@ impl Animation for WieldAnimation { next.main.position = Vec3::new(0.0, 0.0, 0.0); next.main.orientation = Quaternion::rotation_y(0.0); - next.control.position = Vec3::new(s_a.stc.0, s_a.stc.1, s_a.stc.2); + next.control.position = Vec3::new(s_a.stc.0, s_a.stc.1 + 5.5, s_a.stc.2); next.control.orientation = Quaternion::rotation_x(-0.3 + u_slow * 0.1) * Quaternion::rotation_y(0.15) * Quaternion::rotation_z(u_slowalt * 0.08);