Release Candidate 3:

- Fix inventory items not removing themselves when fully drained and no more
  copies are held.
- Fixed Minigun playing the unwind animation on player death.
- Fixed main hand Automag still firing when out of ammo dual wielding.
- Corrected name clash between two explosion sounds.
- Fixed suits still protecting from elemental damage when depleted.
- Add option to wear all suits simultaneously.
- Stunner now consumes Stinger ammo to recharge, this is more in line with the
  Unreal Bible.
- Max damage per explosion capped to 100 for Stinger. Prevents ludicrous
  map-clearing explosions with an amplified asmd combo.
- Shoot-through lines can now be activated by hitscan/beam weapons thanks to
  new DT "bullet trail" feature. No more softlocks in custom maps.
- Added option to make Peacemaker missiles not seek owner and allies.
- Peacemaker missiles start seeking targets much earlier, making it more viable
  indoors.
- Autocannon has had its damage increased again.
- Adjusted swingers for many weapons to feel a bit more natural. Still far from
  perfect.
- Reverted changes to Flamethrower projectile density, and simply made it have
  less dynamic lights.
- Adjustments to armors. Suit elemental resistances now take priority (as
  intended). [please redownload your DT devbuild for full effect]
- Added ring effect for 6-rocket tight wad. Completely forgot this was a thing.
- Fixed flashlight not clearing its dynlights when depleted and still having
  copies.
This commit is contained in:
Marisa the Magician 2019-10-10 08:32:36 +02:00
commit c6a81479ca
29 changed files with 218 additions and 74 deletions

View file

@ -92,6 +92,7 @@ Class QCasing : UCasing
Class QuadshotTracer : LineTracer
{
Actor ignoreme;
Array<Line> ShootThroughList;
Array<HitListEntry> hitlist;
override ETraceStatus TraceCallback()
@ -123,6 +124,7 @@ Class QuadshotTracer : LineTracer
{
if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&(Line.ML_BlockHitscan|Line.ML_BlockEverything)) )
return TRACE_Stop;
ShootThroughList.Push(Results.HitLine);
return TRACE_Skip;
}
return TRACE_Stop;
@ -184,8 +186,16 @@ Class QuadShot : UnrealWeapon
return ClipOut?-1:ClipCount, -1, (ClipCount<2), false;
}
action void ProcessTraceHit( QuadshotTracer t )
action void ProcessTraceHit( QuadshotTracer t, Vector3 origin, Vector3 dir, int bc = 1 )
{
for ( int i=0; i<invoker.t.ShootThroughList.Size(); i++ )
invoker.t.ShootThroughList[i].Activate(self,0,SPAC_PCross);
for ( int i=5; i<invoker.t.Results.Distance; i+=10 )
{
if ( !Random[Boolet](0,4*bc) ) continue;
let b = Actor.Spawn("UTBubble",level.Vec3Offset(origin,dir*i));
b.Scale *= FRandom[Boolet](0.4,0.6);
}
for ( int i=0; i<t.HitList.Size(); i++ )
{
int dmg = 12;
@ -258,7 +268,7 @@ Class QuadShot : UnrealWeapon
for ( int i=0; i<invoker.clipcount; i++ )
{
for ( int i=0; i<3; i++ )
UTMainHandler.DoSwing(self,(FRandom[Quadshot](-0.04,-0.2),FRandom[Quadshot](-0.2,0.2)),FRandom[Quadshot](2,4),FRandom[Quadshot](-0.2,0.5),Random[Quadshot](3,4),SWING_Spring,Random[Quadshot](1,6),FRandom[Quadshot](0.8,1.4));
UTMainHandler.DoSwing(self,(FRandom[Quadshot](-0.04,-0.2),FRandom[Quadshot](-0.2,0.2)),FRandom[Quadshot](6,8),FRandom[Quadshot](-1.,-1.5),Random[Quadshot](6,8),SWING_Spring,0,FRandom[Quadshot](1.8,2.4));
for ( int i=0; i<10; i++ )
{
a = FRandom[Quadshot](0,360);
@ -267,8 +277,9 @@ Class QuadShot : UnrealWeapon
if ( !invoker.t ) invoker.t = new("QuadshotTracer");
invoker.t.ignoreme = self;
invoker.t.hitlist.Clear();
invoker.t.ShootThroughList.Clear();
invoker.t.Trace(origin,CurSector,dir,10000,0);
ProcessTraceHit(invoker.t);
ProcessTraceHit(invoker.t,origin,dir,int(spread));
}
}
vel += (0,0,(0.3+0.3*spread))-x*(1.5+1.1*spread);
@ -279,7 +290,7 @@ Class QuadShot : UnrealWeapon
A_QuakeEx(1,1,1,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.12);
A_PlaySound("quadshot/fire",CHAN_WEAPON,!Dampener.Active(self)?1.:.2);
for ( int i=0; i<3; i++ )
UTMainHandler.DoSwing(self,(FRandom[Quadshot](-0.04,-0.2),FRandom[Quadshot](-0.2,0.2)),FRandom[Quadshot](2,3),FRandom[Quadshot](-0.2,0.5),Random[Quadshot](2,3),SWING_Spring,Random[Quadshot](0,3),FRandom[Quadshot](0.8,1.4));
UTMainHandler.DoSwing(self,(FRandom[Quadshot](-0.04,-0.2),FRandom[Quadshot](-0.2,0.2)),FRandom[Quadshot](5,7),FRandom[Quadshot](-1,-1.5),Random[Quadshot](3,6),SWING_Spring,0,FRandom[Quadshot](1.8,2.4));
for ( int i=0; i<10; i++ )
{
a = FRandom[Quadshot](0,360);
@ -288,8 +299,9 @@ Class QuadShot : UnrealWeapon
if ( !invoker.t ) invoker.t = new("QuadshotTracer");
invoker.t.ignoreme = self;
invoker.t.hitlist.Clear();
invoker.t.ShootThroughList.Clear();
invoker.t.Trace(origin,CurSector,dir,10000,0);
ProcessTraceHit(invoker.t);
ProcessTraceHit(invoker.t,origin,dir);
}
vel += (0,0,0.3)-x*1.5;
invoker.clipcount--;