Painslayer is a gameplay mod for GZDoom engine by Agent_Ash aka Jekyll Grim Payne, inspired by Painkiller (2004) by People Can Fly.

Painslayer aims to "demake" weapons from Painkiller and Painkiller: Battle Out of Hell into lovingly hand-painted sprites, while recreating the mechanics as closely as possible. It's meant to be played on existing Doom maps and is compatible with custom monsters.

Painslayer can be downloaded on GitHub: Download & How to Play

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Articles

Painslayer 2.0.0 update significantly improves performance, fixes a number of bugs of varying severity and adds some balance changes to weapons.


GZDoom 4.10.0 is required.

How to play: Github.com

Copyright and license information: see Readme or COPYRIGHT.txt in the archive.

Consider supporting me on Boosty

This update spent a bit too long in the oven, but it's finally out! The main focus was to improve performance. The main source of performance issues in GZDoom is a multitude of actors, such as smoke, debris, trails and flames spawned by projectils and special effects.

GZDoom has had an internal particle system for a while—that system allowed spawning particles that were very cheap on performance, but the downside is that you couldn't modify their look. They could only look like circles or squares. Well, this has changed!

Now particles can be textured with any graphic. While their animation capabilities are limited, and they can't have physics or interact with environment, this meant I could replace almost all smoke, debris and flame effects with these shiny new particles. So I did.

The performance difference varies from slight to very significant. You can find multiple examples (and more information about the update) in this video:

I've also spent a fairly significant amount of time improving Electro's interaction with water. Unfortunately, as of now it only interact with 3D water (not flat water textures), but it does so pretty impressively, if I may say so myself. You can find examples in the video above, or check out these GIFs:

Electro interacting with water

Electro intereacting with water

You can find more details in the full changelog below.

Full changelog for update 2.0.0

Changed

  • The vast majority of particle effects (particles hovering over powerups, smoke and fire particles spawned by projectiles, etc.) have been moved to GZDoom's new native textured particle system. This will vastly improve performance of particles even at very high particle count, especially above moving floors.
  • General weapon changes:
    • Gravity-affected projectiles (stakes, Heater bombs, grenades) will no longer be affected by water sectors and will have the same gravity on the surface and underwater. While arguably unrealistic, this makes their behavior much more predictable, keeping them useful underwater.
    • Projectiles will not spawn flames while underwater. (For example, the trail of a burning stake or explosions of grenades and rockets while under the effect of the Weapon Modifier power-up.)
  • Pain/Killer:
    • Killer (alternative attack) now deals exactly 40 damage (instead of 15 multiplied by 1-8 randomly).
    • Combo Killer (combo attack) was brought a bit more in line with its original Painkiller behavior and generally slightly nerfed, since it was a bit too powerful against single targets, like bosses:
      • Combo Killer now deals exactly 200 damage (instead of 80 multiplied by 1-8 randomly).
      • Combo Killer will now fly through the enemy it hits rather than bouncing back automatically. This means the player will need to manually recall it by pressing altfire, requiring a bit more attention and skill. (Note, the projectile will still only damage the first enemy it hits, flying through other actors harmlessly.)
      • The delay between recalling Combo Killer and being able to fire it again was increased from 3 tics to 6 tics.
  • Stakegun/Grenade Launcher:
    • Stakes will fly at a lower speed if fired underwater. This is partly for the sake of realism, and partly to side-step bugs caused by weird water behavior in GZDoom.
    • Grenades will now deal exactly 50 damage on impact (used to be 20 multiplied by 1-8 randomly). Explosion damage remains unchanged (the same as in Doom).
    • Explosive stakes (combo attack) will now deal exactly 60 damage on impact (used to be 25 multiplied by 1-8 randomly).
  • Minigun/Rocket Launcher:
    • The Minigun spin speed will now gradually increase and decrease when you hold down/let go of the attack button, and the speed won't be reset upon letting go of the button. This means that you won't be forced to watch the whole wind-up/wind-down animation when firing in short bursts.
    • Rockets will now deal exactly 50 damage on impact (used to be 20 multiplied by 1-8 randomly). Explosion damage remains unchanged (the same as in Doom).
  • Electro/Driver:
    • Shurikens (primary attack) will now deal exactly 20 damage on impact (instead of 7 multiplied by 1-8 randomly). This makes them more consistent, and they will generally be a bit more powerful, since Driver used to feel rather underwhelming.
    • The auto-aim/latch-on behavior of the Electro beam (secondary attack) will now always prioritize monsters and other players over shootable props (such as breakable chests).
    • If Electro is fired while underwater, it'll damage the player and everything around them. The actual beam won't be spawned, and instead a large electic muzzle flash will be displayed. It is still possible to keep attacking, and it may even be useful if the shooter has health to spare.
    • If the Electro beam is fired into water, while the player is outside of it, it'll damage everything in the water around the point of impact on the water's surface.
    • Electric Disk (combo attack) will also damage everything around itself while underwater.
  • Boltgun/Heater:
    • Bolt (primary attack) base damage has been increased from 53 to 57.
    • Bolts will fly at a lower speed if fired underwater. This is partly for the sake of realism, and partly to side-step bugs caused by weird water behavior in GZDoom.
    • Heater bombs (secondary attack) will now explode automatically 4 seconds after being fired even if they don't hit anything. (To cover the cases where they fall down a deep pit or float in a large pool for a while).
    • Heater bombs will now deal exactly 35 damage on impact (instead of 10 multiplied randomly by 1-8).
    • Explosive Bolts (combo attack) will now deal exactly 35 damage on impact (used to be 25 multiplied randomly by 1-8).
  • Mega Soul (Megasphere replacement):
    • Now has new appearance, with a gold-and-red color scheme and particles (similarly to Gold Soul). The reasoning was that the original design (green soul with red bits inside) was rather underwhelming, being too similar to the base green soul pickup; polls showed that players with little experience in Painkiller/Painslayer mostly perceived it as a weaker pickup compared to Gold Soul (which is a Soulsphere replacement).
    • Mega Soull will now be always picked up when touched, even if the player has full health and armor. This is to bring its behavior more in line with Doom's Megasphere.
  • Gold Soul (Soulsphere replacement) will now heal 100 HP up to 200 rather than 100 HP up to 100. This is different from the original Painkiller behavior, but is in line with what Soulsphere does in Doom, and is thus a reasonable mechanical adjustment.
  • The Blessing Tarot Card will now increase maximum health to 250 (in addition to its main effect of increasing base health to 150).
  • Players who are currently in Demon Mode will appear as flat-red and fullbright to other players in network games.

Added

  • Added a new, prettier idle electric arc to the Electro sprites.
  • Added a new trail consisting of electric sparks to the Electro Disk (combo attack projectile).
  • Minigun firing animation now uses 8 frames instead of 4, for smoother animation during wind-up/wind-down sequences.

Fixed

  • Fixed a VM abort related to the Crystal Ball powerup: picking up items that had a map marker attached to them will no longer cause an abort.
  • Fixed various projectiles (bolts, stakes, Heater bombs) being fired at weird angles if fired inside a 3D water sector.
  • Fixed Electro beam sometimes not latching on targets.
  • Heads-up display:
    • Fixed boss healthbars flickering
    • Fixed boss healthbars stretching vertically if the hud_aspectscale CVAR was set to true (they will now match the compass shape)
    • Fixed boss healthbars being occasionally displayed for already dead bosses
  • Fixed Freezer reload duration not being shortened by the Dexterity Tarot Card.
  • Fixed burning enemies becoming scorched if they were killed by a non-fire attack while burning.
  • Fixed a Demon Mode bug where the level music would resume playing if the player saved and loaded the game while still in Demon Mode. The music will now stay properly muted for the duration of the Demon Mode.
  • Fixed flames spawned by grenade/rocket explosions (while under the effects of Weapon Modifier) being fired at too high speeds.
  • Fixed monster corpses still being colored in red when in Demon Mode, if the "Keep enemy corpses" option is used.
  • Fixed invisible ammo spawners persisting in the map after the actual ammo was already spawned.
Painslayer 1.3.0 released!

Painslayer 1.3.0 released!

News 2 comments

Painslayer 1.3.0 is out, with full Heretic support, a custom skill/episode menu and minor fixes and improvements.

Painslayer 1.2.0

Painslayer 1.2.0

News 1 comment

This update contains a couple of new features and a number of fixes.

Painslayer 1.1.1

Painslayer 1.1.1

News 2 comments

Painslayer 1.1.1 contains a number of hotfixes for the previous 1.1.0 release.

Painslayer 1.1.0 Released: download and trailer

Painslayer 1.1.0 Released: download and trailer

News 2 comments

Painslayer 1.1.0 released! Download it and watch a new trailer!

Post comment Comments  (0 - 10 of 11)
mastersoto3
mastersoto3 - - 102 comments

Awwww, darnit:

Script error, "painslayer.pk3:zpainkiller/w_electrodriver.zs" line 481:
Cannot convert Pointer<NativeStruct<F3DFloor>> to Pointer<NativeStruct<Sector>>

Execution could not continue.

1 errors while parsing DECORATE scripts

Why is this happening?

Reply Good karma Bad karma+1 vote
Guest
Guest - - 687,512 comments

This comment is currently awaiting admin approval, join now to view.

ANDROIDFERRET
ANDROIDFERRET - - 1,106 comments

Just used the mod with Hellraiser TC from 95 ..damn .that worked perfectly.Video at the end

Reply Good karma Bad karma+1 vote
Guest
Guest - - 687,512 comments

VM execution aborted: tried to read from address zero.
Called from PK_FreezeControl.AttachToOwner at Painslayer130.pk3:zpainkiller/w_shotgun.zs, line 324
Called from Inventory.TryPickup at gzdoom.pk3:zscript/actors/inventory/inventory.zs, line 492
Called from Inventory.CallTryPickup at gzdoom.pk3:zscript/actors/inventory/inventory.zs, line 603
Called from Actor.GiveInventory at gzdoom.pk3:zscript/actors/inventory_util.zs, line 90
Called from PK_FreezerProjectile.StateFunction.1 at Painslayer130.pk3:zpainkiller/w_shotgun.zs, line 151
Called from PK_BaseActor.Tick at Painslayer130.pk3:zpainkiller/pk_main.zs, line 326Called from PK_Projectile.Tick at Painslayer130.pk3:zpainkiller/pk_weapon.zs, line 876
Called from state PK_FreezerProjectile.1 in PK_FreezerProjectile
Called from Thinker.Tick [Native]

Reply Good karma Bad karma+1 vote
KP_SapphireMK2
KP_SapphireMK2 - - 154 comments

same problem tho

Reply Good karma Bad karma+1 vote
JPC-96
JPC-96 - - 27 comments

Will there be an addon to add 3D models and Painkiller monsters? I imagine you would borrow the Painkiller Mutilator mod models made by RDM.

Reply Good karma Bad karma+1 vote
Agent_Ash Creator
Agent_Ash - - 69 comments

No. If I'd intended to use 3D models in this mod, I wouldn't have spent hours upon hours on creating the sprites and coding the weapons specifically to utilize sprite layers.
This mod is a conscious "demake" of Painkiller, meant to look fitting within the Doom aesthetic (which means lo-fi geometry, textures and sprite-based enemies), not a recreation of the original game.
I'm also not planning to borrow stuff from Painkiller: Mutilator and I'm not in competition with that mod; me and RDM are just doing different takes on what Painkiller could look like in GZDoom.

If anyone else wants to make an add-on, I have no problem with that (as long as they acquire all the necessary permissions), but it won't be easily doable because there are things that have to be coded differently for 3D models and for sprites, and it's also not possible to combine models with sprites in weapons.

Reply Good karma+3 votes
Guest
Guest - - 687,512 comments

Is there ambient music from original PK?

Reply Good karma Bad karma0 votes
Agent_Ash Creator
Agent_Ash - - 69 comments

No. For one, I don't have the rights to distribute their music.

I'm considering perhaps adding functionality to play it dynamically in the future (such as combat music activating during combat), but even if I do this, I'll not include the actual music into the mod, I'll perhaps give the players an opportunity to copy the tracks from their copy of Painkiller Black Edition.

That said, I'm not sure this pursuit is worth it because this is a gameplay mod, it's meant to be playable on existing maps, and the choice of music is largely the map author's concern. So, no promises for now, but if I have the time, I may add this functionality in the future.

Reply Good karma+1 vote
JjForcebreaker
JjForcebreaker - - 904 comments

Played it for a couple of hours and I really like it.
I love original Painkiller games and its weapons feel good here. I hope this mod will grow and more textures and monsters will change to look more like ones in Painkiller games.

Good job with weapons and the new card system. Good luck with your development!

Reply Good karma Bad karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account:

X