Tweak Hellblazer hold-fire behavior, added a sound cue.

Small melee tweaks.
This commit is contained in:
Mari the Deer 2021-05-15 12:54:20 +02:00
commit 6ad1952e4a
14 changed files with 36 additions and 21 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r482 \cu(Sat 15 May 12:53:55 CEST 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r482 \cu(2021-05-15 12:53:55)\c-";
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r484 \cu(Sat 15 May 12:55:06 CEST 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r484 \cu(2021-05-15 12:55:06)\c-";

View file

@ -729,6 +729,7 @@ $limit hellblazer/hitw 32
hellblazer/bounce sounds/hellblazer/blaze_bounce.ogg
hellblazer/fly sounds/hellblazer/blaze_fly.ogg
hellblazer/preload sounds/hellblazer/blaze_preload.ogg
hellblazer/hold sounds/hellblazer/blaze_hold.ogg
hellblazer/lock sounds/hellblazer/blaze_lock.ogg
hellblazer/clear sounds/hellblazer/blaze_clear.ogg

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1009,7 +1009,7 @@ Class SWWMUtility
}
// Apply full 3D knockback in a specific direction, useful for hitscan
static play void DoKnockback( Actor Victim, Vector3 HitDirection, double MomentumTransfer )
static play void DoKnockback( Actor Victim, Vector3 HitDirection, double MomentumTransfer, bool ExtraZThrust = false )
{
if ( !Victim )
return;
@ -1021,7 +1021,7 @@ Class SWWMUtility
return;
Vector3 Momentum = HitDirection*MomentumTransfer;
if ( (Victim.pos.z <= Victim.floorz) || !Victim.TestMobjZ() )
Momentum.z = max(Momentum.z,.1*Momentum.length());
Momentum.z = max(Momentum.z,(ExtraZThrust?.4:.1)*Momentum.length());
Momentum /= GameTicRate*max(50,Victim.Mass);
Victim.vel += Momentum;
}

View file

@ -315,7 +315,7 @@ extend Class SWWMWeapon
GiveInventory("ParryDamageChecker",1); // need this so parried projectiles deal extra damage
}
// multi-hit cone rather than the usual one-hit arc, more fun
private action bool TryMelee( double spread, int dmg, String hitsound = "", double rangemul = 1. )
private action bool TryMelee( double spread, int dmg, String hitsound = "", double rangemul = 1., double kickmul = 1. )
{
Vector3 x, y, z, dir;
[x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll);
@ -324,7 +324,7 @@ extend Class SWWMWeapon
hits.Clear();
FLineTraceData d;
int rings = 1;
double step = spread/10.;
double step = spread/20.;
double range = 1.5*DEFMELEERANGE*rangemul;
bool raging = CountInv("RagekitPower");
for ( double i=0; i<spread; i+=step )
@ -378,7 +378,7 @@ extend Class SWWMWeapon
for ( int i=0; i<hits.Size(); i++ )
{
diff += deltaangle(self.angle,AngleTo(hits[i].a));
SWWMUtility.DoKnockback(hits[i].a,hits[i].dir+(0,0,.2),dmg*2000);
SWWMUtility.DoKnockback(hits[i].a,hits[i].dir,dmg*2000*kickmul);
// lol oops
if ( !hits[i].a.bDORMANT ) hits[i].a.DaggerAlert(self);
if ( !hits[i].a.bNOBLOOD && !hits[i].a.bDORMANT && (raging || !hits[i].a.bINVULNERABLE) ) blooded = true;
@ -425,7 +425,7 @@ extend Class SWWMWeapon
A_BumpFOV(.96);
return true;
}
action void A_Melee( int dmg = 40, String hitsound = "", double rangemul = 1., double spreadmul = 1. )
action void A_Melee( int dmg = 40, String hitsound = "", double rangemul = 1., double spreadmul = 1., double kickmul = 1. )
{
let raging = RagekitPower(FindInventory("RagekitPower"));
if ( raging ) rangemul += .2;
@ -457,7 +457,7 @@ extend Class SWWMWeapon
invoker.wallponch = false;
// check for shootables
SWWMBulletTrail.DoTrail(self,origin,dir,DEFMELEERANGE*rangemul,0);
if ( TryMelee((raging?.3:.2)*spreadmul,dmg,hitsound,rangemul) )
if ( TryMelee((raging?.3:.2)*spreadmul,dmg,hitsound,rangemul,kickmul) )
return;
// check for walls instead
FTranslatedLineTarget t;

View file

@ -711,9 +711,12 @@ Class Hellblazer : SWWMWeapon
}
if ( player.cmd.buttons&BT_ATTACK )
{
if ( (player.cmd.buttons&BT_ALTATTACK) || (invoker.clipcount < 2) )
return A_JumpByAmmoType("PreFire_1","PreFire_2","PreFire_3","PreFire_4","Ready_G");
invoker.preloadcnt++;
if ( (player.cmd.buttons&BT_ALTATTACK) || ((invoker.clipcount < 2) && (invoker.preloadcnt >= 10)) )
{
invoker.preloadcnt = 0;
return A_JumpByAmmoType("PreFire_1","PreFire_2","PreFire_3","PreFire_4","Ready_G");
}
if ( invoker.preloadcnt >= 10 )
{
invoker.preloadcnt = 0;
@ -781,9 +784,12 @@ Class Hellblazer : SWWMWeapon
}
if ( player.cmd.buttons&BT_ALTATTACK )
{
if ( (player.cmd.buttons&BT_ATTACK) || (invoker.clipcount < 2) )
return A_JumpByAmmoType("PreAltFire_1","PreAltFire_2","PreAltFire_3","PreAltFire_4","Ready_G");
invoker.preloadcnt++;
if ( (player.cmd.buttons&BT_ATTACK) || ((invoker.clipcount < 2) || (invoker.preloadcnt >= 10)) )
{
invoker.preloadcnt = 0;
return A_JumpByAmmoType("PreAltFire_1","PreAltFire_2","PreAltFire_3","PreAltFire_4","Ready_G");
}
if ( invoker.preloadcnt >= 10 )
{
invoker.preloadcnt = 0;
@ -927,6 +933,7 @@ Class Hellblazer : SWWMWeapon
XZW2 A 0
{
invoker.seekcnt = 0;
A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP);
}
XZW2 A 1
{
@ -948,6 +955,7 @@ Class Hellblazer : SWWMWeapon
XZW6 V 0
{
invoker.seekcnt = 0;
A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP);
}
XZW6 V 1
{
@ -969,6 +977,7 @@ Class Hellblazer : SWWMWeapon
XZWB T 0
{
invoker.seekcnt = 0;
A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP);
}
XZWB T 1
{
@ -990,6 +999,7 @@ Class Hellblazer : SWWMWeapon
XZWG R 0
{
invoker.seekcnt = 0;
A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP);
}
XZWG R 1
{
@ -1011,6 +1021,7 @@ Class Hellblazer : SWWMWeapon
XZW2 A 0
{
invoker.seekcnt = 0;
A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP);
}
XZW2 A 1
{
@ -1032,6 +1043,7 @@ Class Hellblazer : SWWMWeapon
XZW6 V 0
{
invoker.seekcnt = 0;
A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP);
}
XZW6 V 1
{
@ -1053,6 +1065,7 @@ Class Hellblazer : SWWMWeapon
XZWB T 0
{
invoker.seekcnt = 0;
A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP);
}
XZWB T 1
{
@ -1074,6 +1087,7 @@ Class Hellblazer : SWWMWeapon
XZWG R 0
{
invoker.seekcnt = 0;
A_StartSound("hellblazer/hold",CHAN_WEAPON,CHANF_OVERLAP);
}
XZWG R 1
{
@ -1343,7 +1357,7 @@ Class Hellblazer : SWWMWeapon
XZWQ KLM 2;
XZWQ N 2 A_Parry(9);
XZWQ OP 1;
XZWQ Q 1 A_Melee(75,"demolitionist/whitl",1.05,1.2);
XZWQ Q 1 A_Melee(75,"demolitionist/whitl",1.05,1.2,1.2);
XZWQ RSTUV 2;
XZWQ W 2 A_StartSound("hellblazer/meleeend",CHAN_WEAPON,CHANF_OVERLAP);
XZWQ XYZ 2;

View file

@ -1242,7 +1242,7 @@ Class Wallbuster : SWWMWeapon
XZW9 GHI 2;
XZW9 J 2 A_Parry(9);
XZW9 KLM 1;
XZW9 N 1 A_Melee(70,"demolitionist/whitl",1.2,1.4);
XZW9 N 1 A_Melee(70,"demolitionist/whitl",1.2,1.4,1.3);
XZW9 OPQRS 2;
XZW9 T 2 A_StartSound("wallbuster/meleeend",CHAN_WEAPON,CHANF_OVERLAP);
XZW9 UVW 2;

View file

@ -481,7 +481,7 @@ Class Eviscerator : SWWMWeapon
XZW9 AB 1;
XZW9 C 1 A_Parry(9);
XZW9 D 1;
XZW9 E 2 A_Melee(60,"demolitionist/whitm",1.1,1.2);
XZW9 E 2 A_Melee(60,"demolitionist/whitm",1.1,1.2,1.2);
XZW9 FGH 2;
XZW9 I 2 A_StartSound("eviscerator/meleeend",CHAN_WEAPON,CHANF_OVERLAP);
XZW9 JKL 2;

View file

@ -515,7 +515,7 @@ Class Ynykron : SWWMWeapon
XZW9 AB 2;
XZW9 C 1 A_Parry(9);
XZW9 DE 1;
XZW9 F 1 A_Melee(100,"demolitionist/whitl",1.5,1.6);
XZW9 F 1 A_Melee(100,"demolitionist/whitl",1.5,1.6,1.7);
XZW9 GHIJK 1;
XZW9 LMNO 2;
XZW9 P 2 A_StartSound("ynykron/meleeend",CHAN_WEAPON,CHANF_OVERLAP);

View file

@ -351,7 +351,7 @@ Class PusherWeapon : SWWMWeapon
XZW5 ABC 2;
XZW5 D 1 A_Parry(9);
XZW5 EFGH 1;
XZW5 I 0 A_Melee(70,"demolitionist/whitl",1.1,1.2);
XZW5 I 0 A_Melee(70,"demolitionist/whitl",1.1,1.2,1.2);
XZW5 IJ 2;
XZW5 K 2 { invoker.PlayUpSound(self); }
XZW5 LM 2;

View file

@ -540,7 +540,7 @@ Class Sparkster : SWWMWeapon
XZW4 EFG 2;
XZW4 H 1 A_Parry(9);
XZW4 IJ 1;
XZW4 K 2 A_Melee(60,"demolitionist/whitm",1.,1.1);
XZW4 K 2 A_Melee(60,"demolitionist/whitm",1.,1.1,1.1);
XZW4 LMNOPQ 2;
XZW4 R 2 A_StartSound("biospark/meleeend",CHAN_WEAPON,CHANF_OVERLAP);
XZW4 STUVWX 2;

View file

@ -1421,7 +1421,7 @@ Class SilverBullet : SWWMWeapon
XZW6 IJK 3;
XZW6 L 1 A_Parry(9);
XZW6 MN 1;
XZW6 O 1 A_Melee(90,"demolitionist/whitl",1.6,2.);
XZW6 O 1 A_Melee(90,"demolitionist/whitl",1.6,2.,2.);
XZW6 PQ 1;
XZW6 RST 2;
XZW6 U 3 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP);
@ -1438,7 +1438,7 @@ Class SilverBullet : SWWMWeapon
XZWC IJK 3;
XZWC L 1 A_Parry(9);
XZWC MN 1;
XZWC O 1 A_Melee(90,"demolitionist/whitl",1.6,2.);
XZWC O 1 A_Melee(90,"demolitionist/whitl",1.6,2.,2.);
XZWC PQ 1;
XZWC RST 2;
XZWC U 3 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP);