From 2f5ffdfe4124056a6c5331f2b542a6c6eca7ce4b Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Wed, 24 Aug 2022 15:20:57 +0200 Subject: [PATCH] Use Vec3FromAngles to create random unit vectors. --- language.version | 4 +- models/extra/LanceTracer.png | Bin 5352 -> 0 bytes zscript/dlc1/swwm_hammertime_fx.zsc | 4 +- zscript/dlc1/swwm_notashotgun_fx.zsc | 46 +++++++-------- zscript/handler/swwm_handler_damage.zsc | 2 +- zscript/items/swwm_armor.zsc | 2 +- zscript/items/swwm_baseitem.zsc | 2 +- zscript/items/swwm_collectibles.zsc | 2 +- zscript/items/swwm_funstuff.zsc | 6 +- zscript/items/swwm_health.zsc | 2 +- zscript/items/swwm_powerups.zsc | 6 +- zscript/swwm_blod.zsc | 12 ++-- zscript/swwm_common_fx.zsc | 6 +- zscript/swwm_gesture_fx.zsc | 4 +- zscript/swwm_monsters.zsc | 8 +-- zscript/swwm_player.zsc | 4 +- zscript/swwm_player_fx.zsc | 4 +- zscript/weapons/swwm_baseweapon.zsc | 2 +- zscript/weapons/swwm_baseweapon_fx.zsc | 20 +++---- zscript/weapons/swwm_baseweapon_melee.zsc | 4 +- zscript/weapons/swwm_blazeit_fx.zsc | 44 +++++++------- zscript/weapons/swwm_cbt_fx.zsc | 16 +++--- zscript/weapons/swwm_danmaku_fx.zsc | 18 +++--- .../weapons/swwm_deathlydeathcannon_fx.zsc | 20 +++---- zscript/weapons/swwm_deepdarkimpact.zsc | 6 +- zscript/weapons/swwm_deepdarkimpact_fx.zsc | 8 +-- zscript/weapons/swwm_shot_fx.zsc | 54 +++++++++--------- zscript/weapons/swwm_sparkyboi_fx.zsc | 52 ++++++++--------- zscript/weapons/swwm_splode.zsc | 2 +- zscript/weapons/swwm_splode_fx.zsc | 14 ++--- zscript/weapons/swwm_tastytreat.zsc | 2 +- zscript/weapons/swwm_tastytreat_fx.zsc | 32 +++++------ zscript/weapons/swwm_thiccboolet_fx.zsc | 14 ++--- 33 files changed, 211 insertions(+), 211 deletions(-) delete mode 100644 models/extra/LanceTracer.png diff --git a/language.version b/language.version index 6c03f7bea..dfe1a21cf 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r369 \cu(Mon 22 Aug 20:34:46 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r369 \cu(2022-08-22 20:34:46)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r370 \cu(Wed 24 Aug 15:20:57 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r370 \cu(2022-08-24 15:20:57)\c-"; diff --git a/models/extra/LanceTracer.png b/models/extra/LanceTracer.png deleted file mode 100644 index 2ce30b61359dbf0fa3cbea54d7cf23fd49a9a6e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5352 zcmeAS@N?(olHy`uVBq!ia0y~yU{GLSU}WH6Vqjp1J^Waafk9-wr;B4q#jPb%Z~H|@ z@;FR?yZ5}R~cUE23$ul*JI6<7Yh5Z|VuVtKok!&%ZJZP{F9 z`#0ThQ-9~2KDEr>s8&EXL^^uOh2yiNV{`3P|3+0cJ(*o{=W^QQdiEb$f!13e^Hm7N zKh*Y^5V78tv*CBtKQ`-L-Xc)ZQzvmR|E)WmOusbDGl3 zu0MhfBAQ!Q1g)OGY2wnt2$`FARqpvddUWEFMT&Cv*Wf@^&CoCAjEgc9L)DK?Jj?&M zKl8`GU6s{0ch_D9p}lWv>+k+C|`5AwNbz07{e{n%~JcLTI9J~$uqZ|`y^7139%9#b#AyL9jGjXV1n zeQw&(ymh15w&uMGaTkByxU+n(_ipXbXRS+|oS%4pw`E!(aD+*7)$u8(JZ>&nleW=Z zA$t*Pl#*)D0^bq`vu@i{U7IGJdSSS9g_r_|mNY{XcOKip;E+X=o<4coXyT>f#K79h zAn28%!28K8((j7M)CXzb>&#LWIyxoR?Qk?ONmzJ*Nh9flLKlmMfzE=)guER}Z8H?2 zy;LS$bKJ#|?fCXz?OpRu1^(#hY5~V1uGh9HWfpe|IIVcZ-tl^NL^Ei`zfQ3Y{su zG-=Btb=7N|o|y3*cKG|>{M)UWahv9@6TYp~D5r60}!GPQn?wwaeIaDcb3AYg)zRKGocL0`@SqfS@TqHptG3tw2YuQqGlx$GIUJR8=e zI~atuFwaWj5O{K6maRfGn-OQ4e_|9*!_6&$oIEZ$pDH9iFfrYE(sA$k;uBKb_dYI= zaZ+_W!ShdpsX~mQ-o)rYhoZ=oPg`7G)n7Hxa=atDzG{QE!Z+*9`<5@gw~I?iB|gR5`%JDYD5)-~R4z2m&(oUDS7&ObpF!K`Q7 zZYHau<%1u50UgaD_6f% zSnPS;tn(@zJKdR?{eCEdMQy7;$+3wb-&-d)=watx2)t3Bn zlX6tM{FX0vX;G?ARXsm@OZl_wZ(bDiv1Goko^LPRC*5af-?OENea^Rd!JMy*weBD8 zq%c_*WjwdlQ0BMh^v?|R-e^26Nk#E~Rp&Cb>}>UCEi>o#8?;?Im-jSoUfY!A6DB6a z2=ci+4`twsIlf0__G$~c{mDg@Uu>>zf7S6<`iq|X$wc=3jz{{g6gleaT$FVEzV7tq zUh|OmOWy}|NoTE&xp!@4!MvZ!4VlNLH%@3|VqU|&=TO?tbsJdwret#&G5cGX+Lo3* z@0-x!@FR3<)10z@~g;V#3!2FxoJIM@!=uec}h zw>HE{qb`MCg2U_S;d0SQoiEo3Wu z_nu^2xpO7|>^n#J)`VAVG0)<9am(Yvk#~pH%=?2Km^X9mbG$eE&C08Pg))LFEpF|p zoU2?`Y%Y^kb9is@*@O8%7Pe(gJAI^omX1rZQBAzi2Z4oLdK^FQ&5*IlIsKbq);?3m zT$iuXd*rMdr8imVGW&kLxSNNC$6$$#u|VGn?pJK8U1k}Mt|f9Z`#!xhJtX5`cErUX z_0*FS518&BYmxibZdeBwL;D#$D_VX57zdaB;A&{ z;Q#+4dlXJ8PF*!GuRPj?FUF-(+B&p&#=R6>6^@2aj{>$li{G}(wSKpi@joq_!;5-7 zZ32&a1pbzA{D1H%Yuy6*7ub8cz=RHA$%?E~+=gOVks=M|QTD9=%7zL(>r7Jf!t=*ZcK&T|2` z7u~$gp=h{PV#@tszfTL8*qYf_Hoax7WzK)_^oq$&P4)>7LciN?^WfC_^0`lR&%zJJ z2?Am}V~v{klt_MRs%z+9-|#a~VA^AYt(%vIX)ip%W#9R<`P)ZVlY*C1?2;5O_g3CI ztSBA6sls96sj##yXA9YkV;+_*Ui9CkqtUG|BkIs<_Mks!FK`5}eb28bB5eQZjnFEE z5aZ=W)8q3|kcDmkKtQ(-d(QJa*2HS;fqW_;a-+-o>&;VF zpW^(`^OtMGZ>Jrr0t%$q9&TlqxL#rrB(df1qH`A{e`!D9?_yC}zI@LiEt?h14#(X7 zFU!C9USRsSK=s}!?<0;zEjh8_`UlY&te5Rq-QVxHXNvQZ)lF}Ezqv7co0{ziyO(rb zd-o#c^W48ay%e|Db+K1f>uAZ{OX;^BF|K`9a4t6N-jj=5H!hYQVb=5ika?`)uKcc3 zPjp*@8}=!GWBzp`X=~!0USp55c||t-lD}G?a(AyjyJd}VYlUUk6)*Q^jroqhng1EC zDdUo>bhua@Ah=U(M%KwQ>R&RivRRcad!(*DbI)CuL{AOX74{45b$zy~KM1>VW#KaA z%FA0zm#Zg+TDUEZRu9^H^Z&|>>~zcA_1&UpBc4svHo8~zQS^=Rxv7zdb#o_veIeWJ z<@9BG%+5`>3zuzuctUrR+YJkkEkEwxn{u~mDsx_!;BLQne-G&VH7gNIkzMosNRQR& z%-y9uc|GSB8GH6|JY>DM&y6el`^%=e%1dvrwoZI?H|}lxzS_!T7XC%tyyh`mKXZ1> znbs0);@dan^7-zdeH}TBF)o)~UdDY%wO~$u|CNVFnBBtay?XH%=S8Q5tc6)`dNGM8 zdz>)e(pu!z_?Xd#x$~;R<+ho>zKHUClHQr7m(J~e^YlcfMG_PH?wfnFPU%?Gw2WD{ zEKAp}^YpefPV0{gg{|2qc(iHFmY>H(Je|kp1#%;O^5a zS-S&L-`Ew;+;;qu?p6_NXN9Q(mvV0A=(rb^vod{C^`80cpS;PfhK);Of*)iqXAiBu zRu(#0=0(!Jkk>QT?Y`P>RVhE^Rn6Y7%UjJqvHj!~)Q#=9p5kW~K4(kb>=f>|GTqx! z51QoUczmsv>C^43N0=-E+zm zCm&B=nV3*Mx_Q zPkKdGysCE*lzsHDZlc(_6@s&7aVD0}QwX{D@*#_|dw0dvg%2z)I9+%WCf|FTsk)^k zO>6zk_eZ;~F?Sxdy(>0{sdx&v=-OL{?`;-+(^U2*;{UD2q#0rIPg>Nno)lkLqj>Q` z{#K34x7Dwow@`_DoyNJj zkv-?eKY^mqm)tY-vKcnLOPr_{wtIT_X``?OLV}abW6H9Ot~z49tDukC_MO4o z?)*Le(l%@2pQ|^f=j^O5khxU8{fqbXqlxaPZk8p>-_0q}Z$ENMEk;}BrMs@2hsoRJ zdsCk+-`nu3f3kLTR2X}c@t*(6|6kgPZ%$^aS$>LpYe37HYu;M~luXYTyIJhswKm3n z3%AUP zWc0H{Yqn|zfqx4w-sHEMs!+R2tv+qNG{eG@AP2UsZ$vz1->U7~UUHR}EC18)c~Q$Q zuD#o_RaZ1|Uy!5QtLF#18-*%n>TY;+yz#71T!Bt{sM5N_>nfEg;U^4DFs1D*r+$MmXnpmOIrYKkYyw1<@9dcPQA~8!zNuW7LwB~N*uMmX;6R&Gd&esblVqWE!cuHce{`VL0#EfNe(C5 z6xkkGC$!^LL%Bdj#H&x6g%<@Hzv*0&v+e)<^#|6bT-x<4VS3=f_9e_WZ#f(}T9RnX zT^hUX+OxI(Ict8o#s7B;{IJ7NBy+p@m1f!2-%9UQCe*G>xHxO>?|0HHYSr(=c3lrT zXwoG0ezy0HlpK*Q$96Z#xpk=}x<1?Oto2~AnR)Vk(HG`jM#pxAGY22UpYaGe$ z?lV!JclmR1*V->@?qv5d9yZHh`X2tell@bQ*~j%KvYbBTdztT=yX)KJSc9^KN+M@2 zEA3kHpi`Uujz8b+qP@+rbGCLw|31oYyVEKvJ9kg*rlLUq`BibuKb|B>MShBtRad|6 z8rpGQ=lvBUAE*6l&#r5HQ@*HiS=j0Iy{gTs?{;#1x_(v3_~Mgi1uu)fdy9k$ugja- zpy{Rg_I?c8&bvQ5#Op8q^SfttYn@Pi>&87>TXZfS&M}w7FH3W7_)RpMaa zq-;o;(cL5ce_Cqbyw3-APm;~FT+>`Cb9jB#&Ib8S!CHQ{k+WM8ZZp1LvS889e-)GX z=Si$*J6$fTyY6ew6`OC(DGHMh=!aIa?p0%bloj)MxlfsNr>K~zkZ1jyGA-LV3$~UlJ$wG(DaYjgIK!$XR=h^`|0-A|CUgJR)$-D<(XCB8 zSRU?lGcTa!^r^KAd{(KhD{7uF-@o8!6#MN>7tC&S>X<|c-#ce_GDfD=gRx@c;Tg4@ zL5a5uhZ1_JhJoHWbyJB(b-sT@lw{@c~+{u1%_Cf!@MKb$M zq^7d=|G$)aU$62&*^{bOt``%#j)Vmy&W?O|-a0kco}>O{#ur~dzY>i#vu;UAY~gw~ z{r}-fuX`5Rhii*-*Rh6m7`%Qr|KFAiy9-aScm+BvzVY<*B+-967-{oq^^;vi#VIKgh8 zx|Fl8`6Tgad0nn+sxnIqG%X5#`)^%Qp{nnm#Qk8Y^d;_#FaPb?dF4;F?r9hC(oVgL zM{6!WZ~Xr-=yOxl@BGk$qg?T3JD)6b{`Zq5dGmUWmIX|^rmb7b@bLZr>*qw@?BYFa zaOwa5qwhPP@J+h>jW>33*#SN6s?0{0jVh;$d_I+1y+1i~PITqRvJl3o3rUUN*S|j? zUGk*nbw$9!2`QIKyyDVxzde4x?n~AL+vRH}zh8EEsm@Ww?=~6RSbI)8+9~MlJ*7XB zwL>5>;?oy~%7Y%&aw$B^xaZw2On!aa)%%!RjjguJdG%XA%-L_XoZ@qM;dgC!(5xp} zJC7+_cdC_sH?5z*e}7iS@xDE~Eg9oJEGj6eJa0CAc~i}Sm(zHYZ+gdl`uO=+&mrl^ zCHv~O)-j59#C9tL9hAATwq$-`Ez6#rH|8#=-Ws?-+WBwd_4>1}3`x?**G48hG)R7| zr2qNfIj%V+ALq|Y)hH9#_`jcXzqZPqw_$e-1x_0`8L9I8d*ZKIa?DjSqN-7JT4Wk) zwC^L|H^2RssH|S9aVa~pRa7oTW_^m|&jOZ-Gn=?IwnTVvy;6SC@AhE9bv;KXuAgrE z3RhTK)l9jxTk6T)pB({Fe;?RRxim{Wr{dtkil<7c9V&jEp(~s^3!j<9%-_MW`1f3u zEcd`gtsOI$elcd2p69YU_d=43wqfIRnaRRUw=|ER_|m)g{F#LKQ~LV$ik$Bpl9O9b z>|Q$I{EDXemt@ZOCK&CIz4LPOUsmR~D}Fz2Ha@pAEurb-)0&@u?yi@tc>nqSf&Jzm axa~A|X8O MaxAmount) && (Stamina != 0) ) { int sellprice = abs(Stamina)/2; - SWWMScoreObj.Spawn(sellprice,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2)); + SWWMScoreObj.Spawn(sellprice,level.Vec3Offset(Owner.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,Owner.Height/2))); SWWMCredits.Give(Owner.player,sellprice); if ( Owner.player ) { diff --git a/zscript/items/swwm_collectibles.zsc b/zscript/items/swwm_collectibles.zsc index 9599df17a..463eb6f02 100644 --- a/zscript/items/swwm_collectibles.zsc +++ b/zscript/items/swwm_collectibles.zsc @@ -94,7 +94,7 @@ Class SWWMCollectible : Inventory abstract // give credit if ( other.player && (Stamina > 0) ) { - SWWMScoreObj.Spawn(Stamina,other.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+other.Height/2)); + SWWMScoreObj.Spawn(Stamina,level.Vec3Offset(other.pos,SWWMUtility.Vec3FromAngles(FRandom[ScoreBits](0,360),FRandom[ScoreBits](-90,90))*8.+(0,0,other.Height/2))); SWWMCredits.Give(other.player,Stamina); } // send to all other players diff --git a/zscript/items/swwm_funstuff.zsc b/zscript/items/swwm_funstuff.zsc index ff1eec1c5..6a7735fcb 100644 --- a/zscript/items/swwm_funstuff.zsc +++ b/zscript/items/swwm_funstuff.zsc @@ -325,7 +325,7 @@ Class SWWMGasCloud : Actor { for ( int i=0; i<2; i++ ) { - let e = Spawn("SWWMFart",level.Vec3Offset(pos,specialf1*(FRandom[ExploS](-20,20),FRandom[ExploS](-20,20),FRandom[ExploS](-20,20)))); + let e = Spawn("SWWMFart",level.Vec3Offset(pos,specialf1*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*20.)); e.target = target; e.scale *= specialf1; } @@ -591,7 +591,7 @@ Class SuperFancySparkle : Actor if ( magvel > 0. ) { dir /= magvel; - dir += .2*(FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)); + dir += .2*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); vel = dir.unit()*magvel; } SetOrigin(level.Vec3Offset(pos,vel),true); @@ -1110,7 +1110,7 @@ Class Chancebox : Actor int numpt = Random[ExploS](16,32); for ( int i=0; i=.5; j-=.125 ) A_SpawnParticle(b.fillcolor,0,int(12*sstr),2.*str*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.75,-1,-.02*sstr*j); } @@ -266,7 +266,7 @@ Class mkBloodDrop : Actor int numpt = Random[Blood](2,4); for ( int i=0; i=.5; j-=.125 ) A_SpawnParticle(fillcolor,0,20,10.*scale.x*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.5*alpha,-1,-1.*scale.x*j); } @@ -296,7 +296,7 @@ Class mkBloodDrop : Actor int numpt = Random[Blood](4,8); for ( int i=0; i=.5; j-=.125 ) A_SpawnParticle(fillcolor,0,20,10.*scale.x*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.5*alpha,-1,-1.*scale.x*j); } @@ -341,7 +341,7 @@ Class mkBloodDrop : Actor int numpt = Random[Blood](4,8); for ( int i=0; i=.5; j-=.125 ) A_SpawnParticle(fillcolor,0,20,10.*scale.x*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.5*alpha,-1,-1.*scale.x*j); } @@ -364,7 +364,7 @@ Class mkBloodDrop : Actor int numpt = Random[Blood](4,8); for ( int i=0; i=.5; j-=.125 ) A_SpawnParticle(fillcolor,0,20,10.*scale.x*FRandom[Blood](.6,1.4)*j,0,0,0,0,ndir.x*j,ndir.y*j,ndir.z*j,0,0,-.25,.5*alpha,-1,-1.*scale.x*j); } @@ -550,7 +550,7 @@ Class mkFlyingGib : Actor Vector3 dir = vel; double spd = dir.length(); dir /= spd; - dir = (dir+(FRandom[Blood](-.3,.3),FRandom[Blood](-.3,.3),FRandom[Blood](-.3,.3))).unit(); + dir = (dir+SWWMUtility.Vec3FromAngles(FRandom[Blood](0,360),FRandom[Blood](-90,90))*.3).unit(); vel = dir*spd; } invoker.rollvel = FRandom[Gibs](10,50)*RandomPick[Gibs](-1,1)*clamp(vel.length()/10.,.25,4.); diff --git a/zscript/swwm_common_fx.zsc b/zscript/swwm_common_fx.zsc index 26220f0d2..b5be4fad0 100644 --- a/zscript/swwm_common_fx.zsc +++ b/zscript/swwm_common_fx.zsc @@ -818,7 +818,7 @@ Class SWWMItemFog : Actor if ( bAMBUSH ) numpt *= 2; for ( int i=0; i 0. ) { dir /= magvel; - dir += .2*(FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)); + dir += .2*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); vel = dir.unit()*magvel; } SetOrigin(level.Vec3Offset(pos,vel),true); @@ -466,7 +466,7 @@ Class LoveHeart : Actor int numpt = Random[ExploS](10,15); for ( int i=0; i 3) || (Random[Junk](1,20) < 17) || (vel.z > -1.4)) ) { ClearBounce(); @@ -114,7 +114,7 @@ Class SWWMBulletImpact : Actor Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); for ( int i=0; i 1 ) { s = Spawn("SWWMHalfSmoke",Owner.pos); - s.vel = Owner.vel*.3+(FRandom[Ponch](-1,1),FRandom[Ponch](-1,1),FRandom[Ponch](-1,1)).unit()*FRandom[Ponch](.1,1.2); + s.vel = Owner.vel*.3+SWWMUtility.Vec3FromAngles(FRandom[Ponch](0,360),FRandom[Ponch](-90,90))*FRandom[Ponch](.1,1.2); s.scale *= 2.; s.A_SetRenderStyle(s.alpha,STYLE_AddShaded); s.SetShade(Color(4,2,1)*Random[Ponch](32,63)); diff --git a/zscript/weapons/swwm_blazeit_fx.zsc b/zscript/weapons/swwm_blazeit_fx.zsc index ff0971945..0253f0a40 100644 --- a/zscript/weapons/swwm_blazeit_fx.zsc +++ b/zscript/weapons/swwm_blazeit_fx.zsc @@ -274,7 +274,7 @@ Class HellblazerMissile : Actor s.scale *= FRandom[Hellblazer](.8,1.2); s.special1 = Random[Hellblazer](0,2); s.alpha *= .5; - s.vel = .3*vel + (traildir+(FRandom[Hellblazer](-.4,.4),FRandom[Hellblazer](-.4,.4),FRandom[Hellblazer](-.4,.4))).unit()*FRandom[Hellblazer](1.,2.); + s.vel = .3*vel + (traildir+SWWMUtility.Vec3FromAngles(FRandom[Hellblazer](0,360),FRandom[Hellblazer](-90,90))*.4).unit()*FRandom[Hellblazer](1.,2.); } if ( bNOGRAVITY ) { @@ -345,7 +345,7 @@ Class HellblazerMissile : Actor int numpt = Random[Hellblazer](12,24); for ( int i=0; i 10 ) vel.z = 0.5*(10+vel.z); @@ -871,7 +871,7 @@ Class HellblazerClusterMini : HellblazerMissile2 s.scale *= FRandom[Hellblazer](.6,.8); s.special1 = Random[Hellblazer](0,1); s.alpha *= .4; - s.vel = .3*vel + (traildir+(FRandom[Hellblazer](-.4,.4),FRandom[Hellblazer](-.4,.4),FRandom[Hellblazer](-.4,.4))).unit()*FRandom[Hellblazer](1.,2.); + s.vel = .3*vel + (traildir+SWWMUtility.Vec3FromAngles(FRandom[Hellblazer](0,360),FRandom[Hellblazer](-90,90))*.4).unit()*FRandom[Hellblazer](1.,2.); } if ( (deto > 1) && (special2 > 5) ) { @@ -907,7 +907,7 @@ Class HellblazerClusterMini : HellblazerMissile2 int numpt = Random[Hellblazer](4,8); for ( int i=0; i 0. ) { dir /= magvel; - dir += .2*(FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)); + dir += .2*SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90)); vel = dir.unit()*magvel; } Vector3 newpos = level.Vec3Offset(pos,vel); @@ -2122,7 +2122,7 @@ Class YnykronSingularityExplosionArm : Actor if ( !(reactiontime%2) ) { Spawn("YnykronSingularityExplosionTrail",pos); - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); + Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,5); let s = Spawn("SWWMHalfSmoke",pos); s.SetShade(Color(1,1,1)*Random[ExploS](128,160)+Color(28,0,31)); s.A_SetRenderStyle(s.alpha*(.1+.4*(ReactionTime/15.)),STYLE_AddShaded); @@ -2208,7 +2208,7 @@ Class YnykronSingularityExplosion : Actor int numpt = Random[ExploS](2,4); for ( int i=0; i 5. ) magvel *= .95; if ( magvel > 20. ) magvel *= .65; diff --git a/zscript/weapons/swwm_deepdarkimpact.zsc b/zscript/weapons/swwm_deepdarkimpact.zsc index 6509e1cca..7739bc296 100644 --- a/zscript/weapons/swwm_deepdarkimpact.zsc +++ b/zscript/weapons/swwm_deepdarkimpact.zsc @@ -102,7 +102,7 @@ Class DeepImpact : SWWMWeapon int numpt = Random[Impact](5,7); for ( int i=0; i 50. ) magvel = 50.; Vector3 dir = vel.unit(); if ( bMISSILEMORE ) - dir = (dir+(FRandom[Sparkster](-1,1),FRandom[Sparkster](-1,1),FRandom[Sparkster](-1,1))*FRandom[Sparkster](.006,.012)).unit(); + dir = (dir+SWWMUtility.Vec3FromAngles(FRandom[Sparkster](0,360),FRandom[Sparkster](-90,90))*FRandom[Sparkster](.006,.012)).unit(); // check targets at an interval, to save on performance if ( !(special2%5) ) { @@ -528,7 +528,7 @@ Class BiosparkBall : Actor int numpt = Random[ExploS](16,32); for ( int i=0; i pop = "CandyPop", Class smk = "SWWMHalfSmoke" ) { Vector3 tdir = level.Vec3Diff(pos,invoker.nextpos); - Vector3 pvel = .1*tdir+(FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](.1,.3); + Vector3 pvel = .1*tdir+SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](.1,.3); if ( special2 && !Random[ExploS](0,special2) ) { let m = Spawn(smk,level.Vec3Offset(pos,tdir*.5)); @@ -278,7 +278,7 @@ Class CandyPop : Actor numpt = Random[ExploS](1,3); for ( int i=0; i