From 99edae06b9b4281e731adfd2fcb3249b034d4a72 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Mon, 22 Jul 2019 15:21:57 +0200 Subject: [PATCH] Additional corpse hitbox features (zapping loop, land thumps, fall damage, etc.) Corpse hitboxes and UT gibbing are enabled unconditionally for players. Added enter/exit sounds for swimming. --- sndinfo.txt | 2 ++ sounds/Thump.ogg | Bin 0 -> 10513 bytes sounds/WtrExit1.ogg | Bin 0 -> 8678 bytes zscript/ripper.zsc | 7 ----- zscript/utcommon.zsc | 64 ++++++++++++++++++++++++++++++++++++------- zscript/utgore.zsc | 8 ++++-- 6 files changed, 61 insertions(+), 20 deletions(-) create mode 100644 sounds/Thump.ogg create mode 100644 sounds/WtrExit1.ogg diff --git a/sndinfo.txt b/sndinfo.txt index 08fbc39..c1980ae 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -166,6 +166,7 @@ ut/bossfootstep bfootstp ut/playerfootstepwet lsplash ut/wetsplash dsplash +ut/wetsurface wtrexit1 // everything else @@ -206,6 +207,7 @@ misc/gibp3 gibp4 misc/gibp4 gibp5 misc/gibp5 gibp6 $random misc/gibp { misc/gibp1 misc/gibp2 misc/gibp3 misc/gibp4 misc/gibp5 } +misc/corpsefall thump impact/select imppick impact/pull impaltst diff --git a/sounds/Thump.ogg b/sounds/Thump.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8c5349ce34079f170afea677f2bd4f4c3e5417d8 GIT binary patch literal 10513 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 CdDxHu literal 0 HcmV?d00001 diff --git a/sounds/WtrExit1.ogg b/sounds/WtrExit1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..887bf433ad979d5e2d5adda75efbc6e5b4d9b7a8 GIT binary patch literal 8678 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 RE&7%Ra*zN0C3?V`9RQl~g(Ls~ literal 0 HcmV?d00001 diff --git a/zscript/ripper.zsc b/zscript/ripper.zsc index 3245f65..14f2e26 100644 --- a/zscript/ripper.zsc +++ b/zscript/ripper.zsc @@ -142,13 +142,6 @@ Class Razor2 : Actor } Goto Spawn; Death: - TNT1 A 0 - { - angle += 180; - pitch *= -1; - A_RazorHit(); - } - XDeath: TNT1 A 1 A_StopSound(CHAN_VOICE); Stop; } diff --git a/zscript/utcommon.zsc b/zscript/utcommon.zsc index a5c5a30..c2232b8 100644 --- a/zscript/utcommon.zsc +++ b/zscript/utcommon.zsc @@ -1,6 +1,7 @@ Class UTPlayer : DoomPlayer { bool lastground; + int lastwaterlevel; int lastgroundtic; double lastvelz, prevvelz; transient CVar footsteps; @@ -14,6 +15,7 @@ Class UTPlayer : DoomPlayer int tempslide; double ssup; int corpsetime; + bool headless, legless; int dolltype, voicetype; @@ -230,7 +232,7 @@ Class UTPlayer : DoomPlayer bNOFRICTIONBOUNCE = false; } if ( !footsteps ) footsteps = CVar.GetCVar('flak_footsteps',players[consoleplayer]); - if ( !footsteps.GetBool() ) return; + if ( !footsteps.GetBool() || (Health <= 0) ) return; double ang = level.time/(20*TICRATE/35.)*360.; bool forcefootstep = false; if ( player.onground && !bNoGravity && !lastground && (waterlevel < 2) ) @@ -241,9 +243,9 @@ Class UTPlayer : DoomPlayer double vol = clamp((-lastvelz-8)*0.05,0.01,1.0); if ( ((waterlevel > 0) || GetFloorTerrain().IsLiquid) && !bOnMobj ) A_PlaySound("ut/wetsplash",CHAN_AUTO,vol); else A_PlaySound("*uland",CHAN_AUTO,vol); + PlayLanding(); } else forcefootstep = true; - if ( Health > 0 ) PlayLanding(); } if ( tempslide ) { @@ -257,10 +259,14 @@ Class UTPlayer : DoomPlayer if ( (waterlevel > 0) || GetFloorTerrain().IsLiquid && !bOnMobj ) A_PlaySound("ut/playerfootstepwet",CHAN_5,vol); else PlayFootstep(vol); } + if ( (waterlevel >= 2) && (lastwaterlevel < 2) ) + A_PlaySound("ut/wetsplash",CHAN_AUTO); + else if ( (waterlevel < 2) && (lastwaterlevel >= 2) ) + A_PlaySound("ut/wetsurface",CHAN_AUTO); lastground = player.onground; lastvelz = prevvelz; prevvelz = vel.z; - // TODO exit/entry sounds for water + lastwaterlevel = waterlevel; } double FrictionToUnreal() @@ -873,6 +879,7 @@ Class UTPlayer : DoomPlayer void A_HeadPop() { + headless = true; Class hclass = "UTHeadMale"; if ( DollType == DOLL_Boss ) hclass = "UTHeadBoss"; else if ( DollType == DOLL_Female ) hclass = "UTHeadFemale"; @@ -904,6 +911,13 @@ Class UTPlayer : DoomPlayer if ( corpsetime > 350 ) A_FadeOut(0.03); } + override double GetDeathHeight() + { + // no height reduction while still being zapped + if ( DamageType == 'Zapped' ) return height; + return Super.GetDeathHeight(); + } + States { Spawn: @@ -1019,7 +1033,8 @@ Class UTPlayer : DoomPlayer PLD9 A 3 A_PlayerScream(); PLD9 B 3 A_NoBlocking(); PLD9 CDEFGHIJKLMNOPQRST 2; - PD9B ABCDEFGHI 2; + PD9B A 2 A_SetSize(-1,height*0.25); // reduce now + PD9B BCDEFGHI 2; PD9B J 1 A_DMFade(); Wait; Death8: @@ -1058,7 +1073,7 @@ Class UTPlayer : DoomPlayer PLD1 M 1 A_DMFade(); Wait; XDeath: - TNT1 A 1 + TNT1 A 350 { A_XScream(); A_NoBlocking(); @@ -1120,6 +1135,7 @@ Class UTPlayerTFemale : UTPlayer void A_LegPop() { + legless = true; let a = Actor.Spawn("UTFemaleLegGibber",pos); a.vel = vel; a.Scale = Scale; @@ -1154,7 +1170,8 @@ Class UTPlayerTFemale : UTPlayer PLD9 A 3 A_PlayerScream(); PLD9 B 3 A_NoBlocking(); PLD9 CDEFGHIJKLMNOPQRST 2; - PD9B ABCDEFGHIJ 2; + PD9B A 2 A_SetSize(-1,height*0.25); // reduce now + PD9B BCDEFGHIJ 2; PD9B K 1 A_DMFade(); Wait; Death: @@ -1923,6 +1940,8 @@ Class UTBlueKey : BlueCard Class ShredCorpseHitbox : Actor { int accdamage; + Vector3 lastvel; + bool wasonair; Default { @@ -1946,16 +1965,37 @@ Class ShredCorpseHitbox : Actor override void Tick() { Super.Tick(); - if ( !flak_corpsedamage || !target || (target.Health > 0) || target.InStateSequence(target.CurState,target.FindState("XDeath")) ) + if ( (!(target is 'UTPlayer') && !flak_corpsedamage) || !target || (target.Health > 0) || target.InStateSequence(target.CurState,target.FindState("XDeath")) ) { Destroy(); return; } SetOrigin(target.pos,true); A_SetSize(target.radius,target.height); + if ( target.pos.z > target.floorz ) wasonair = true; + else + { + if ( wasonair ) + { + A_PlaySound("misc/corpsefall",CHAN_BODY,clamp(-lastvel.z*0.2,0.1,1.0)); + if ( lastvel.z < -20 ) DamageMobj(null,null,int.max,'Falling'); + } + wasonair = false; + } + lastvel = target.vel; } override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle ) { + if ( (target is 'UTPlayer') && (mod == 'Zapped') && (target.sprite == target.GetSpriteIndex('PLD9')) ) + { + // keep the zapping action on + target.SetState(target.FindState("Death.Zapped")+Random[ZapMe](2,8)); + damage /= 4; + // push the corpse + target.vel.xy += RotateVector((1,0),angle)*damage*0.1; + // keep it afloat + target.vel.z = max(0.1,target.vel.z+0.1); + } accdamage -= damage; int gibhealth = (target.GibHealth==int.min)?-target.SpawnHealth():target.GibHealth; if ( accdamage < gibhealth ) @@ -2613,7 +2653,7 @@ Class UTMainHandler : EventHandler return; } // attach damage accumulator for corpses - if ( !flak_corpsedamage ) return; + if ( !(e.Thing is 'UTPlayer') && !flak_corpsedamage ) return; let a = Actor.Spawn("ShredCorpseHitbox",e.Thing.pos); a.target = e.Thing; } @@ -2644,7 +2684,9 @@ Class UTMainHandler : EventHandler double dist = max(1,dir.length()); double damagescale = 1-max(0,(dist-a.radius)/ExplosionRadius); dir = dir/dist; - a.vel += dir*damagescale*(MomentumTransfer/(Thinker.TICRATE*a.mass)); + if ( (a is 'ShredCorpseHitbox') && a.target ) + a.target.vel += dir*damagescale*(MomentumTransfer/(Thinker.TICRATE*a.target.mass)); + else a.vel += dir*damagescale*(MomentumTransfer/(Thinker.TICRATE*a.mass)); } } @@ -2652,7 +2694,9 @@ Class UTMainHandler : EventHandler static void DoKnockback( Actor Victim, Vector3 HitDirection, double MomentumTransfer ) { if ( !Victim ) return; - Victim.vel += HitDirection*(MomentumTransfer/(Thinker.TICRATE*Victim.Mass)); + if ( (Victim is 'ShredCorpseHitbox') && Victim.target ) + Victim.target.vel += HitDirection*(MomentumTransfer/(Thinker.TICRATE*Victim.target.Mass)); + else Victim.vel += HitDirection*(MomentumTransfer/(Thinker.TICRATE*Victim.Mass)); } static void DoSwing( Actor target, Vector2 dir, double initial, double inc, int steps, int mode = 0, int delay = 0, double rmul = 1.0 ) diff --git a/zscript/utgore.zsc b/zscript/utgore.zsc index 3d513dc..4358f37 100644 --- a/zscript/utgore.zsc +++ b/zscript/utgore.zsc @@ -245,7 +245,7 @@ Class UTGibber : Actor ang = FRandom[Blod](0,360); pt = FRandom[Blod](-90,90); dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt)); - a.vel = rvel*0.6+dir*FRandom[Blod](8.0,12.0); + a.vel = rvel*0.6+dir*FRandom[Blod](3.0,6.0); } for ( int i=0; i