From c0ad22d9e661b4a170675cf8eb4988eb33ce2741 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sun, 22 Sep 2019 15:20:52 +0200 Subject: [PATCH] Stunner implemented. Small tweaks. --- GunLore.md | 2 - Readme.md | 2 +- modeldef.stunner | 42 +++++++ models/JRingex2.png | Bin 0 -> 32435 bytes zscript/biggun.zsc | 5 +- zscript/flamegun.zsc | 4 +- zscript/gatling.zsc | 1 + zscript/stunner.zsc | 278 ++++++++++++++++++++++++++++++++++++++++++- 8 files changed, 327 insertions(+), 7 deletions(-) create mode 100644 models/JRingex2.png diff --git a/GunLore.md b/GunLore.md index e0b1766..920f8be 100644 --- a/GunLore.md +++ b/GunLore.md @@ -167,8 +167,6 @@ Any targets unlucky enough to stand in its way will be pushed away. Secondary fire: "Inverts the polarity" of the charge, which results in the complete opposite effect, causing targets to instead be pulled towards you. -The secondary fire can be useful to pick up items that are way out of reach. - Since the charge rod rapidly extends on shoot, both fire modes additionally deal considerable melee damage to anything that's too close. diff --git a/Readme.md b/Readme.md index a452601..b4bb30d 100644 --- a/Readme.md +++ b/Readme.md @@ -35,6 +35,7 @@ Doom Tournament (currently the devel branch is required). - Protomag (slot 2) (replaces pistol) - Dual Protomags - Quadshot (slot 3) (replaces shotguns) + - Stunner (slot 4) (replaces chainsaw) - Fireblaster (slot 5) (replaces rocket launcher) - Peacemaker (slot 8) (rare spawn in backpacks) - Demolisher (slot 9) (replaces bfg9000) @@ -71,7 +72,6 @@ Doom Tournament (currently the devel branch is required). ## In progress - - Stunner (slot 4) (replaces chainsaw) - Flamethrower (slot 6) (replaces plasma rifle) - Impaler (slot 7) (replaces plasma rifle) diff --git a/modeldef.stunner b/modeldef.stunner index 4dddc2b..fa7f4bb 100644 --- a/modeldef.stunner +++ b/modeldef.stunner @@ -13,6 +13,48 @@ Model "Stunner" FrameIndex STNP A 1 0 } +Model "StunTrail" +{ + Path "models" + Model 0 "FatRing_d.3d" + Skin 0 "JRingEx2.png" + PitchOffset 90 + Scale 0.01 0.05 0.05 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex FATR A 0 11 + FrameIndex FATR B 0 12 + FrameIndex FATR C 0 13 + FrameIndex FATR D 0 14 + FrameIndex FATR E 0 15 +} + +Model "StunProj" +{ + Path "models" + Model 0 "FatRing_d.3d" + Skin 0 "JRingEx2.png" + PitchOffset 90 + Scale 0.1 0.5 0.5 + DONTCULLBACKFACES + USEACTORPITCH + USEACTORROLL + + FrameIndex FATR A 0 0 + FrameIndex FATR B 0 1 + FrameIndex FATR C 0 2 + FrameIndex FATR D 0 3 + FrameIndex FATR E 0 4 + FrameIndex FATR F 0 5 + FrameIndex FATR G 0 6 + FrameIndex FATR H 0 7 + FrameIndex FATR I 0 8 + FrameIndex FATR J 0 9 + FrameIndex FATR K 0 10 +} + Model "Stunner" { Path "models" diff --git a/models/JRingex2.png b/models/JRingex2.png new file mode 100644 index 0000000000000000000000000000000000000000..d02f9a3932f354e847b6b079c0cbf390c84c4cf8 GIT binary patch literal 32435 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 K&t;ucLK6U86JUS< literal 0 HcmV?d00001 diff --git a/zscript/biggun.zsc b/zscript/biggun.zsc index b6b87d3..6b843b3 100644 --- a/zscript/biggun.zsc +++ b/zscript/biggun.zsc @@ -102,7 +102,7 @@ Class FatRing : Actor { Super.Tick(); if ( isFrozen() ) return; - A_FadeOut(1/21.,0); + A_FadeOut(1/19.,0); } States { @@ -128,6 +128,7 @@ Class BigBlast : Actor override void PostBeginPlay() { Super.PostBeginPlay(); + A_AlertMonsters(); A_Explode(50+special1,150); A_QuakeEx(4,4,4,10,0,300,"",QF_RELATIVE|QF_SCALEDOWN,falloff:150,rollintensity:0.2); A_PlaySound("big/blast",CHAN_VOICE,pitch:FRandom[BigGun](0.8,1.2)); @@ -326,6 +327,7 @@ Class BigGun : UnrealWeapon l.hitactor.DamageMobj(invoker,self,l.hitdamage,'BigShot',DMG_THRUSTLESS); UTMainHandler.DoKnockback(l.hitactor,l.x,90000.); let b = Spawn("BigBlast",l.hitlocation-l.x*8.); + b.target = self; b.special1 = l.hitdamage; b.angle = atan2(l.x.y,l.x.x); b.pitch = asin(-l.x.z); @@ -349,6 +351,7 @@ Class BigGun : UnrealWeapon if ( !invoker.t.Results.Side ) hitnormal *= -1; } let b = Spawn("BigBlast",invoker.t.Results.HitPos+hitnormal*8.); + b.target = self; b.special1 = int(invoker.t.penetration); b.angle = atan2(hitnormal.y,hitnormal.x); b.pitch = asin(-hitnormal.z); diff --git a/zscript/flamegun.zsc b/zscript/flamegun.zsc index e8bac2b..bba4987 100644 --- a/zscript/flamegun.zsc +++ b/zscript/flamegun.zsc @@ -125,7 +125,7 @@ Class UFireball : Actor { A_PlaySound("flamegun/exp",CHAN_VOICE,pitch:1.2); Spawn("UFireLight",pos); - A_Explode(GetMissileDamage(0,0),60,XF_HURTSOURCE); + A_Explode(GetMissileDamage(0,0),60); UTMainHandler.DoBlast(self,60,9000); } A_SprayDecal("SmallRocketBlast"); @@ -184,7 +184,7 @@ Class UFireball2 : UFireball action void A_FireballExplo2() { scale *= 2.; - A_Explode(GetMissileDamage(0,0),90,XF_HURTSOURCE); + A_Explode(GetMissileDamage(0,0),90); UTMainHandler.DoBlast(self,90,12000); Vector3 dir = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); int numpt = Random[ExploS](10,15); diff --git a/zscript/gatling.zsc b/zscript/gatling.zsc index fa3c965..3fe33f9 100644 --- a/zscript/gatling.zsc +++ b/zscript/gatling.zsc @@ -68,6 +68,7 @@ Class SMiniShell : FastProjectile action void A_ShellExplode() { bFORCEXYBILLBOARD = true; + A_AlertMonsters(); A_SetRenderStyle(1.0,STYLE_Add); A_NoGravity(); A_Explode(150,50,XF_HURTSOURCE|XF_EXPLICITDAMAGETYPE,damagetype:'exploded'); diff --git a/zscript/stunner.zsc b/zscript/stunner.zsc index 174caf3..84f489c 100644 --- a/zscript/stunner.zsc +++ b/zscript/stunner.zsc @@ -24,10 +24,247 @@ Class StunnerAmmo : Ammo Class StunTrail : Actor { + Default + { + RenderStyle "Add"; + Radius 0.1; + Height 0; + +NOBLOCKMAP; + +NOGRAVITY; + +DONTSPLASH; + +NOTELEPORT; + +FORCEXYBILLBOARD; + } + override void Tick() + { + Super.Tick(); + if ( isFrozen() ) return; + A_FadeOut(1./11.,0); + } + States + { + Spawn: + FATR ABCDE 3 Bright; + Stop; + } +} + +Class StunLight : PaletteLight +{ + Default + { + Tag "DYellow"; + } +} + +Class StunTracer : LineTracer +{ + Actor owner, ignore; + + override ETraceStatus TraceCallback() + { + if ( Results.HitType == TRACE_HitActor ) + { + if ( (Results.HitActor == owner) || (Results.HitActor == ignore) ) return TRACE_Skip; + if ( Results.HitActor.bSHOOTABLE ) return TRACE_Stop; + return TRACE_Skip; + } + else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) + { + if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) ) + return TRACE_Stop; + return TRACE_Skip; + } + return TRACE_Stop; + } } Class StunProj : Actor { + StunTracer t; + Vector3 tracedir; + bool moving; + double totaldist; + + override void PostBeginPlay() + { + Super.PostBeginPlay(); + t = new("StunTracer"); + t.owner = target; + t.ignore = self; + moving = true; + } + override void Tick() + { + Super.Tick(); + if ( isFrozen() ) return; + if ( !moving ) + { + A_FadeOut(1/19.,0); + return; + } + // step trace + tracedir = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + t.Trace(pos,cursector,tracedir,500,0); + totaldist += t.Results.Distance; + // spawn particles + for ( int i=10; i= 10000.0 ) + { + // reposition and explode on air + SetOrigin(t.Results.HitPos-t.Results.HitVector*4,false); + StunExplode(); + } + else if ( t.Results.HitType == TRACE_HitNone ) + { + // reposition + SetOrigin(t.Results.HitPos+t.Results.HitVector,false); + angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x); + pitch = asin(-t.Results.HitVector.z); + } + else if ( t.Results.HitType == TRACE_HitActor ) + { + // reposition and explode on actor + SetOrigin(t.Results.HitPos-t.Results.HitVector*4,false); + StunExplode(); + Actor a = t.Results.HitActor; + a.DamageMobj(self,target,max(1,int(1.1*specialf1)),'jolted',DMG_USEANGLE,atan2(t.Results.HitVector.y,t.Results.HitVector.x)); + if ( !a.bDONTTHRUST ) + { + UTMainHandler.DoKnockback(a,t.Results.HitVector,(bAMBUSH?-22000:26000)*specialf1); + a.vel.z += 2.*specialf1; + } + angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x); + pitch = asin(-t.Results.HitVector.z); + } + else + { + // reposition and explode on wall + SetOrigin(t.Results.HitPos-t.Results.HitVector*4,false); + A_SprayDecal("ShockMark",16); + Vector3 HitNormal = t.Results.HitVector; + if ( t.Results.HitType == TRACE_HitWall ) + { + t.Results.HitLine.RemoteActivate(target,t.Results.Side,SPAC_Impact,pos); + // calculate normal + HitNormal = (-t.Results.HitLine.delta.y,t.Results.HitLine.delta.x,0).unit(); + if ( t.Results.Side == 0 ) HitNormal *= -1; + } + else if ( t.Results.HitType == TRACE_HitFloor ) + { + if ( t.Results.ffloor ) HitNormal = -t.Results.ffloor.top.Normal; + else HitNormal = t.Results.HitSector.floorplane.Normal; + } + else if ( t.Results.HitType == TRACE_HitCeiling ) + { + if ( t.Results.ffloor ) HitNormal = -t.Results.ffloor.bottom.Normal; + else HitNormal = t.Results.HitSector.ceilingplane.Normal; + } + StunExplode(); + angle = atan2(HitNormal.y,HitNormal.x); + pitch = asin(-HitNormal.z); + } + } + void StunExplode() + { + moving = false; + SetStateLabel("Death"); + A_Explode(int(0.6*specialf1),50); + A_QuakeEx(1,1,1,3,0,250,"",QF_RELATIVE|QF_SCALEDOWN,falloff:120,rollintensity:0.2); + A_PlaySound("stun/hit",CHAN_VOICE,pitch:FRandom[Stunner](1.5,1.9)-0.08*specialf1); + UTMainHandler.DoBlast(self,50,(bAMBUSH?-7000:11000)*specialf1); + Vector3 dir = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + int numpt = Random[ExploS](10,15); + for ( int i=0; i= (d.HitActor.pos.z+d.HitActor.height*0.81) ) + dmg = d.HitActor.DamageMobj(invoker,self,dmg*2,'Decapitated',DMG_THRUSTLESS); + else dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact',DMG_THRUSTLESS); + UTMainHandler.DoKnockback(d.HitActor,x,4000*invoker.chargesize); + if ( d.HitActor.bNOBLOOD ) + { + let p = Spawn("StunnerImpact",d.HitLocation-d.HitDir*4); + p.angle = atan2(d.HitDir.y,d.HitDir.x); + p.pitch = asin(-d.HitDir.z); + } + else + { + d.HitActor.TraceBleed(dmg,invoker); + d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); + } + } + else if ( d.HitType != TRACE_HitNone ) + { + let p = Spawn("StunnerImpact",d.HitLocation-d.HitDir*4); + p.angle = atan2(d.HitDir.y,d.HitDir.x); + p.pitch = asin(-d.HitDir.z); + if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation-d.HitDir*4); + } } action void A_BeginCharge() {