Impact Hammer fully implemented. Began working on Chainsaw.

Tweaked the shake effect on all weapons.
Covered up some seams on redeemer texture. Moved the model slightly to cover up a gap.
Corrected the chainsaw and translocator HUD icons.
This commit is contained in:
Marisa the Magician 2018-05-26 00:07:23 +02:00
commit 72eb6ca8d1
17 changed files with 254 additions and 21 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before After
Before After

View file

@ -22,3 +22,84 @@ Model "UTChainsaw"
FrameIndex CSWP B 1 0
}
Model "UTChainsaw"
{
Path "models"
Model 0 "chainsawM_d.3d"
SurfaceSkin 0 0 "Jchainsaw1.png"
SurfaceSkin 0 1 "Jchainsaw2.png"
SurfaceSkin 0 2 "Jchainsaw3.png"
SurfaceSkin 0 3 "Jchainsaw4.png"
Scale 0.2 0.16 0.18
Offset 3.5 -12.8 -7.2
AngleOffset 268
PitchOffset 90
// select
FrameIndex CSWS A 0 2
FrameIndex CSWS B 0 3
FrameIndex CSWS C 0 4
FrameIndex CSWS D 0 5
FrameIndex CSWS E 0 6
FrameIndex CSWS F 0 7
FrameIndex CSWS G 0 8
FrameIndex CSWS H 0 9
FrameIndex CSWS I 0 10
FrameIndex CSWS J 0 11
FrameIndex CSWS K 0 12
FrameIndex CSWS L 0 13
FrameIndex CSWS M 0 14
FrameIndex CSWS N 0 15
FrameIndex CSWS O 0 16
// idle
FrameIndex CSWI A 0 17
FrameIndex CSWI B 0 18
FrameIndex CSWI C 0 19
FrameIndex CSWI D 0 20
FrameIndex CSWI E 0 21
FrameIndex CSWI F 0 22
FrameIndex CSWI G 0 23
FrameIndex CSWI H 0 24
FrameIndex CSWI I 0 25
FrameIndex CSWI J 0 26
// swipe
FrameIndex CSWA A 0 27
FrameIndex CSWA B 0 28
FrameIndex CSWA C 0 29
FrameIndex CSWA D 0 30
FrameIndex CSWA E 0 31
FrameIndex CSWA F 0 32
FrameIndex CSWA G 0 33
FrameIndex CSWA H 0 34
FrameIndex CSWA I 0 35
FrameIndex CSWA J 0 36
FrameIndex CSWA K 0 37
// jab
FrameIndex CSWJ A 0 42
FrameIndex CSWJ B 0 43
FrameIndex CSWJ C 0 44
FrameIndex CSWJ D 0 45
FrameIndex CSWJ E 0 46
FrameIndex CSWJ F 0 47
FrameIndex CSWJ G 0 48
FrameIndex CSWJ H 0 49
FrameIndex CSWJ I 0 50
FrameIndex CSWJ J 0 51
FrameIndex CSWJ K 0 52
FrameIndex CSWJ L 0 53
FrameIndex CSWJ M 0 54
FrameIndex CSWJ N 0 55
FrameIndex CSWJ O 0 56
FrameIndex CSWJ P 0 57
FrameIndex CSWJ Q 0 58
FrameIndex CSWJ R 0 59
FrameIndex CSWJ S 0 60
// down
FrameIndex CSWD A 0 62
FrameIndex CSWD B 0 63
FrameIndex CSWD C 0 64
FrameIndex CSWD D 0 65
FrameIndex CSWD E 0 66
FrameIndex CSWD F 0 67
}

View file

@ -79,10 +79,10 @@ Model "WarheadLauncher"
SurfaceSkin 0 1 "jwarhead2.png"
SurfaceSkin 0 2 "jwarhead3.png"
SurfaceSkin 0 3 "jwarhead4.png"
Scale 0.1 0.06 0.1
Scale 0.2 0.12 0.2
PitchOffset 2.8125
RollOffset 22.5
Offset 4.5 -7.8 -4.2
Offset 7.9 -15.6 -9.2
// select
FrameIndex WARS A 0 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Before After
Before After

View file

@ -30,10 +30,10 @@ Currently implemented:
- Searchlight (light amplification visor)
- Enhanced Shock Rifle (slot 4, limited ammo, invulnerability sphere)
- UT HUD
- Impact Hammer (slot 1)
In progress:
- Impact Hammer (slot 1)
- Chainsaw (slot 1)
- Translocator (slot 1)
- Enforcer (slot 2)

View file

@ -126,6 +126,11 @@ impact/loop imploop
impact/release impaltrl
impact/fire impfire
chainsaw/select chainpck
chainsaw/idle chainidl
chainsaw/lower chainpdn
chainsaw/fire sawhit
ges/hit gelhit
ges/select gelselec
ges/fire gelshot

View file

@ -1,2 +1,63 @@
Sprite "CSWPA0",1,1{}
Sprite "CSWPB0",1,1{}
Sprite "CSWSA0",1,1{}
Sprite "CSWSB0",1,1{}
Sprite "CSWSC0",1,1{}
Sprite "CSWSD0",1,1{}
Sprite "CSWSE0",1,1{}
Sprite "CSWSF0",1,1{}
Sprite "CSWSG0",1,1{}
Sprite "CSWSH0",1,1{}
Sprite "CSWSI0",1,1{}
Sprite "CSWSJ0",1,1{}
Sprite "CSWSK0",1,1{}
Sprite "CSWSL0",1,1{}
Sprite "CSWSM0",1,1{}
Sprite "CSWSN0",1,1{}
Sprite "CSWSO0",1,1{}
Sprite "CSWIA0",1,1{}
Sprite "CSWIB0",1,1{}
Sprite "CSWIC0",1,1{}
Sprite "CSWID0",1,1{}
Sprite "CSWIE0",1,1{}
Sprite "CSWIF0",1,1{}
Sprite "CSWIG0",1,1{}
Sprite "CSWIH0",1,1{}
Sprite "CSWII0",1,1{}
Sprite "CSWIJ0",1,1{}
Sprite "CSWAA0",1,1{}
Sprite "CSWAB0",1,1{}
Sprite "CSWAC0",1,1{}
Sprite "CSWAD0",1,1{}
Sprite "CSWAE0",1,1{}
Sprite "CSWAF0",1,1{}
Sprite "CSWAG0",1,1{}
Sprite "CSWAH0",1,1{}
Sprite "CSWAI0",1,1{}
Sprite "CSWAJ0",1,1{}
Sprite "CSWAK0",1,1{}
Sprite "CSWJA0",1,1{}
Sprite "CSWJB0",1,1{}
Sprite "CSWJC0",1,1{}
Sprite "CSWJD0",1,1{}
Sprite "CSWJE0",1,1{}
Sprite "CSWJF0",1,1{}
Sprite "CSWJG0",1,1{}
Sprite "CSWJH0",1,1{}
Sprite "CSWJI0",1,1{}
Sprite "CSWJJ0",1,1{}
Sprite "CSWJK0",1,1{}
Sprite "CSWJL0",1,1{}
Sprite "CSWJM0",1,1{}
Sprite "CSWJN0",1,1{}
Sprite "CSWJO0",1,1{}
Sprite "CSWJP0",1,1{}
Sprite "CSWJQ0",1,1{}
Sprite "CSWJR0",1,1{}
Sprite "CSWJS0",1,1{}
Sprite "CSWDA0",1,1{}
Sprite "CSWDB0",1,1{}
Sprite "CSWDC0",1,1{}
Sprite "CSWDD0",1,1{}
Sprite "CSWDE0",1,1{}
Sprite "CSWDF0",1,1{}

View file

@ -398,7 +398,7 @@ Class BioRifle : UTWeapon
UTMainHandler.DoFlash(self,Color(48,0,255,0),1);
A_AlertMonsters();
if ( alt ) A_QuakeEx(1+0.5*invoker.charge,1+0.5*invoker.charge,1+0.5*invoker.charge,5+1.2*invoker.charge,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05+0.01*invoker.charge);
else A_QuakeEx(1,1,1,5,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05);
else A_QuakeEx(1,1,1,5,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05);
Vector3 x, y, z;
double a, s;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);

View file

@ -1,5 +1,20 @@
Class UTChainsaw : UTWeapon replaces Chainsaw
{
double sawcnt;
action void A_SawHit()
{
A_QuakeEx(3,3,3,2,0,1,"",QF_RELATIVE,rollIntensity:0.15);
invoker.sawcnt += 1./TICRATE;
if ( invoker.sawcnt < 0.15 ) return;
invoker.sawcnt = 0;
invoker.FireEffect();
}
action void A_SawSwipe()
{
A_QuakeEx(3,3,3,3,0,1,"",QF_RELATIVE,rollIntensity:0.15);
invoker.FireEffect();
}
Default
{
Tag "Chainsaw";
@ -16,5 +31,75 @@ Class UTChainsaw : UTWeapon replaces Chainsaw
Stop;
CSWP B -1;
Stop;
Select:
CSWS A 1 A_Raise(int.max);
Wait;
Ready:
CSWS ABCDEFGHIJLMNO 1 A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE,rollIntensity:0.1);
Idle:
CSWI A 0 A_PlaySound("chainsaw/idle",CHAN_6,looping:true);
CSWI ABCDEFGHIJ 1
{
A_WeaponReady();
A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE,rollIntensity:0.1);
}
Goto Idle+1;
Fire:
CSWJ A 1 A_PlaySound("chainsaw/fire",CHAN_6,looping:true);
CSWJ BCDEF 1 A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE,rollIntensity:0.1);
Hold:
CSWJ G 1 A_SawHit();
CSWJ H 0 A_Refire(1);
Goto Release;
CSWJ H 1 A_SawHit();
CSWJ I 0 A_Refire(1);
Goto Release;
CSWJ I 1 A_SawHit();
CSWJ J 0 A_Refire(1);
Goto Release;
CSWJ J 1 A_SawHit();
CSWJ K 0 A_Refire(1);
Goto Release;
CSWJ K 1 A_SawHit();
CSWJ L 0 A_Refire(1);
Goto Release;
CSWJ L 1 A_SawHit();
CSWJ M 0 A_Refire(1);
Goto Release;
CSWJ M 1 A_SawHit();
CSWJ N 0 A_Refire(1);
Goto Release;
CSWJ N 1 A_SawHit();
CSWJ O 0 A_Refire(1);
Goto Release;
CSWJ O 1 A_SawHit();
CSWJ P 0 A_Refire(1);
Goto Release;
CSWJ P 1 A_SawHit();
CSWJ Q 0 A_Refire(1);
Goto Release;
CSWJ Q 1 A_SawHit();
CSWJ R 0 A_Refire(1);
Goto Release;
CSWJ R 1 A_SawHit();
CSWJ S 0 A_Refire(1);
Goto Release;
CSWJ S 1 A_SawHit();
CSWJ G 0 A_Refire("Hold");
Release:
CSWJ FEDCBA 1 A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE,rollIntensity:0.1);
Goto Idle;
AltFire:
CSWA A 0 A_PlaySound("chainsaw/fire",CHAN_6);
CSWA ABCDEFG 2 A_QuakeEx(3,3,3,3,0,1,"",QF_RELATIVE,rollIntensity:0.15);
CSWA H 2 A_SawSwipe();
CSWA IJK 2 A_QuakeEx(3,3,3,3,0,1,"",QF_RELATIVE,rollIntensity:0.15);
CSWA K 0 A_PlaySound("chainsaw/idle",CHAN_6,looping:true);
Goto Ready;
Deselect:
CSWD A 0 A_PlaySound("chainsaw/lower",CHAN_6);
CSWD ABCDEF 2;
CSWD F 1 A_Lower(int.max);
Wait;
}
}

View file

@ -469,7 +469,7 @@ Class FlakCannon : UTWeapon
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(160,255,96,0),1);
A_AlertMonsters();
A_QuakeEx(1,1,1,3,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05);
A_QuakeEx(1,1,1,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05);
Vector3 x, y, z;
double a, s;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
@ -507,7 +507,7 @@ Class FlakCannon : UTWeapon
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,96,0),1);
A_AlertMonsters();
A_QuakeEx(2,2,2,6,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
A_QuakeEx(2,2,2,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
Vector3 x, y, z;
double a, s;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);

View file

@ -66,7 +66,7 @@ Class ImpactHammer : UTWeapon replaces Fist
if ( d.HitType == TRACE_HitActor )
{
d.HitActor.DamageMobj(invoker,self,60*realcharge,'impact');
d.HitActor.vel += x*(1000/d.HitActor.mass)*realcharge;
d.HitActor.vel = x*(1000/d.HitActor.mass)*realcharge;
if ( d.HitActor.bNOBLOOD )
{
let p = Spawn("HammerImpact",d.HitLocation-d.HitDir*4);
@ -81,7 +81,7 @@ Class ImpactHammer : UTWeapon replaces Fist
}
else if ( d.HitType != TRACE_HitNone )
{
realcharge = max(1.0,invoker.chargesize);
realcharge = max(1.0,realcharge);
DamageMobj(invoker,self,24*realcharge,'impact'); // It's a flat damage of 36 on UT, but I think it's more fair for it to scale
TraceBleed(24*realcharge,invoker);
vel -= x*(1200/mass)*realcharge;
@ -90,8 +90,8 @@ Class ImpactHammer : UTWeapon replaces Fist
p.pitch = asin(-d.HitDir.z);
if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation-d.HitDir*4);
}
A_QuakeEx(realcharge*4,realcharge*4,realcharge*4,12,0,96,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:realcharge*0.2);
realcharge = max(1.0,invoker.chargesize);
A_QuakeEx(realcharge*6,realcharge*6,realcharge*6,16,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:realcharge*0.2);
realcharge = max(1.0,realcharge);
int numpt = Random[Impact](20,40);
for ( int i=0; i<numpt; i++ )
{
@ -112,7 +112,7 @@ Class ImpactHammer : UTWeapon replaces Fist
A_PlaySound("impact/fire",CHAN_WEAPON);
invoker.FireEffect();
A_AlertMonsters();
A_QuakeEx(2,2,2,6,0,96,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
A_QuakeEx(2,2,2,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
Vector3 x, y, z;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
Vector3 origin = (pos.x,pos.y,player.viewz)+10.0*x+3.0*y-4.0*z;
@ -122,7 +122,7 @@ Class ImpactHammer : UTWeapon replaces Fist
if ( d.HitType == TRACE_HitActor )
{
d.HitActor.DamageMobj(invoker,self,20*dscale,'impact');
d.HitActor.vel += x*(500/d.HitActor.mass)*dscale;
d.HitActor.vel = x*(500/d.HitActor.mass)*dscale;
}
else if ( d.HitType != TRACE_HitNone )
{

View file

@ -348,6 +348,7 @@ Class PulseGun : UTWeapon
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(32,128,255,128),1);
A_AlertMonsters();
A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05);
Vector3 x, y, z;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
Vector3 origin = pos+(0,0,player.viewheight)+10.0*x+4.5*y-2.4*z;
@ -383,7 +384,7 @@ Class PulseGun : UTWeapon
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(32,128,255,128),1);
A_AlertMonsters();
A_QuakeEx(1,1,1,2,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05);
A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05);
A_Overlay(-2,"MuzzleFlash");
A_OverlayFlags(-2,PSPF_RENDERSTYLE|PSPF_FORCESTYLE,true);
A_OverlayRenderstyle(-2,STYLE_Add);

View file

@ -791,7 +791,7 @@ Class ShockRifle : UTWeapon
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,128,0,255),1);
A_AlertMonsters();
A_QuakeEx(3,3,3,4,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
A_QuakeEx(3,3,3,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
Vector3 x, y, z;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
Vector3 origin = (pos.x,pos.y,player.viewz)+10.0*x+3.0*y-4.0*z;
@ -810,7 +810,7 @@ Class ShockRifle : UTWeapon
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,128,0,255),1);
A_AlertMonsters();
A_QuakeEx(3,3,3,8,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
A_QuakeEx(3,3,3,8,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
Vector3 x, y, z;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
Vector3 origin = (pos.x,pos.y,player.viewz)+10.0*x+3.0*y-4.0*z;
@ -859,7 +859,7 @@ Class ShockRifle : UTWeapon
ASMA BCDEFGHIJ 2;
Goto Idle;
Deselect:
ASMD ABCDEFG 1;
ASMD ABCDEFG 2;
ASMD G 1 A_Lower(int.max);
Wait;
Select:
@ -900,7 +900,7 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,128,0),1);
A_AlertMonsters();
A_QuakeEx(8,8,8,12,0,96,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.25);
A_QuakeEx(8,8,8,12,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.25);
Vector3 x, y, z;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
Vector3 origin = (pos.x,pos.y,player.viewz)+10.0*x+3.0*y-4.0*z;
@ -919,7 +919,7 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,128,0),1);
A_AlertMonsters();
A_QuakeEx(8,8,8,16,0,96,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.25);
A_QuakeEx(8,8,8,16,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.25);
Vector3 x, y, z;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
Vector3 origin = (pos.x,pos.y,player.viewz)+10.0*x+3.0*y-4.0*z;
@ -968,7 +968,7 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
ASMA BCDEFGHIJ 2;
Goto Idle;
Deselect:
ASMD ABCDEFG 1;
ASMD ABCDEFG 2;
ASMD G 1 A_Lower(int.max);
Wait;
Select:

View file

@ -522,7 +522,7 @@ Class WarheadLauncher : UTWeapon replaces BFG9000
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,128,128),1);
A_AlertMonsters();
A_QuakeEx(6,6,6,20,0,100,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2);
A_QuakeEx(6,6,6,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2);
Vector3 x, y, z;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
vel -= x*10;
@ -558,7 +558,7 @@ Class WarheadLauncher : UTWeapon replaces BFG9000
invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,128,128),1);
A_AlertMonsters();
A_QuakeEx(6,6,6,20,0,100,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2);
A_QuakeEx(6,6,6,20,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2);
Vector3 x, y, z;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
vel -= x*10;