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 2ce30b613..000000000 Binary files a/models/extra/LanceTracer.png and /dev/null differ diff --git a/zscript/dlc1/swwm_hammertime_fx.zsc b/zscript/dlc1/swwm_hammertime_fx.zsc index 38e48f65b..57a180999 100644 --- a/zscript/dlc1/swwm_hammertime_fx.zsc +++ b/zscript/dlc1/swwm_hammertime_fx.zsc @@ -22,7 +22,7 @@ Class HammerShockwave : Actor SWWMUtility.DoExplosion(self,50+special1,100000+special1*2000,80+special1,40,DE_BLAST|DE_EXTRAZTHRUST,'HammerShockwave',target); for ( int i=0; i<360; i+=5 ) { - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,3); + Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,3); let s = Spawn("SWWMSmoke",Vec3Angle(4,i,8)); s.vel = pvel+SWWMUtility.AngleToVector3(i,7.); s.SetShade(Color(1,1,1)*Random[ExploS](64,224)); @@ -41,7 +41,7 @@ Class HammerShockwave : Actor int numpt = Random[ExploS](10,20); for ( int i=0; i 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