Fixes, rebalances, tweaks... Idk, weather hot, brain hurt.

This commit is contained in:
Mari the Deer 2022-08-01 17:22:37 +02:00
commit 965a29870b
21 changed files with 105 additions and 62 deletions

View file

@ -4,3 +4,13 @@ HardwareShader Texture "models/SheenLED.png"
Texture "scrtex" "SHEENLED"
Texture "pixtex" "textures/subpixel.png"
}
PointLight SHEENTLIGHT
{
Color 1.0 0.7 0.2
Size 200
Attenuate 1
}
Object SheenTrail
{
Frame "XZW1" { light "SHEENTLIGHT" }
}

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r241 \cu(Sun 31 Jul 21:14:35 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r241 \cu(2022-07-31 21:14:35)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r242 \cu(Mon 1 Aug 17:22:37 CEST 2022)\c-";
SWWM_SHORTVER="\cw1.3pre r242 \cu(2022-08-01 17:22:37)\c-";

View file

@ -11,25 +11,6 @@ Model "SheenTrail"
Skin 0 "dlc/SheenTracer.png"
FrameIndex XZW1 A 0 0
// recolors, whew
Skin 0 "dlc/SheenTracer_White.png"
FrameIndex XZW1 B 0 0
Skin 0 "dlc/SheenTracer_Red.png"
FrameIndex XZW1 C 0 0
Skin 0 "dlc/SheenTracer_Yellow.png"
FrameIndex XZW1 D 0 0
Skin 0 "dlc/SheenTracer_Green.png"
FrameIndex XZW1 E 0 0
Skin 0 "dlc/SheenTracer_Cyan.png"
FrameIndex XZW1 F 0 0
Skin 0 "dlc/SheenTracer_Blue.png"
FrameIndex XZW1 G 0 0
Skin 0 "dlc/SheenTracer_Magenta.png"
FrameIndex XZW1 H 0 0
Skin 0 "dlc/SheenTracer_TransBlue.png"
FrameIndex XZW1 I 0 0
Skin 0 "dlc/SheenTracer_TransPink.png"
FrameIndex XZW1 J 0 0
}
Model "SheenPhantom"
{
@ -107,28 +88,68 @@ Model "HeavyMahSheenGun"
Scale 0.12 0.12 0.12
Skin 2 "dlc/SheenMuz0.png"
PitchOffset 0
FrameIndex XZW0 A 2 0
PitchOffset 120
FrameIndex XZW0 B 2 0
PitchOffset 240
FrameIndex XZW0 C 2 0
Scale 0.11 0.11 0.11
Skin 2 "dlc/SheenMuz1.png"
FrameIndex XZW0 B 2 0
PitchOffset 0
FrameIndex XZW0 D 2 0
PitchOffset 120
FrameIndex XZW0 E 2 0
PitchOffset 240
FrameIndex XZW0 F 2 0
Scale 0.10 0.10 0.10
Skin 2 "dlc/SheenMuz2.png"
FrameIndex XZW0 C 2 0
PitchOffset 0
FrameIndex XZW0 G 2 0
PitchOffset 120
FrameIndex XZW0 H 2 0
PitchOffset 240
FrameIndex XZW0 I 2 0
Scale 0.09 0.09 0.09
Skin 2 "dlc/SheenMuz3.png"
FrameIndex XZW0 D 2 0
PitchOffset 0
FrameIndex XZW0 J 2 0
PitchOffset 120
FrameIndex XZW0 K 2 0
PitchOffset 240
FrameIndex XZW0 L 2 0
Scale 0.08 0.08 0.08
Skin 2 "dlc/SheenMuz4.png"
FrameIndex XZW0 E 2 0
PitchOffset 0
FrameIndex XZW0 M 2 0
PitchOffset 120
FrameIndex XZW0 N 2 0
PitchOffset 240
FrameIndex XZW0 O 2 0
Scale 0.07 0.07 0.07
Skin 2 "dlc/SheenMuz5.png"
FrameIndex XZW0 F 2 0
PitchOffset 0
FrameIndex XZW0 P 2 0
PitchOffset 120
FrameIndex XZW0 Q 2 0
PitchOffset 240
FrameIndex XZW0 R 2 0
Scale 0.06 0.06 0.06
Skin 2 "dlc/SheenMuz6.png"
FrameIndex XZW0 G 2 0
PitchOffset 0
FrameIndex XZW0 S 2 0
PitchOffset 120
FrameIndex XZW0 T 2 0
PitchOffset 240
FrameIndex XZW0 U 2 0
Scale 0.05 0.05 0.05
Skin 2 "dlc/SheenMuz7.png"
FrameIndex XZW0 H 2 0
PitchOffset 0
FrameIndex XZW0 V 2 0
PitchOffset 120
FrameIndex XZW0 W 2 0
PitchOffset 240
FrameIndex XZW0 X 2 0
}
Model "HeavyMahSheenGun"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

After

Width:  |  Height:  |  Size: 83 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 232 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 478 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -8,6 +8,7 @@ Class HeavyMahSheenGun : SWWMWeapon
double barrelheat, aimerror, vibrate;
bool incooldown, stopfire, firstshot;
int firetimer, shotcnt;
int tcol; // for random
transient ui SmoothDynamicValueInterpolator HeatInter;
transient SpreadSlugTracer st;
@ -25,20 +26,23 @@ Class HeavyMahSheenGun : SWWMWeapon
int d1 = Ammo1.Amount%10;
int d2 = (Ammo1.Amount/10)%10;
int d3 = (Ammo1.Amount/100)%10;
AmmoLed.DrawTexture(AmmoLedBase,false,0,0);
AmmoLed.DrawTexture(AmmoLedSpeed,false,16,16,DTA_SrcHeight,16,DTA_DestHeight,16,DTA_Color,(firespeed==0)?0xFFFFFFFF:0xFF808080,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedSpeed,false,48,16,DTA_SrcY,16,DTA_SrcHeight,16,DTA_DestHeight,16,DTA_Color,(firespeed==1)?0xFFFFFFFF:0xFF808080,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedSpeed,false,80,16,DTA_SrcY,32,DTA_SrcHeight,16,DTA_DestHeight,16,DTA_Color,(firespeed==2)?0xFFFFFFFF:0xFF808080,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedBase,false,0,0,DTA_Color,0xFF00FF00);
AmmoLed.DrawTexture(AmmoLedSpeed,false,16,16,DTA_SrcHeight,16,DTA_DestHeight,16,DTA_Color,(firespeed==0)?0xFF80FF00:0xFF408000,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedSpeed,false,48,16,DTA_SrcY,16,DTA_SrcHeight,16,DTA_DestHeight,16,DTA_Color,(firespeed==1)?0xFFFFFF00:0xFF808000,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedSpeed,false,80,16,DTA_SrcY,32,DTA_SrcHeight,16,DTA_DestHeight,16,DTA_Color,(firespeed==2)?0xFFFF8000:0xFF804000,DTA_LegacyRenderStyle,STYLE_Add);
if ( incooldown )
AmmoLed.DrawTexture(AmmoLedNums,false,16,32,DTA_SrcX,64,DTA_SrcY,64,DTA_SrcWidth,96,DTA_SrcHeight,64,DTA_DestWidth,96,DTA_DestHeight,64,DTA_Color,((gametic%8)>=4)?0xFFFF0000:0xFF800000,DTA_LegacyRenderStyle,STYLE_Add);
else
{
AmmoLed.DrawTexture(AmmoLedNums,false,16,32,DTA_SrcX,(d3%8)*32,DTA_SrcY,(d3/8)*64,DTA_SrcWidth,32,DTA_SrcHeight,64,DTA_DestWidth,32,DTA_DestHeight,64,DTA_Color,(!d3)?0xFF808080:0xFFFFFFFF,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedNums,false,48,32,DTA_SrcX,(d2%8)*32,DTA_SrcY,(d2/8)*64,DTA_SrcWidth,32,DTA_SrcHeight,64,DTA_DestWidth,32,DTA_DestHeight,64,DTA_Color,(!d3&&!d2)?0xFF808080:0xFFFFFFFF,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedNums,false,80,32,DTA_SrcX,(d1%8)*32,DTA_SrcY,(d1/8)*64,DTA_SrcWidth,32,DTA_SrcHeight,64,DTA_DestWidth,32,DTA_DestHeight,64,DTA_Color,(!d3&&!d2&&!d1)?0xFF808080:0xFFFFFFFF,DTA_LegacyRenderStyle,STYLE_Add);
Vector3 rgb = SWWMUtility.HSVtoRGB(((Ammo1.Amount/4.)/Ammo1.MaxAmount,1.,1.));
Color numcol = Color(255,int(rgb.x*255),int(rgb.y*255),int(rgb.z*255));
Color blkcol = Color(255,int(rgb.x*128),int(rgb.y*128),int(rgb.z*128));
AmmoLed.DrawTexture(AmmoLedNums,false,16,32,DTA_SrcX,(d3%8)*32,DTA_SrcY,(d3/8)*64,DTA_SrcWidth,32,DTA_SrcHeight,64,DTA_DestWidth,32,DTA_DestHeight,64,DTA_Color,(!d3)?blkcol:numcol,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedNums,false,48,32,DTA_SrcX,(d2%8)*32,DTA_SrcY,(d2/8)*64,DTA_SrcWidth,32,DTA_SrcHeight,64,DTA_DestWidth,32,DTA_DestHeight,64,DTA_Color,(!d3&&!d2)?blkcol:numcol,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedNums,false,80,32,DTA_SrcX,(d1%8)*32,DTA_SrcY,(d1/8)*64,DTA_SrcWidth,32,DTA_SrcHeight,64,DTA_DestWidth,32,DTA_DestHeight,64,DTA_Color,(!d3&&!d2&&!d1)?blkcol:numcol,DTA_LegacyRenderStyle,STYLE_Add);
}
double ht = barrelheat*.96;
AmmoLed.DrawTexture(AmmoLedBar,false,16,100,DTA_SrcWidth,ht,DTA_DestWidthF,ht,DTA_LegacyRenderStyle,STYLE_Add);
AmmoLed.DrawTexture(AmmoLedBar,false,16,100,DTA_SrcWidth,ht,DTA_DestWidthF,ht,DTA_Color,0xFFFF0000,DTA_LegacyRenderStyle,STYLE_Add);
}
override void HudTick()
@ -111,7 +115,6 @@ Class HeavyMahSheenGun : SWWMWeapon
A_StartSound("sheen/overheat",CHAN_WEAPONEXTRA2,CHANF_LOOPING,attenuation:3.);
invoker.stopfire = invoker.incooldown = true;
}
invoker.firstshot = true;
if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) )
invoker.Ammo1.Amount--;
invoker.fired = gametic;
@ -202,7 +205,11 @@ Class HeavyMahSheenGun : SWWMWeapon
s.vel += vel*.5+x*FRandom[Sheen](1.,3.);
}
int trail = CVar.GetCVar('swwm_funtrails',player).GetInt();
if ( trail == 8 ) trail = Random[Sheen](1,7);
if ( trail == 8 )
{
if ( !invoker.firstshot ) invoker.tcol = Random[Sheen](1,7);
trail = invoker.tcol;
}
else if ( trail == 9 ) trail = 2+(invoker.shotcnt%6);
else if ( trail == 10 ) switch ( invoker.shotcnt%5 )
{
@ -224,7 +231,8 @@ Class HeavyMahSheenGun : SWWMWeapon
t.pitch = asin(-dir.z);
t.specialf1 = st.Results.Distance;
t.specialf2 = invoker.barrelheat;
t.frame = trail;
t.special2 = trail;
invoker.firstshot = true;
invoker.shotcnt++;
}
action void A_CheckContinueFire()
@ -609,13 +617,16 @@ Class HeavyMahSheenGun : SWWMWeapon
}
Stop;
Flash:
XZW0 A 2
XZW0 A 2 Bright
{
let psp = player.GetPSprite(PSP_FLASH);
psp.frame = Random[GunFlash](0,7);
let l = Spawn("SWWMWeaponLight",pos);
l.target = self;
l.Args[3] -= psp.frame*5;
let psp = player.FindPSprite(PSP_FLASH);
psp.frame = Random[GunFlash](0,23);
if ( (invoker.firespeed != 2) || !(invoker.shotcnt%3) )
{
let l = Spawn("SWWMWeaponLight",pos);
l.target = self;
l.Args[3] -= psp.frame*2;
}
}
Stop;
}

View file

@ -70,7 +70,7 @@ Class SheenTrail : Actor
let p = Spawn("SheenPhantom",level.Vec3Offset(oldpos,dir*(i+1)*50.));
p.angle = angle;
p.pitch = pitch;
p.frame = frame;
p.frame = special2;
p.alpha *= clamp((special1+i*.25)/2.,.25,1.);
}
// burn the air throughout

View file

@ -334,7 +334,7 @@ Class HellblazerMissile : Actor
A_SetRenderStyle(1.0,STYLE_Add);
A_SprayDecal("BigRocketBlast",50);
A_SetScale(4.5);
SWWMUtility.DoExplosion(self,250,320000,200,90);
SWWMUtility.DoExplosion(self,320,320000,200,90);
A_NoGravity();
A_QuakeEx(5,5,5,15,0,1500,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:500,rollIntensity:.8);
A_StopSound(CHAN_BODY);
@ -374,6 +374,7 @@ Class HellblazerMissile : Actor
void A_SubExpl( double xscale = 1. )
{
if ( special1 < 8 ) SWWMUtility.DoExplosion(self,80-special1*10,30000-special1*3000,180+special1*15,damagetype:'Fire');
special1++;
if ( (special1 > 8) || !(special1%2) ) return;
int numpt = Random[Hellblazer](0,8-special1);
@ -431,7 +432,7 @@ Class HellblazerCrackshot : HellblazerMissile
A_SetRenderStyle(1.0,STYLE_Add);
A_SprayDecal("BigRocketBlast",50);
A_SetScale(3.);
SWWMUtility.DoExplosion(self,200,320000,160,60);
SWWMUtility.DoExplosion(self,250,320000,160,60);
A_NoGravity();
A_QuakeEx(4,4,4,12,0,1200,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:400,rollIntensity:.6);
A_StopSound(CHAN_BODY);
@ -502,7 +503,7 @@ Class HellblazerRavager : HellblazerMissile
A_SetRenderStyle(1.0,STYLE_Add);
A_SprayDecal("HugeRocketBlast",50);
A_SetScale(8.);
SWWMUtility.DoExplosion(self,300,320000,300,120);
SWWMUtility.DoExplosion(self,400,320000,300,120);
A_NoGravity();
A_QuakeEx(6,6,6,30,0,2000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:800,rollIntensity:1.);
A_StopSound(CHAN_BODY);
@ -628,7 +629,7 @@ Class HellblazerWarhead : HellblazerMissile
if ( special1 < 40 )
{
int nhit, nkil;
[nhit, nkil] = SWWMUtility.DoExplosion(self,320-special1*8,600000-special1*12000,200+special1*30,flags:DE_COUNTENEMIES);
[nhit, nkil] = SWWMUtility.DoExplosion(self,400-special1*10,600000-special1*12000,200+special1*30,flags:DE_COUNTENEMIES,damagetype:'Fire');
nkill += nkil;
}
special1++;
@ -895,7 +896,7 @@ Class HellblazerClusterMini : HellblazerMissile2
A_SetRenderStyle(1.0,STYLE_Add);
A_SprayDecal("BigRocketBlast",50);
A_SetScale(2.5);
SWWMUtility.DoExplosion(self,50,200000,150,60);
SWWMUtility.DoExplosion(self,80,200000,150,60);
A_NoGravity();
A_QuakeEx(4,4,4,12,0,1000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:400,rollIntensity:.6);
A_StopSound(CHAN_BODY);
@ -934,6 +935,7 @@ Class HellblazerClusterMini : HellblazerMissile2
}
void A_ClusterSubExpl()
{
if ( special1 < 5 ) SWWMUtility.DoExplosion(self,40-special1*8,20000-special1*4000,120+special1*16);
special1++;
if ( (special1 > 5) || !(special1%2) ) return;
int numpt = Random[Hellblazer](0,5-special1);
@ -1176,7 +1178,7 @@ Class HellblazerRavagerArm : Actor
l.ReactionTime = int(2+8*(ReactionTime/25.));
l.target = p;
}
SWWMUtility.DoExplosion(self,15+reactiontime/2,2000+400*reactiontime,300-4*reactiontime,100);
SWWMUtility.DoExplosion(self,20+reactiontime/2,2000+400*reactiontime,300-4*reactiontime,100);
double spd = min(vel.length()*1.1,50);
vel = (vel*.1+(FRandom[ExploS](-1.,1.),FRandom[ExploS](-1.,1.),FRandom[ExploS](-1.,1.))).unit()*spd;
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5);
@ -1242,7 +1244,7 @@ Class HellblazerWarheadArm : Actor
Default
{
Obituary "$O_HELLBLAZER";
DamageType 'Exploded';
DamageType 'Fire';
PROJECTILE;
+THRUACTORS;
+BOUNCEONWALLS;
@ -1273,7 +1275,7 @@ Class HellblazerWarheadArm : Actor
{
Spawn("HellblazerWarheadTrail",pos);
int nhit, nkill;
[nhit, nkill] = SWWMUtility.DoExplosion(self,20+reactiontime*4,3000+500*reactiontime,120+4*reactiontime,flags:DE_COUNTENEMIES);
[nhit, nkill] = SWWMUtility.DoExplosion(self,30+reactiontime*5,3000+500*reactiontime,120+4*reactiontime,flags:DE_COUNTENEMIES);
if ( HellblazerWarhead(master) ) HellblazerWarhead(master).nkill += nkill;
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5);
let s = Spawn("SWWMHalfSmoke",pos);

View file

@ -118,13 +118,13 @@ Class Eviscerator : SWWMWeapon
if ( invoker.extended )
{
p.vel *= 1.5;
p.lifetime += .1; // slightly reduced point blank damage
p.lifetime += .1; // reduced point blank damage (almost halved)
}
if ( trail < 8 ) p.trailcolor = max(0,trail);
else if ( trail == 9 ) p.trailcolor = (i%6)+2;
else if ( trail == 10 )
{
switch ( i%5 )
switch ( i%6 )
{
case 0:
case 3:

View file

@ -148,7 +148,7 @@ Class EvisceratorChunk : Actor
Radius 2;
Height 4;
Speed 50;
DamageFunction int(clamp((vel.length()-10)*.08,0,15)+(max(0,1-lifetime)**5)*10);
DamageFunction int(clamp((vel.length()-10)*.24,0,15)+(max(0,1-lifetime)**5)*15);
DamageType 'shot';
BounceFactor 1.0;
WallBounceFactor 1.0;
@ -333,7 +333,7 @@ Class EvisceratorChunk : Actor
lasthit = victim;
// don't knock back if already dead
int oldamt = SWWMDamageAccumulator.GetAmount(victim);
if ( victim.health-oldamt > 0 ) SWWMUtility.DoKnockback(victim,vel.unit(),12000);
if ( victim.health-oldamt > 0 ) SWWMUtility.DoKnockback(victim,vel.unit(),15000);
// gather damage
int dmg = GetMissileDamage(0,0);
SWWMDamageAccumulator.Accumulate(victim,dmg,self,target,damagetype);
@ -356,7 +356,7 @@ Class EvisceratorChunk : Actor
l.pitch = -pitch;
A_StartSound("eviscerator/hith",CHAN_WEAPON,CHANF_OVERLAP,.1);
}
vel *= .75; // reduce velocity as it rips
vel *= FRandom[Eviscerator](.8,.9); // reduce velocity as it rips
A_Gravity();
gravity = clamp(.35-vel.length()/200.,.15,.35);
return 1;
@ -374,7 +374,6 @@ Class EvisceratorChunk : Actor
A_HandleBounce();
lasthit = victim;
}
if ( !Random[Eviscerator](0,3) ) A_AlertMonsters(swwm_uncapalert?0:900);
return 1;
}
States
@ -480,7 +479,7 @@ Class EvisceratorProj : Actor
A_SprayDecal("BigRocketBlast",50);
A_NoGravity();
A_SetScale(3.);
SWWMUtility.DoExplosion(self,100,120000,150,80);
SWWMUtility.DoExplosion(self,120,120000,150,80);
A_QuakeEx(6,6,6,20,0,1200,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:300,rollIntensity:.7);
A_StartSound("eviscerator/shell",CHAN_WEAPON,attenuation:.5);
A_StartSound("eviscerator/shell",CHAN_VOICE,attenuation:.3);
@ -519,7 +518,7 @@ Class EvisceratorProj : Actor
else if ( trail == 9 ) p.trailcolor = (i%6)+2;
else if ( trail == 10 )
{
switch ( i%5 )
switch ( i%6 )
{
case 0:
case 3: