diff --git a/gldefs.sheenhmg b/gldefs.sheenhmg index 372f8e211..36bc724c2 100644 --- a/gldefs.sheenhmg +++ b/gldefs.sheenhmg @@ -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" } +} diff --git a/language.version b/language.version index a211ffe3f..10269bc02 100644 --- a/language.version +++ b/language.version @@ -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-"; diff --git a/modeldef.sheenhmg b/modeldef.sheenhmg index 39b205ba8..c73a9d7a1 100644 --- a/modeldef.sheenhmg +++ b/modeldef.sheenhmg @@ -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" diff --git a/models/SheenLEDBar.png b/models/SheenLEDBar.png index 092adacd2..8b10e4770 100644 Binary files a/models/SheenLEDBar.png and b/models/SheenLEDBar.png differ diff --git a/models/SheenLEDBase.png b/models/SheenLEDBase.png index c637bd363..a78555f50 100644 Binary files a/models/SheenLEDBase.png and b/models/SheenLEDBase.png differ diff --git a/models/SheenLEDNums.png b/models/SheenLEDNums.png index 1156a0104..244f4cd74 100644 Binary files a/models/SheenLEDNums.png and b/models/SheenLEDNums.png differ diff --git a/models/SheenLEDSpeed.png b/models/SheenLEDSpeed.png index fca4d12ba..3926e8229 100644 Binary files a/models/SheenLEDSpeed.png and b/models/SheenLEDSpeed.png differ diff --git a/models/extra/dlc/SheenTracer_Blue.png b/models/extra/dlc/SheenTracer_Blue.png deleted file mode 100644 index 69e6dd633..000000000 Binary files a/models/extra/dlc/SheenTracer_Blue.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Cyan.png b/models/extra/dlc/SheenTracer_Cyan.png deleted file mode 100644 index e09e1ec89..000000000 Binary files a/models/extra/dlc/SheenTracer_Cyan.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Green.png b/models/extra/dlc/SheenTracer_Green.png deleted file mode 100644 index 1fee35c5a..000000000 Binary files a/models/extra/dlc/SheenTracer_Green.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Magenta.png b/models/extra/dlc/SheenTracer_Magenta.png deleted file mode 100644 index f2b4d7aa9..000000000 Binary files a/models/extra/dlc/SheenTracer_Magenta.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Red.png b/models/extra/dlc/SheenTracer_Red.png deleted file mode 100644 index d2c8a9f17..000000000 Binary files a/models/extra/dlc/SheenTracer_Red.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_TransBlue.png b/models/extra/dlc/SheenTracer_TransBlue.png deleted file mode 100644 index 714ad27c6..000000000 Binary files a/models/extra/dlc/SheenTracer_TransBlue.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_TransPink.png b/models/extra/dlc/SheenTracer_TransPink.png deleted file mode 100644 index b0d56f560..000000000 Binary files a/models/extra/dlc/SheenTracer_TransPink.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_White.png b/models/extra/dlc/SheenTracer_White.png deleted file mode 100644 index dad5386f5..000000000 Binary files a/models/extra/dlc/SheenTracer_White.png and /dev/null differ diff --git a/models/extra/dlc/SheenTracer_Yellow.png b/models/extra/dlc/SheenTracer_Yellow.png deleted file mode 100644 index 6076312e5..000000000 Binary files a/models/extra/dlc/SheenTracer_Yellow.png and /dev/null differ diff --git a/zscript/dlc1/swwm_heavymahsheengun.zsc b/zscript/dlc1/swwm_heavymahsheengun.zsc index f5eacac09..5d4416aa9 100644 --- a/zscript/dlc1/swwm_heavymahsheengun.zsc +++ b/zscript/dlc1/swwm_heavymahsheengun.zsc @@ -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; } diff --git a/zscript/dlc1/swwm_heavymahsheengun_fx.zsc b/zscript/dlc1/swwm_heavymahsheengun_fx.zsc index 6d2a7248d..c93cc6e10 100644 --- a/zscript/dlc1/swwm_heavymahsheengun_fx.zsc +++ b/zscript/dlc1/swwm_heavymahsheengun_fx.zsc @@ -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 diff --git a/zscript/weapons/swwm_blazeit_fx.zsc b/zscript/weapons/swwm_blazeit_fx.zsc index ff5a7cc4e..542d90eaa 100644 --- a/zscript/weapons/swwm_blazeit_fx.zsc +++ b/zscript/weapons/swwm_blazeit_fx.zsc @@ -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); diff --git a/zscript/weapons/swwm_danmaku.zsc b/zscript/weapons/swwm_danmaku.zsc index 09711c94e..617c1b38a 100644 --- a/zscript/weapons/swwm_danmaku.zsc +++ b/zscript/weapons/swwm_danmaku.zsc @@ -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: diff --git a/zscript/weapons/swwm_danmaku_fx.zsc b/zscript/weapons/swwm_danmaku_fx.zsc index ef09b844d..6d39b394b 100644 --- a/zscript/weapons/swwm_danmaku_fx.zsc +++ b/zscript/weapons/swwm_danmaku_fx.zsc @@ -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: