From ccb913a2c086abc0a2252c8cf9ff0f0ac5bae4f7 Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Thu, 22 Apr 2021 17:12:07 +0000 Subject: [PATCH] Add handles to lanterns, fix cooking pot scale --- assets/common/items/boss_drops/lantern.ron | 4 ++-- .../voxel/armor/misc/lantern/black-0.vox | Bin 1384 -> 0 bytes .../voxel/armor/misc/lantern/blue-0.vox | Bin 1384 -> 0 bytes .../voxel/armor/misc/lantern/green-0.vox | Bin 1384 -> 0 bytes .../voxel/armor/misc/lantern/red-0.vox | Bin 1384 -> 0 bytes .../voxel/humanoid_lantern_manifest.ron | 10 ++++----- assets/voxygen/voxel/lantern/black-0.vox | Bin 1892 -> 1404 bytes assets/voxygen/voxel/lantern/blue-0.vox | Bin 0 -> 1404 bytes assets/voxygen/voxel/lantern/geode_purp.vox | Bin 1500 -> 1476 bytes assets/voxygen/voxel/lantern/green-0.vox | Bin 1892 -> 1404 bytes assets/voxygen/voxel/lantern/red-0.vox | Bin 0 -> 1404 bytes .../voxel/sprite/cooking_pot/pot-0.vox | Bin 8340 -> 5884 bytes common/src/comp/character_state.rs | 1 + voxygen/anim/src/character/alpha.rs | 8 +++++++ voxygen/anim/src/character/jump.rs | 2 +- voxygen/anim/src/character/mod.rs | 2 +- voxygen/anim/src/character/run.rs | 15 ++++++++----- voxygen/anim/src/character/sit.rs | 15 ++++++++----- voxygen/anim/src/character/stand.rs | 17 ++++++++------ voxygen/anim/src/character/wield.rs | 21 ++++++++++++------ voxygen/src/scene/figure/mod.rs | 5 +++-- 21 files changed, 64 insertions(+), 36 deletions(-) delete mode 100644 assets/voxygen/voxel/armor/misc/lantern/black-0.vox delete mode 100644 assets/voxygen/voxel/armor/misc/lantern/blue-0.vox delete mode 100644 assets/voxygen/voxel/armor/misc/lantern/green-0.vox delete mode 100644 assets/voxygen/voxel/armor/misc/lantern/red-0.vox create mode 100644 assets/voxygen/voxel/lantern/blue-0.vox create mode 100644 assets/voxygen/voxel/lantern/red-0.vox diff --git a/assets/common/items/boss_drops/lantern.ron b/assets/common/items/boss_drops/lantern.ron index eeb23cf6cc..82fa2c248d 100644 --- a/assets/common/items/boss_drops/lantern.ron +++ b/assets/common/items/boss_drops/lantern.ron @@ -3,12 +3,12 @@ ItemDef( description: "Illuminates even the darkest dungeon\nA great monster was slain for this item", kind: Lantern( ( - kind: "Blue0", + kind: "Green0", color: (r: 128, g: 26, b: 255), strength_thousandths: 8500, flicker_thousandths: 300, ), ), - quality: High, + quality: Epic, tags: [Utility], ) diff --git a/assets/voxygen/voxel/armor/misc/lantern/black-0.vox b/assets/voxygen/voxel/armor/misc/lantern/black-0.vox deleted file mode 100644 index 59c8048ed2059a8c1fdb20fb35f0fca09975478c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1384 zcmcgrU1*zC7=F$~CkpzX+V{4Mv1K5#G*uTgds=oZmRrH#=Rpe&_zT5CsI z(iV)8n8VUAqK&0QOtHqKjo4b5v{nwmiY+*!MH`4Me9&SG#^w@@qBuk&qohWLqT%_mqTv&dF55WLc^42)AaT^XZX zGPg_WoKok?DD6yZ*Q{eVxP#y}AEg=dI6ANyRZh3@rPnGf3jta8paTWkB ziToh)i%8)lIR62-G6!C}B7O{<=>osn53U~v6XKs704I)0d>HHqgM%&La3^?P;(bvc zlU+e(`$C*L*1+6L&72zQ;L1BM^ViuV>#9B6-cZFo&xUwxpqZ&2F#ifT{W`e(KG;<0 zV?0vB!%bUhb+&RK;$bpc!SUU-TpZlS#0%|A9ofrV`VhxPjx+mOf)j70IG)cipH0#& zcjfo{83+Ve9}co<>l1vYACy2BhfFc(F34x0wQi6~JC!l}>q~#9WkCT|UF|?5)cac|m z{^obb9(nuTK3^og&YL$xn^O90cFRe2IK`bOwEfyOQ_E3l-AlqXhmevC1vv@|B@*Tk z*py{ApW4A31qE@CoIDwG@=hKF1#wU=1c!h;jZSK#Cc<2N$A`dHz7!k+_!{~OdJ1|9 z?ngmE9HcS@n3d#9@+c^XgQ;S6#oUTJs^k#Za(u^!$aYW%AFIXuXMyZ$_Hyioa{fMa bL)o9M-Cuaj8~X0Q_4mKh_#8Lze>ZRgYrLX3 diff --git a/assets/voxygen/voxel/armor/misc/lantern/green-0.vox b/assets/voxygen/voxel/armor/misc/lantern/green-0.vox deleted file mode 100644 index fc456440edbd13baa0875a221debdc3b32c5d218..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1384 zcmchWZAhJE7{{;sc|0fSWqI0Bcl4yEqc)GmmU{9fw{=Wy>T=6jww)~*u`v&a(di*% zI~$w$WOSV~MTac8r?6jDmdR1B#>%rT^|olNdSYp;99K)dtXqzH z@fpSFRL8bmZBb3}Sw{If&o zr-+h7nDR^&^$RhI9Y5jGBC2LeskyS1!ox!OY1N(-b}R{cQIK>lGO-Dn_cOfJ$L!uVs{C1hU` zrd|`4-V^Feis-B==WzWtoVF(VstQO%iy7Tr!9xFb;?K2^JhGQe>JTGC$4S2uXY9=+ zquE!WTq@)ti5I;H>s diff --git a/assets/voxygen/voxel/armor/misc/lantern/red-0.vox b/assets/voxygen/voxel/armor/misc/lantern/red-0.vox deleted file mode 100644 index 9ad43dea09a6e43b5363b3be0252d3233faabfe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1384 zcmeH_OAY~15JhiQb+?HDRv>v6f<)*65=5{ATQIc;+imChOeNAY@siWGzOT9~yH#QBWw6Fo(dVEW7y(9L!Nr z5C_T0lQAdnfrx&fqb!jUX}$6%2$Vdm+o%bAY*p7x79SLonZD;N$&tchNn+ z>%WI-|9*JQ&(t2yuyZ``AY<7wE$+_E3AJ*Ckop+{&;Fcev-F(6Z4 zMhj&2nGS4CW6eb|s3_2gU`Q||IE>G@7!BjW5Rt4WYk3LdA;NT~GaVixidjWp%))0e z3vWEw6G4qvG+xnoMdJdELu4qjvT>L$TQ^!Dv(I#3s5uvNii|23y+FA{mp$^XCm23n Pp0=vnPt@k;)BnB#E;=#l delta 872 zcmW-f&5ad74210}yWaz?h+$LVu!lYHBO#$>52P@&ZvvPsNQ59rgfKYp`HfU^mD|5P z{qOzX59jwUFOR<>;?u|H&zSgniTL*X`t&e@4|&Hs?8}eW=SPn>;tz23Ca>M1ECrREr5e=~EI3({zE8@sP!*dXED|@qQH?abC?ZQ_K zA_h=#R^D>XEc(bVfYX^8Hcr=0H%r--^ohVK-Q%rEr#uQu~ zx5bc)MvI)4GbD``c99PRan zfs4WW=xmk%@WK~$Wkam5Y)D*AT(Jxs?Xl@2bUn_<>n-|v>i~VB@P*_Hg)S6c6u=rC z6a@lF>>_8;s5NmH3NDIciR~6zSaW6ugO4_i2jdr3b#hQ_HG<@6d@nYf=0IrQeKb#o z00kN(8weN_Xpn3zU{G@dAQ@D1E1+g*kd3c@;)E1vkn4KW!Uqa8dT~RG!fT3_c;Vua Zi8lck99`ps7f4=q@{5vp^n1^T`VYZ{ZOQ-u diff --git a/assets/voxygen/voxel/lantern/blue-0.vox b/assets/voxygen/voxel/lantern/blue-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..f80ce189328d8db9963e7502e28edb045900f5aa GIT binary patch literal 1404 zcmchWQEXFX6vxkZzk6k(;wD{3ySmkGb8SaZwz73juydQx;lOQiLV<-Ch-)fw+?WNL z1_M>&B-1&Yfr&W4EQ@KFu*^lm!(7ZlNC+WwF(hOmgb-eRFvPdN|2y7{%r|fH%Q^r5 z`Odlb`|iCxJ9qgAJO_W&NgT*~q+=IpYTkN4GCbbwAd+8aL ztr<-sn(H(@qKWBflXFaJMlqhSO(MoB##Od53T%UD(zW&VW-*tKP@>T&GMNnSjtI7$ znMZ}|FZ}6pVQ#Ji&UGRF(~1p|M6tn*~X&hMap2GVexVhoIz;z&9*d ze^F475ZfBU zwOt4dc@Z8j$HuGGDA_BhJkHspf=yj5sP1WWG;64Xa}1j7gD4+vU9g5IcLpjB|1erLps zWLp5~&LBn))*|zE14jE=F!$LzcrczsO@$k;)|O-YYe5|BX+Wx7kliO3`%p0ZrJ%md zi+H#ad+RsAZf!(Q*o|bQ6hm99Fx~qS5^pslwSNaP{d=%Ddj{zb5*Yp@g`wSt&23YVY#POOF=kFZdWXln{C3L9@KIF`Tbf32;N+)R z*IR-cKUQHT;lT*c?4RfFtaE1V?!FGY4>)>i0@?4U@x|1y_~w@dZ0aAxmJ?&x{@pCP xFD@V!i{Y*SQb6z!dO>jK@}uXw!|&_A>ii3r|Fg$Mr}(&<{mr#nSg4}xzAYBU-KmioP8!SD2zmflr zwZFUX-TL}`y8AS<$K&!u*jF=qSZK@QQ&+a}4 z2>598z(J7Z!a?$NjzlaD?r{hZSOf>-AjopzpvnXj9nldT(GiPq5M;S4-!2t*o zns88Uf+tZDB~cRL5Fp5M;h@?CpJ*nUiDsg~AwZDj!cTmuek6D&>Rest>N;142M&TP Y7Y?e;&L7M?GxOq^7qgm|-u&L5){5UeS0(;{uICWGJ$-ahNXKXtY3PpXtC*b1vo-8CC9$1o9K!LYi!UaEFKQHzfke|P=r=I{LE?CYv7{0~1~D9``^ delta 883 zcmW-f!Hw2H42A7ydy+*6DXCx^*bcaG;P4+{kw9o!X=_L}4WtMp8leD=)UbETK!VSI zq^D}Pv2e_#E1bAG*lxcy;fAKqO)LiTAg`+RwP|GFJM+$(P2hi{LU+vup-ZxC6V zV(g*XQe)4oJ)(A{EfNTOjsyZ>YZ6c5NxbAoDo%=GFUKhWd)Ohx9{4glJn^x;VO<1WO9l}GC^^g6yw4O{p_kVf=hT(#h_a*5t2}AowpQ8dKs`(%OoEdrCpm&4 z*-nVlED#fR^u`E|vSl#jpwXaacn?XV0T1edfVUsD8Tm%Ok#8pjMnN!r^>%E`4RaeX z%|&C;NE8->Cb5bhFu9Rri#p1SB>;93vz*xwj+qU~^Uh0_!N!kfkHa({r}?~C%}W`m z3E_$2384w$fdCx%hA0qlatAeoMy1Z15FCiZn^aBvn3hTVS9xY2RJ%9DfSzqdni zH@=FsO>-dpxW?vH&JZ9$`Mf$CNb?eK!Ua293q;Io_6-1MP$hYA!UcPwS5JLa1VIt- zF)td#K!U;_+|WRHv}lSKE*_b96WGGW&yHaya9+0ai#+}N<}cIRU-r+w)X#g}#ec9s BWH|r; diff --git a/assets/voxygen/voxel/lantern/red-0.vox b/assets/voxygen/voxel/lantern/red-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..fd40bb77d3f8ea817b51d88a0f500d83d1b9c0ee GIT binary patch literal 1404 zcmchWQA`w96o${8J5#Azg}N;6vW4veWp^>Q!U{|2+ND5sv8X^wb+yDanzGp%abk#W zHa5C#Q)*}_C8$X)wT2L5q)I5M@c~IgjEOOZlBP*RjA|l@{OQbWAY+3CHUX)8b%eZ?_G7(jd%k_k*ZHUA)BZaM$ z#0;W|NiBxN6fq1rq8Uvhn(H(@qKWBflXFaJMx_*ID9%vqWp1cm&8ReUqKQ%l>jrDa z2TC(1N@;qUo~Fl~C}nb%N#Eow=7z~x%r$eOi4u!@u($_{d$4$ai#^oDq!zrTvrl5EK7de4bOf*{3ogq8m))4SdjEe$c5)2b8h6f35pI0e1n1w zR|R=#!E-smI%@Z2L8NUJS`XzTd2$^-n|=Y!SwZ`-;JpdK@q6rT_o5^fKzTNd+Nn5- zZ5ILqUWCU=vFTPNiuMW0PjdE%U~@+kDt+aUOde!-4P?@V{>lQ3zfy>WSTWH0BElk= zCcltB$nY`2#8-mZal!3t)N#Ru7Qv4lg2nd*N$O)=g24my`vgrPL3dQp*DN?ozdhnb zswIF-dk`ZBtC4-X4kJBHnEmt}JRD1*s?3eos!Or`^&k#*)gj#~$h|8VJt~;_LQq@c zMIu~|eYG25H`k*p>_#e5jDf8cnCgBR$z6>|@85xJ?_Mm-oJZzx5`!P7F_1fgTqXtA z+BGOBD1hJZ$EHvKwHsf;tJNXIB30P=W<3T!@?qlJ0Diq4#^T*7e9e1KjS24D5d8kL zAd?E>Y_0}#SDNtWZ=JAD=VRcK3)k*>u!z$CW&aW1dNlZb|GNL0ni_mrH;R?63N-Ye zf+y#}t?vX2dj*$+L4-mf^py4Ct!J2PFt?WPI%0w&nU zHFgptg(AKH3txh*5UeZ$HYxm0mi^2<_ddUw=RRldJih(v=GR|*a{uhRX_`L1ediv- z^y1nyeRk);M}C~}x5k?|&hLNu;Lfkd34cH3Y2trdP|+Yz#4v3Va+tP1fBs(x+r!=X z?S7YhdYVyu`mv%>3!^d`WA|z2i~}=kE1x#gn6_a|yNEQVt2}uB;Qfq^QJ~bu^$uq~ zFpp^y=IKd9LZ0{2rp&w%4KlM?Mw_Rn9X?N+!CG9g@f8oYBD>-y)B>e8);hJXrrkhV zPuq-wx}G*|J?)g*(3v~){07%iSG+U`6wgoctFVtAo+J;u?BS|-pf7>G1o{%_OQ0`- zzJ#rNxSTy~;t2GC{0LWdkcEu!R9UkTww=)t=Wvzgu*r})>^h?(uEI7UqpZT)ySfUy zwju;Y=Yk*S>#$Wke^Kurw;3NMk8CqOEFPa!k5`RaJbt4vxW~&l;`eF9hk3-Sg38=R z-1HH*KDa(}edcrKxGmIuj%+LL(kjyRxNVHGiaUj@<3=GN)lJUnvLF7I-#)!8p16N{ z)ID7~^57Cm&X*Mp0)-)$d|6P@AW#@O4r}}4EIT1oGzb)ij>Erp{aPtysb~-=tQ`L7 z?;PIsv%^<-j6adb+2Pi>{$a^=skvS>2o%OzE_ErTKC5UDC=8uzsn(0bU-NmnNR8@b zb*zNy?(0ga9=)!N>i5@Gr+Rs;ve)JC{`$s#DTBKY?hb*%Sj)LB1r-efg`p#r#tz#r z1r-efg`vaAq)M)mLq&r?VRcWC!U?5Dun|N>gFs>Ea572A2{}|W2o#16CzF(%l0!v< zKw;?cJ)vX-jUXx-1PViklS!RiCx?m#fx^(?WRjC}a;Rt!C=4Bb%#60&D!f!Q2o#2n zoaLgRqCucAbfh8|haXPPZ_;GB$W>^v&}5;>LX(9i3r!Y!Ec96Du`Gv^({o*-$R-K1 zyQk-48O)-xqO3eRJ^x@C$C(L@;Zsr3AW#@OoJ{KMP#8L#P;9zMjc_B3iUxtg(BWjpF)L(+EGimA^qIn_JDf~Xa!L-|pCCjD!l*l( zP&7W&2peHkGzb)i4kt5?*-o~TMMZ-^Vd!u&$;ml6>?JV0)?T^{rR_Vjr>0&!;;Pb literal 8340 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 X{kXcj_~X`gkN>2#w_f-s=goful}=et diff --git a/common/src/comp/character_state.rs b/common/src/comp/character_state.rs index 553384db9f..40414c39ad 100644 --- a/common/src/comp/character_state.rs +++ b/common/src/comp/character_state.rs @@ -175,6 +175,7 @@ impl CharacterState { | CharacterState::Dance | CharacterState::Glide | CharacterState::GlideWield + | CharacterState::Talk | CharacterState::Roll(_), ) } diff --git a/voxygen/anim/src/character/alpha.rs b/voxygen/anim/src/character/alpha.rs index a0f54002c3..0004398591 100644 --- a/voxygen/anim/src/character/alpha.rs +++ b/voxygen/anim/src/character/alpha.rs @@ -290,6 +290,14 @@ impl Animation for AlphaAnimation { next.second = next.main; } + if skeleton.holding_lantern { + next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1 + 5.0, s_a.hand.2 + 12.0); + next.hand_r.orientation = Quaternion::rotation_x(2.25) * Quaternion::rotation_z(0.9); + + next.lantern.position = Vec3::new(-0.5, -0.5, -1.5); + next.lantern.orientation = next.hand_r.orientation.inverse(); + } + next } } diff --git a/voxygen/anim/src/character/jump.rs b/voxygen/anim/src/character/jump.rs index a95b2560be..1a2788e703 100644 --- a/voxygen/anim/src/character/jump.rs +++ b/voxygen/anim/src/character/jump.rs @@ -196,7 +196,7 @@ impl Animation for JumpAnimation { next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1 + 5.0, s_a.hand.2 + 9.0); next.hand_r.orientation = Quaternion::rotation_x(2.25) * Quaternion::rotation_z(0.9); - next.lantern.position = Vec3::new(0.0, 0.0, -3.5); + next.lantern.position = Vec3::new(-0.5, -0.5, -2.5); next.lantern.orientation = next.hand_r.orientation.inverse() * Quaternion::rotation_x(slow * 0.5) * Quaternion::rotation_y(tilt * 4.0 * slow + tilt * 3.0); diff --git a/voxygen/anim/src/character/mod.rs b/voxygen/anim/src/character/mod.rs index a5e27f00c0..7e01dcde4a 100644 --- a/voxygen/anim/src/character/mod.rs +++ b/voxygen/anim/src/character/mod.rs @@ -132,7 +132,7 @@ impl Skeleton for CharacterSkeleton { // FIXME: Should this be control_l_mat? make_bone(control_mat * hand_l_mat * Mat4::::from(self.hold)), ]; - (lantern_mat * Vec4::new(-0.0, -0.0, -1.5, 1.0)).xyz() + (lantern_mat * Vec4::new(0.0, 0.0, -4.0, 1.0)).xyz() } } diff --git a/voxygen/anim/src/character/run.rs b/voxygen/anim/src/character/run.rs index 96d1c9cada..be92f7d247 100644 --- a/voxygen/anim/src/character/run.rs +++ b/voxygen/anim/src/character/run.rs @@ -258,16 +258,19 @@ impl Animation for RunAnimation { if skeleton.holding_lantern { next.hand_r.position = Vec3::new( - s_a.hand.0, - s_a.hand.1 + 5.0 - impact * 0.2, - s_a.hand.2 + 11.0 + impact * -0.1, + s_a.hand.0 + 1.0, + s_a.hand.1 + 2.0 - impact * 0.2, + s_a.hand.2 + 12.0 + impact * -0.1, ); next.hand_r.orientation = Quaternion::rotation_x(2.25) * Quaternion::rotation_z(0.9); - next.lantern.position = Vec3::new(0.0, 0.0, -2.5); + let fast = (anim_time * 8.0).sin(); + let fast2 = (anim_time * 6.0 + 8.0).sin(); + + next.lantern.position = Vec3::new(-0.5, -0.5, -2.5); next.lantern.orientation = next.hand_r.orientation.inverse() - * Quaternion::rotation_x((foothorir + 0.5) * 1.0 * speednorm) - * Quaternion::rotation_y(tilt * 4.0 * foothorir + tilt * 3.0); + * Quaternion::rotation_x((fast + 0.5) * 1.0 * speednorm) + * Quaternion::rotation_y(tilt * 4.0 * fast + tilt * 3.0 + fast2 * speednorm * 0.25); } next.torso.position = Vec3::new(0.0, 0.0, 0.0) * s_a.scaler; diff --git a/voxygen/anim/src/character/sit.rs b/voxygen/anim/src/character/sit.rs index 558e184ba6..b25cf67135 100644 --- a/voxygen/anim/src/character/sit.rs +++ b/voxygen/anim/src/character/sit.rs @@ -89,17 +89,22 @@ impl Animation for SitAnimation { if skeleton.holding_lantern { next.hand_r.position = Vec3::new( - s_a.hand.0 - head_look.x * 10.0, - s_a.hand.1 + 5.0 + head_look.y * 12.0, - s_a.hand.2 + 9.0 - head_look.y * 12.0, + s_a.hand.0 + 1.0 - head_look.x * 8.0, + s_a.hand.1 + 5.0 + head_look.x * 6.0, + s_a.hand.2 + 9.0 + head_look.y * 6.0, ); next.hand_r.orientation = Quaternion::rotation_x(2.25) * Quaternion::rotation_z(0.9) * Quaternion::rotation_y(head_look.x * 3.0) * Quaternion::rotation_x(head_look.y * 3.0); - next.lantern.position = Vec3::new(0.0, 0.0, -3.5); - next.lantern.orientation = next.hand_r.orientation.inverse(); + let fast = (anim_time * 5.0).sin(); + let fast2 = (anim_time * 4.5 + 8.0).sin(); + + next.lantern.position = Vec3::new(-0.5, -0.5, -2.5); + next.lantern.orientation = next.hand_r.orientation.inverse() + * Quaternion::rotation_x(fast * 0.1) + * Quaternion::rotation_y(fast2 * 0.1); } next diff --git a/voxygen/anim/src/character/stand.rs b/voxygen/anim/src/character/stand.rs index c45776b1df..5a634d4ab4 100644 --- a/voxygen/anim/src/character/stand.rs +++ b/voxygen/anim/src/character/stand.rs @@ -32,7 +32,6 @@ impl Animation for StandAnimation { let mut next = (*skeleton).clone(); let slow = (anim_time * 1.0).sin(); - let fast = (anim_time * 5.0).sin(); let impact = (avg_vel.z).max(-15.0); let head_look = Vec2::new( ((global_time + anim_time) / 10.0).floor().mul(7331.0).sin() * 0.15, @@ -147,16 +146,20 @@ impl Animation for StandAnimation { next.hand_r.position = Vec3::new( s_a.hand.0 - head_look.x * 10.0, s_a.hand.1 + 5.0 - head_look.y * 8.0 + slow * 0.15 - impact * 0.2, - s_a.hand.2 + 11.0 + slow * 0.5 + impact * -0.1, + s_a.hand.2 + 12.0 + slow * 0.5 + impact * -0.1, ); next.hand_r.orientation = Quaternion::rotation_x(2.5 + slow * -0.06 + impact * -0.1) * Quaternion::rotation_z(0.9) - * Quaternion::rotation_y(head_look.x * 3.0) - * Quaternion::rotation_x(head_look.y * 3.0); + * Quaternion::rotation_y(head_look.x * 1.5) + * Quaternion::rotation_x(head_look.y * 1.5); - next.lantern.position = Vec3::new(0.0, 0.0, -3.5); - next.lantern.orientation = - next.hand_r.orientation.inverse() * Quaternion::rotation_x(fast * 0.1); + let fast = (anim_time * 5.0).sin(); + let fast2 = (anim_time * 4.5 + 8.0).sin(); + + next.lantern.position = Vec3::new(-0.5, -0.5, -2.5); + next.lantern.orientation = next.hand_r.orientation.inverse() + * Quaternion::rotation_x(fast * 0.1) + * Quaternion::rotation_y(fast2 * 0.1); } next.torso.position = Vec3::new(0.0, 0.0, 0.0) * s_a.scaler; diff --git a/voxygen/anim/src/character/wield.rs b/voxygen/anim/src/character/wield.rs index aaa4f035d2..66c91a7d73 100644 --- a/voxygen/anim/src/character/wield.rs +++ b/voxygen/anim/src/character/wield.rs @@ -341,17 +341,24 @@ impl Animation for WieldAnimation { if skeleton.holding_lantern { next.hand_r.position = Vec3::new( - s_a.hand.0 - head_look.x * 10.0, - s_a.hand.1 + 5.0 + slow * 0.15, - s_a.hand.2 + 9.0 + head_look.y * 18.0 + slow * 0.5, + s_a.hand.0 - head_look.x * 6.0, + s_a.hand.1 + 5.0 - head_look.y * 10.0 + slow * 0.15, + s_a.hand.2 + 12.0 + head_look.y * 6.0 + slow * 0.5, ); next.hand_r.orientation = Quaternion::rotation_x(2.25 + slow * -0.06) * Quaternion::rotation_z(0.9) - * Quaternion::rotation_y(head_look.x * 3.0) - * Quaternion::rotation_x(head_look.y * 3.0); + * Quaternion::rotation_y(head_look.x * 1.5) + * Quaternion::rotation_x(head_look.y * 1.5); - next.lantern.position = Vec3::new(0.0, 0.0, -3.5); - next.lantern.orientation = next.hand_r.orientation.inverse(); + let fast = (anim_time * 8.0).sin(); + let fast2 = (anim_time * 6.0 + 8.0).sin(); + + next.lantern.position = Vec3::new(-0.5, -0.5, -2.5); + next.lantern.orientation = next.hand_r.orientation.inverse() + * Quaternion::rotation_x((fast + 0.5) * 1.0 * speednorm + fast * 0.1) + * Quaternion::rotation_y( + tilt * 1.0 * fast + tilt * 1.0 + fast2 * speednorm * 0.25 + fast2 * 0.1, + ); } next diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 0a1e935f54..e583942cfa 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -28,7 +28,7 @@ use anim::{ use common::{ comp::{ inventory::slot::EquipSlot, - item::{ItemKind, ToolKind}, + item::{Hands, ItemKind, ToolKind}, Body, CharacterState, Controller, Health, Inventory, Item, Last, LightAnimation, LightEmitter, Ori, PhysicsState, PoiseState, Pos, Scale, Vel, }, @@ -765,7 +765,8 @@ impl FigureMgr { let holding_lantern = inventory .map_or(false, |i| i.equipped(EquipSlot::Lantern).is_some()) && light_emitter.is_some() - && !(matches!(second_tool_hand, Some(_)) + && !((matches!(second_tool_hand, Some(_)) + || matches!(active_tool_hand, Some(Hands::Two))) && character.map_or(false, |c| c.is_wield())) && !character.map_or(false, |c| c.is_using_hands()) && physics.in_liquid().is_none();