Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Projects that alter game functions but do not include new maps belong here.
Forum rules
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.

Got a cool project idea but nothing else? Put it in the project ideas thread instead!

Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.

Please read the full rules for more details.
Predictabowl
Posts: 5
Joined: Sat Apr 04, 2026 4:56 am
Preferred Pronouns: He/Him

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by Predictabowl »

================================================================================
WALPURGIS PATCH NOTES - BARDICHE FOCUS
================================================================================

First and foremost: The "patch" that I made doesn't pretend to be a true "balance"
patch; it is more a "patch to play the game more to my liking." So, this is not
a judgment on the original balance.

This post will focus only on the Bardiche, because I have so many things I would
like to say about everything else, but so little time to write them. However, I
believe the Bardiche is the project I feel is the most unfinished/incomplete
change I've made so far.

--------------------------------------------------------------------------------
TLDR:
--------------------------------------------------------------------------------
The real reason why I put a 1G mana cost on Bardiche projectiles is because it
deeply hurts my soul (and I don't even believe in souls) to see projectiles
spawn out of thin air with no resource paid for them. That's just stronger
than me. If someone want I can do also make a version that preserve the original.

--------------------------------------------------------------------------------
MORE IN DEPTH:
--------------------------------------------------------------------------------

Admittedly, the Bardiche is probably my least favorite weapon in the warrior
arsenal. I think that thematically it is very well made, except for the fire
explosions on the tertiary mutate attack, which I really don't think belong
to the theme of the weapon (more on that later). The problem is only that I
like the other warrior weapons more.

The Bardiche is very strong but has some shortcomings. It's a weapon for close
to medium distance, and no options will make it good over long distances—not
even the projectiles—but if they are mana-free, you can surely snipe enemies
if you're armed with a lot of patience.

[ Balance and mana ]
I do think that the primary attacks, upgraded and mutated, are both overpowered
but quite balanced against each other considering equal resources spent, so
having both be free makes selecting the upgrade a meaningful choice.

So why did I bump the projectile cost in mana? Mainly because I can't stomach
free projectiles, and I do feel that the primary attack upgrades of the Bardiche
are too strong; so, in my head, both should cost 1G mana. I didn't want to
increase the mana of the range extension (upgraded) because I like to have a
mana-free option available as a choice. This also means that, probably, to suit
my tastes, I feel I should instead nerf the upgraded version somehow. I still
don't know how, since I've not used the Bardiche extensively.

[ Primary Attack AoE vs TTK ]
At the beginning, when I first started using the Bardiche, my first thought was
that the range extension was definitely the stronger option but, with time, I
reevaluated the projectiles.

Everything has to do with the context: I do like to play with monsters with 170%
to 200% HP. Playing in this condition, you soon realize that some monsters, like
regular Weredragons, have about 700 HP. Using the Bardiche's slow base attack you
need 6 to 7 hits to kill one, and with the upgrade 5 to 6, while with projectiles
used as a shotgun, you can kill one regularly in 2 or sometimes 3 hits.

In this situation, the preference between Total DPS (Area Softening) and Burst
TTK (Time-To-Kill) is heavily skewed toward TTK. Quickly removing one immediate
threat is far more valuable than lightly injuring 4 or 5 of them; as such, in
the end, I always prefer taking the projectiles and using them as a shotgun
weapon. If I do need AOE, the secondary and tertiary fires are more suited for
the job than the primary upgraded attack anyway.

[ The mutated tertiary attack ]
This is highly personal and subjective, and not a critique; I'm purely talking
about my preferences.

I do NOT like the mutated tertiary attack or, more precisely, I do like the
corpse explosion effect on the primary attack, but I do not like that when used,
it spawns fire for no apparent reason for a weapon themed on souls. Also, I do
not like that it uses both blue and green mana, since I feel it breaks the
unspoken rule about mana color/weapons, as I feel it should only use green mana
(maybe more green mana, but only green mana).

For this reason, I simply never use this version. I was thinking that maybe I
would like to make the mutation all about the corpse explosions and leave the
tertiary fire attack the same as the base version.

================================================================================
User avatar
headlesszombie
Posts: 21
Joined: Fri Jul 19, 2019 8:58 pm
Operating System Version (Optional): Windows 11
Graphics Processor: ATI/AMD with Vulkan/Metal Support
Location: Illinois, USA

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by headlesszombie »

Hello there. I may have noticed a bug in my latest walpurgis play session. I set up the gameplay cvar to only drop a randomly chosen weapon and baddies stop dropping weapons all together. I don't remeber that being an issue in previous versions and it makes it impossible to get a weapon in some wads that don't have many weapon pickups. When I switch the cvar to spawn both or choose a single weapon baddies drop them again. Thought it might be something in my mod load order so I got rid of everything but walpurgis the issue persists.
User avatar
eharper256
Posts: 1139
Joined: Sun Feb 25, 2018 2:30 am
Location: UK

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by eharper256 »

headlesszombie wrote: Thu May 07, 2026 3:09 amHello there. I may have noticed a bug in my latest walpurgis play session. I set up the gameplay cvar to only drop a randomly chosen weapon and baddies stop dropping weapons all together. I don't remeber that being an issue in previous versions and it makes it impossible to get a weapon in some wads that don't have many weapon pickups. When I switch the cvar to spawn both or choose a single weapon baddies drop them again. Thought it might be something in my mod load order so I got rid of everything but walpurgis the issue persists.
It's a bit of finicky mode, since Walp can't tell what gets killed where; can be a problem if the thing you kill is on a platform or being killed by a level effect somewhere, so it's adamant about only spawning one weapon precisely, as that was the request. Is this behaviour the same regardless of the map used? Doom, Heretic, Hexen? The code for it has not changed at all since its introduction, so it seems bizarre it wouldn't work in 1.0A.
User avatar
headlesszombie
Posts: 21
Joined: Fri Jul 19, 2019 8:58 pm
Operating System Version (Optional): Windows 11
Graphics Processor: ATI/AMD with Vulkan/Metal Support
Location: Illinois, USA

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by headlesszombie »

eharper256 wrote: Thu May 07, 2026 12:15 pm
headlesszombie wrote: Thu May 07, 2026 3:09 amHello there. I may have noticed a bug in my latest walpurgis play session. I set up the gameplay cvar to only drop a randomly chosen weapon and baddies stop dropping weapons all together. I don't remeber that being an issue in previous versions and it makes it impossible to get a weapon in some wads that don't have many weapon pickups. When I switch the cvar to spawn both or choose a single weapon baddies drop them again. Thought it might be something in my mod load order so I got rid of everything but walpurgis the issue persists.
It's a bit of finicky mode, since Walp can't tell what gets killed where; can be a problem if the thing you kill is on a platform or being killed by a level effect somewhere, so it's adamant about only spawning one weapon precisely, as that was the request. Is this behaviour the same regardless of the map used? Doom, Heretic, Hexen? The code for it has not changed at all since its introduction, so it seems bizarre it wouldn't work in 1.0A.
Did some basic testing with vanilla and custom maps for all three games. I can't get weapons to drop from enemies still with that cvar on. Noticed this because I wanted to do a playthrough of Momento Mori II one of my favorite classic megawads. Got to map 6 and still had only mace with the crusader when I gave up.
User avatar
eharper256
Posts: 1139
Joined: Sun Feb 25, 2018 2:30 am
Location: UK

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by eharper256 »

headlesszombie wrote: Thu May 07, 2026 3:35 pm
eharper256 wrote: Thu May 07, 2026 12:15 pm
headlesszombie wrote: Thu May 07, 2026 3:09 amHello there. I may have noticed a bug in my latest walpurgis play session. I set up the gameplay cvar to only drop a randomly chosen weapon and baddies stop dropping weapons all together. I don't remeber that being an issue in previous versions and it makes it impossible to get a weapon in some wads that don't have many weapon pickups. When I switch the cvar to spawn both or choose a single weapon baddies drop them again. Thought it might be something in my mod load order so I got rid of everything but walpurgis the issue persists.
It's a bit of finicky mode, since Walp can't tell what gets killed where; can be a problem if the thing you kill is on a platform or being killed by a level effect somewhere, so it's adamant about only spawning one weapon precisely, as that was the request. Is this behaviour the same regardless of the map used? Doom, Heretic, Hexen? The code for it has not changed at all since its introduction, so it seems bizarre it wouldn't work in 1.0A.
Did some basic testing with vanilla and custom maps for all three games. I can't get weapons to drop from enemies still with that cvar on. Noticed this because I wanted to do a playthrough of Momento Mori II one of my favorite classic megawads. Got to map 6 and still had only mace with the crusader when I gave up.
AH, sorry I misread what you originally said.
What that mode does is that it ensures precisely ONE weapon will spawn in the world of each type (i.e. 1 Green, 1 Blue Weapon). You'll only get enemies dropping it IF there are NONE whatsoever spawning regularly. And if you miss picking it up, tough, because it's already been spawned (even if it was in a missed secret). Bit of a masochism mode that was requested for me to add specifically.

You can check if the spawner has worked by using the PrintInv console command, and it will show 'SpecialArmamentsChosenBlue' or 'SpecialArmamentsChosenGreen' as special tokens in your inventory. If you've got the token but are not seeing that weapon, chances are it's stashed somewhere in the level, so go no-clip through it to see where it is.

You can use the Walp Test map from the menu as well to see it working; rather than the stash of weapons that normally appear there, there will be one of each and a bunch of mana.
User avatar
headlesszombie
Posts: 21
Joined: Fri Jul 19, 2019 8:58 pm
Operating System Version (Optional): Windows 11
Graphics Processor: ATI/AMD with Vulkan/Metal Support
Location: Illinois, USA

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by headlesszombie »

eharper256 wrote: Thu May 07, 2026 4:39 pm
headlesszombie wrote: Thu May 07, 2026 3:35 pm
eharper256 wrote: Thu May 07, 2026 12:15 pm
It's a bit of finicky mode, since Walp can't tell what gets killed where; can be a problem if the thing you kill is on a platform or being killed by a level effect somewhere, so it's adamant about only spawning one weapon precisely, as that was the request. Is this behaviour the same regardless of the map used? Doom, Heretic, Hexen? The code for it has not changed at all since its introduction, so it seems bizarre it wouldn't work in 1.0A.
Did some basic testing with vanilla and custom maps for all three games. I can't get weapons to drop from enemies still with that cvar on. Noticed this because I wanted to do a playthrough of Momento Mori II one of my favorite classic megawads. Got to map 6 and still had only mace with the crusader when I gave up.
AH, sorry I misread what you originally said.
What that mode does is that it ensures precisely ONE weapon will spawn in the world of each type (i.e. 1 Green, 1 Blue Weapon). You'll only get enemies dropping it IF there are NONE whatsoever spawning regularly. And if you miss picking it up, tough, because it's already been spawned (even if it was in a missed secret). Bit of a masochism mode that was requested for me to add specifically.

You can check if the spawner has worked by using the PrintInv console command, and it will show 'SpecialArmamentsChosenBlue' or 'SpecialArmamentsChosenGreen' as special tokens in your inventory. If you've got the token but are not seeing that weapon, chances are it's stashed somewhere in the level, so go no-clip through it to see where it is.

You can use the Walp Test map from the menu as well to see it working; rather than the stash of weapons that normally appear there, there will be one of each and a bunch of mana.
Can confirm it's working as intended from the testing map. I was just misunderstanding it then that's my mistake. I took it as the mod would only spawn one random weapon for each slot not only a single weapon in the whole game world. Maybe think about renaming that option or something it's a little confusing. Thank you for clarifying. 😂
User avatar
eharper256
Posts: 1139
Joined: Sun Feb 25, 2018 2:30 am
Location: UK

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by eharper256 »

No worries. It is a little confusing, I agree. I needed my puns in the option menu so no place to explain it fully (lol).

As I mention, someone requested me to add that mode way back in the day, and explained it as such, so that's what it does. A bit like the request to remove the soot from flames, it's one of those 'sure that's a bit weird but okay'.

In theory, that other version is also plausible to make quite easily yourself if you fancied dipping into SLADE, and my Spawners.txt, you'd instead use some if/then statements and generate a token like 'pickedBardiche' instead. Bit of a faff to cover all the options it could spawn, but plausible.
Predictabowl
Posts: 5
Joined: Sat Apr 04, 2026 4:56 am
Preferred Pronouns: He/Him

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by Predictabowl »

Hi, I've been out of commission for some time (health problems, and got a surgery), so I couldn't really reply properly (if you excuse my previous wall of text as a sorry excuse for an explanation).
Still I want to repeat the great job you all did on the mod as a whole.

I had some time to evaluate and perform tests, and made some more minor changes, all motivated.
I'm telling you this only because last time you asked if some fixes could be put as a stand alone. I think it could be done but it will require some work and, especially time, the main obstacle being how ZDoom Decorate work with Overriding, which is quite restricted to say the least. Some could be resolved using Zscript, but overriding a Decorate Actor with a Zscript one is a nightmare (because Zscripts are loaded before Decorate), and so it will probably require a whole a lot of rewriting.

I can maybe make an alternate mutually exclusive version (load one or the other), which probably will take less time.
If anyone wanna check the changes and the respective motivations in the readme files of the projects, we could possibly compile a list of things that are "fixes" and nor "balance changes", but I can't promise much right now.
Here's the links again (one is changed):
- https://github.com/Predictabowl/Walpurg ... Patch_repo
- https://github.com/Predictabowl/Walpurg ... MinorFixes
- https://github.com/Predictabowl/Walpurg ... h_Tri_repo (this is for https://doomwiki.org/wiki/Faithless:_Trilogy, I've tested it extensively and now everything should work, but please read the readme if you use it)

Anyway the mod is a blast, and while I had to change some things to suit my tastes, I honestly didn't mean any disrespect, I just find it more enjoyable this way.
User avatar
eharper256
Posts: 1139
Joined: Sun Feb 25, 2018 2:30 am
Location: UK

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by eharper256 »

No worries, you can't offend me.

I'm happy for people to try their own tweaks to Walp even if I'm probably not going to use them myself. :D
Bobby
Posts: 111
Joined: Sun Mar 03, 2019 11:59 am

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by Bobby »

Would it be possible to make a universal hitscan wand mod for use with other mods? I think it's a brilliant concept that would benefit other gameplay mods!
User avatar
eharper256
Posts: 1139
Joined: Sun Feb 25, 2018 2:30 am
Location: UK

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by eharper256 »

Bobby wrote: Tue Jul 28, 2026 8:04 pmWould it be possible to make a universal hitscan wand mod for use with other mods? I think it's a brilliant concept that would benefit other gameplay mods!
It's a pretty simple concept; basically an item that fires a 1 damage pistol shot with a custom rainbow puff, then refunds itself the frame after so you don't run out.

If you study it in Walps files, should be easy to make your own version. The mod in question would need access to the Hexen inventory classes if you cloned it as is, mind.
Bobby
Posts: 111
Joined: Sun Mar 03, 2019 11:59 am

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by Bobby »

eharper256 wrote: Wed Jul 29, 2026 10:44 am
Bobby wrote: Tue Jul 28, 2026 8:04 pmWould it be possible to make a universal hitscan wand mod for use with other mods? I think it's a brilliant concept that would benefit other gameplay mods!
It's a pretty simple concept; basically an item that fires a 1 damage pistol shot with a custom rainbow puff, then refunds itself the frame after so you don't run out.

If you study it in Walps files, should be easy to make your own version. The mod in question would need access to the Hexen inventory classes if you cloned it as is, mind.
Thanks for the reply fren! God blesss!
User avatar
Irrevenant
Posts: 86
Joined: Fri Jul 28, 2017 10:18 am

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by Irrevenant »

It's been a while since I've played this. I went through an episode of Heretic with each character and Hexen with Illitheya. I love her new flechette. Parry's new Starhammer is cool too, although I can't say I'm a fan of the primary, so I'm trying my own overhaul of it.

I also made a new puff for it out of the sprite the exploding comets use. I think it looks cool.
Spoiler:
Speaking of the comets, was the A_Remove at the end of DamoclesLaserCometShit meant to prevent a bug where there's nonstop infinite meteors exploding somewhere?
User avatar
eharper256
Posts: 1139
Joined: Sun Feb 25, 2018 2:30 am
Location: UK

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by eharper256 »

Yeah must have been quite a while, since the Locust Flechette's been there for a fair bit. I want to say 0.98.

Aria's Hammer is meant to be area-denial, rather than a melee weapon per-se, slam it in front of you to force monsters away, then backup to use the Meteors or Vortex. It's atrocious in tight quarters and was meant to be; you should pull out Heavensever for those moments.

And yes, the A_Remove is to make sure it doesn't go mad with the SFX, as you assume.
User avatar
Irrevenant
Posts: 86
Joined: Fri Jul 28, 2017 10:18 am

Re: Walpurgis 1.0A (For Doom/Heretic/Hexen) [FULL 1.0 Release]

Post by Irrevenant »

The locusts are really mean, and intended or not I think it's really funny they can go through teleporters.

You know, on one hand I did realize that, and on the other, I couldn't resist wanting to smack enemies with this awesome hammer and I didn't want to keep chasing them, so I wanted to experiment. I had already sorta needed to make an adjustment to it where it only summoned the flame pillars on the slam for performance reasons. The amount of fire on the upgraded hammer for both swings was a little much. I think I can have it both ways though. This is what it looks like. Yesterday I decided to make it work like it did originally if some code is re-commented, just with the new combo behavior, but if the mana checks don't pass, it still allows attacking with no fire or blasts.

Code: Select all

	Fire:
//	Goto FlameSwings //just in case one wants the original behavior back with the new combos
	HammerSwings:
		CRUX A 0 {if(CountInv("CruxUpgrade") == 1 || CountInv("CruxUpgrade") == 4 || CountInv("CruxUpgrade") == 6 || CountInv("CruxUpgrade") == 9)
				{	A_GiveInventory("MaceChargeCheck2",1);}		}
		CRUX A 0 A_JumpIfInventory("MaceChargeCheck2",1,"FlameSwings")
		CRUX A 0 A_JumpIfInventory("SHComboCheck2", 1, "HammerSwingsLeft")
		CRUX A 0 A_JumpIfInventory("SHComboCounter", 2, "HammerSwingsSlam")
		CRUX A 0 A_JumpIfInventory("SHComboCounter", 1, "HammerSwingsLeft")
		CRUX A 0 A_JumpIfInventory("SHComboCheck",1,"HammerSwingsRight")
		ST5H AB 2 
		ST5H C 1
	HammerSwingsRight:
		TNT1 A 4 A_JumpIfTargetInLOS("FireShieldGo",120,JLOSF_COMBATANTONLY,70,0)
		ST6H S 3 {A_StartSound("SwingItNow",0,CHANF_OVERLAP|CHANF_LOCAL,0.6,ATTN_STATIC,0.85); A_OverlayOffset(23,-30,10,WOF_ADD);}
		ST6H T 3 {A_OverlayOffset(23,-30,10,WOF_ADD);
				if(random(0,4) >= 3 && (GetCVar("walp_silentprotagonists")==0))
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}}
		ST6H U 2 A_OverlayOffset(23,-30,10,WOF_ADD)
		ST6H V 2 {
				A_CustomPunch (random(82,154), 1, CPF_NOTURN, "CrusHammerPuff", 166, 0);
				A_OverlayOffset(23,-30,10,WOF_ADD);
				A_QuakeEx(5,0,0,20,0,1,"-",QF_SCALEDOWN);
				A_GiveInventory("SHComboCounter",1);
				A_GiveInventory("SHComboCheck",1);
				}
		ST6H WX 2
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 A_OverlayOffset(23,30,-10,WOF_ADD)
		Goto EndSwingsRightandLeft
	HammerSwingsLeft:
		TNT1 A 4 A_OverlayOffset(23,0,20,WOF_ADD)
		ST6H A 3 {A_StartSound("SwingItNow",0,CHANF_OVERLAP|CHANF_LOCAL,0.6,ATTN_STATIC,0.85); A_OverlayOffset(23,0,20,WOF_ADD);}
		ST6H B 3 {A_OverlayOffset(23,0,20,WOF_ADD);
				if(random(0,4) >= 3 && (GetCVar("walp_silentprotagonists")==0))
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}}
		ST6H C 2 
		ST6H D 2 {
				A_CustomPunch (random(82,154), 1, CPF_NOTURN, "CrusHammerPuff", 166, 0);
				A_OverlayOffset(23,0,-20,WOF_ADD);
				A_QuakeEx(5,0,0,20,0,1,"-",QF_SCALEDOWN);
				A_GiveInventory("SHComboCounter",1);
				A_GiveInventory("SHComboCheck",1);
				}
		ST6H EF 2 A_OverlayOffset(23,0,-10,WOF_ADD)
		TNT1 A 1 A_OverlayOffset(23,0,-20,WOF_ADD)
		TNT1 A 0
		TNT1 A 0 {if (CountInv("SHComboCheck2") == 1)
			{
			A_TakeInventory("SHComboCounter",1); //if attacking after slam, follow with the left and start over from the right
			A_TakeInventory("SHComboCheck2",1); //I think this flow makes sense for an unpowered hammer
			}} 
		TNT1 A 1
		Goto EndSwingsRightandLeft
	EndSwingsRightandLeft:
		TNT1 A 0 
		TNT1 A 5 A_ReFire
		TNT1 A 0 {A_TakeInventory("SHComboCheck",1);A_TakeInventory("SHComboCounter",2);A_TakeInventory("SHComboCheck2",1);}
		ST5H CBA 2 
		Goto Ready
	HammerSwingsSlam:
		TNT1 A 5 A_JumpIfTargetInLOS("FireShieldGo",120,JLOSF_COMBATANTONLY,70,0)
		ST5H D 3 {A_StartSound("SwingItNow",0,CHANF_OVERLAP|CHANF_LOCAL,0.6,ATTN_STATIC,0.85); A_OverlayOffset(23,-30,10,WOF_ADD);}
		ST5H D 1 {A_OverlayOffset(23,-30,10,WOF_ADD);
				if(random(0,4) >= 3 && (GetCVar("walp_silentprotagonists")==0))
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}}
		ST5H E 3 A_OverlayOffset(23,-30,10,WOF_ADD)
		ST5H F 2 {
				A_CustomPunch (random(82,154), 1, CPF_NOTURN, "CrusHammerPuff", 166, 0);
				A_GiveInventory("SHComboCheck",1);
				A_OverlayOffset(23,-30,10,WOF_ADD);
				}
		ST5H GH 2 A_QuakeEx(0,0,8,20,0,1,"-",QF_SCALEDOWN)
		ST5H I 2 A_StartSound("HammerAndAnvil",0,CHANF_OVERLAP|CHANF_LOCAL,0.7,ATTN_STATIC,0.7)
		ST5H I 2
		ST5H I 0 A_AlertMonsters
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 {A_GiveInventory("SHComboCheck2",1);A_TakeInventory("SHComboCounter",2);A_OverlayOffset(23,30,-10,WOF_ADD);}
		Goto EndSlam
	EndSlam:
		TNT1 A 0
		TNT1 A 5 A_ReFire
		TNT1 A 0 {A_TakeInventory("SHComboCheck",1);A_TakeInventory("SHComboCounter",2);A_TakeInventory("SHComboCheck2",1);}
		ST5H CB 2
		ST5H A 2
		Goto Ready
	FlameSwings: 
//		CRUX A 0 A_JumpIfInventory("SHComboCheck2", 1, "FlameSwingsLeft") //but maybe not for the powered hammer
		CRUX A 0 A_JumpIfInventory("SHComboCounter", 2, "FlameSlamCheck")
		CRUX A 0 A_JumpIfInventory("SHComboCounter", 1, "FlameSwingsLeft") //FlameSwingsLeftCheck
		CRUX A 0 A_JumpIfInventory("SHComboCheck",1,"FlameSwingsRight") //FlameSwingsRightCheck
		CRUX A 0 {if(CountInv("CruxUpgrade") == 1 || CountInv("CruxUpgrade") == 4 || CountInv("CruxUpgrade") == 6 || CountInv("CruxUpgrade") == 9)
				{	A_GiveInventory("MaceChargeCheck2",1);}		}
		ST5H AB 2 
		ST5H C 1
/*	FlameSwingsRightCheck:
		CRUX A 0 A_JumpIfInventory("PowerAmbitMana", 1, "FlameSwingsRightPowered")
		CRUX A 0 A_JumpIfInventory("Mana1W", 2, "FlameSwingsRightCheck2")
		Goto FlameSwingsRight
	FlameSwingsRightCheck2:
		CRUX A 0 A_JumpIfInventory("Mana2W", 2, "FlameSwingsRightPowered")*/
	FlameSwingsRight:
		TNT1 A 4 A_JumpIfTargetInLOS("FireShieldGo",120,JLOSF_COMBATANTONLY,70,0)
		ST9H S 3 {A_StartSound("SwingItNow",0,CHANF_OVERLAP|CHANF_LOCAL,0.7,ATTN_STATIC,0.7); A_OverlayOffset(23,-30,10,WOF_ADD);}
		ST9H T 3 {A_OverlayOffset(23,-30,10,WOF_ADD);
				A_StartSound("FireBlue",0,CHANF_OVERLAP,1,ATTN_STATIC,1);
				if(random(0,4) >= 3 && (GetCVar("walp_silentprotagonists")==0))
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}}
		ST9H U 2 A_OverlayOffset(23,-30,10,WOF_ADD)
		ST9H V 2 {
				A_CustomPunch (random(82,154), 1, CPF_NOTURN, "CrusHammerPuffUpgraded", 166, 0);
				A_OverlayOffset(23,-30,10,WOF_ADD);
				A_QuakeEx(5,0,0,20,0,1,"-",QF_SCALEDOWN);
				A_GiveInventory("SHComboCounter",1);
				A_GiveInventory("SHComboCheck",1);
				}
		ST9H WX 2
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 A_OverlayOffset(23,30,-10,WOF_ADD)
		Goto EndSwingsRightFlame
/*	FlameSwingsRightPowered:
		TNT1 A 4 A_JumpIfTargetInLOS("FireShieldGo",120,JLOSF_COMBATANTONLY,70,0)
		ST9H S 3 {A_StartSound("SwingItNow",0,CHANF_OVERLAP|CHANF_LOCAL,0.7,ATTN_STATIC,0.7); A_OverlayOffset(23,-30,10,WOF_ADD);}
		ST9H T 3 {A_OverlayOffset(23,-30,10,WOF_ADD);
				A_StartSound("FireBlue",0,CHANF_OVERLAP,1,ATTN_STATIC,1);
				if(random(0,4) >= 3 && (GetCVar("walp_silentprotagonists")==0))
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}}
		ST9H U 2 A_OverlayOffset(23,-30,10,WOF_ADD)
		ST9H V 2 {
				A_CustomPunch (random(82,154), 1, CPF_NOTURN, "CrusHammerPuffUpgraded", 166, 0);
				A_OverlayOffset(23,-30,10,WOF_ADD);
				A_QuakeEx(5,0,0,20,0,1,"-",QF_SCALEDOWN);
				A_GiveInventory("SHComboCounter",1);
				A_GiveInventory("SHComboCheck",1);
				if(CountInv("CruxUpgrade") == 1 || CountInv("CruxUpgrade") == 4 || CountInv("CruxUpgrade") == 6 || CountInv("CruxUpgrade") == 9)
				{
				 A_SpawnItemEx("FlamePillarWallBlue",60,-25,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,15,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,-40,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,30,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_FireProjectile("ForceBlastHammer",0,0,0,0,FPF_NOAUTOAIM);
				 }
				else
				{
				 A_SpawnItemEx("FlamePillarWallBlue",60,-25,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,15,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 }
				 A_TakeInventory("Mana1W", 2,TIF_NOTAKEINFINITE);
				 A_TakeInventory("Mana2W", 2,TIF_NOTAKEINFINITE);
				 }
		ST9H WX 2
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 A_OverlayOffset(23,30,-10,WOF_ADD)
		Goto EndSwingsRightFlame */
	EndSwingsRightFlame: //This is just for the extra refire state. So the player can loop between left and right without going to the slam/using mana, depending on which behavior is used.
		TNT1 A 0 
		TNT1 A 5 A_ReFire
		TNT1 A 0 {A_TakeInventory("SHComboCheck",1);A_TakeInventory("SHComboCounter",2);A_TakeInventory("SHComboCheck2",1);}
		TNT1 A 0 {A_ReFire("FlameSwingsLeft");A_GiveInventory("SHRefireCheck");} //Gotta have good timing though. Slightly less good if original behavior isn't on.
		ST5H CBA 2 
		Goto Ready
/*	FlameSwingsLeftCheck:
		CRUX A 0 A_JumpIfInventory("PowerAmbitMana", 1, "FlameSwingsLeftPowered")
		CRUX A 0 A_JumpIfInventory("Mana1W", 2, "FlameSwingsLeftCheck2")
		Goto FlameSwingsLeft
	FlameSwingsLeftCheck2:
		CRUX A 0 A_JumpIfInventory("Mana2W", 2, "FlameSwingsLeftPowered")*/
	FlameSwingsLeft:
		TNT1 A 4 A_OverlayOffset(23,0,20,WOF_ADD)
		ST7H S 3 {A_StartSound("SwingItNow",0,CHANF_OVERLAP|CHANF_LOCAL,0.7,ATTN_STATIC,0.7); A_OverlayOffset(23,0,20,WOF_ADD);}
		ST7H T 3 {A_OverlayOffset(23,0,20,WOF_ADD);
				A_StartSound("FireBlue",0,CHANF_OVERLAP,1,ATTN_STATIC,1);
				if(random(0,4) >= 3 && (GetCVar("walp_silentprotagonists")==0))
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}}
		ST7H U 2 
		ST7H V 2 {
				A_CustomPunch (random(82,154), 1, CPF_NOTURN, "CrusHammerPuffUpgraded", 166, 0);
				A_OverlayOffset(23,0,-20,WOF_ADD);
				A_QuakeEx(5,0,0,20,0,1,"-",QF_SCALEDOWN);
				A_GiveInventory("SHComboCounter",1);
				A_GiveInventory("SHComboCheck",1);
				if (CountInv("SHComboCheck2") == 1) //If original behavior is on, first to second if commented out /**/
				{
				A_FireProjectile("ForceBlastHammer",0,0,0,0,FPF_NOAUTOAIM);
				A_TakeInventory("Mana1W",2);
				A_TakeInventory("Mana2W",2);}
				else if (CountInv("SHRefireCheck") == 1) //This is so the player doesn't use two left attacks
				{
				A_TakeInventory("SHRefireCheck",1);		//if they enter the normal refire state from the manaless left and right loop
				A_GiveInventory("SHComboCounter",2);
				}
				}
		ST7H WX 2 A_OverlayOffset(23,0,-10,WOF_ADD)
		TNT1 A 1 A_OverlayOffset(23,0,-20,WOF_ADD)
		TNT1 A 0
		TNT1 A 0 /*{if (CountInv("SHComboCheck2") == 1)//Pretty sure I'm gonna get rid of this one.
			{
			A_TakeInventory("SHComboCounter", 1);
			A_TakeInventory("SHComboCheck2", 1);
			}}*/
		TNT1 A 1
		Goto EndSwingsLeftFlame
/*	FlameSwingsLeftPowered:
		TNT1 A 4 A_OverlayOffset(23,0,20,WOF_ADD)
		ST7H S 3 {A_StartSound("SwingItNow",0,CHANF_OVERLAP|CHANF_LOCAL,0.7,ATTN_STATIC,0.7); A_OverlayOffset(23,0,20,WOF_ADD);}
		ST7H T 3 {A_OverlayOffset(23,0,20,WOF_ADD);
				A_StartSound("FireBlue",0,CHANF_OVERLAP,1,ATTN_STATIC,1);
				if(random(0,4) >= 3 && (GetCVar("walp_silentprotagonists")==0))
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}}
		ST7H U 2 
		ST7H V 2 {
				A_CustomPunch (random(82,154), 1, CPF_NOTURN, "CrusHammerPuffUpgraded", 166, 0);
				A_OverlayOffset(23,0,-20,WOF_ADD);
				A_QuakeEx(5,0,0,20,0,1,"-",QF_SCALEDOWN);
				A_GiveInventory("SHComboCounter",1);
				A_GiveInventory("SHComboCheck",1);
				if(CountInv("CruxUpgrade") == 1 || CountInv("CruxUpgrade") == 4 || CountInv("CruxUpgrade") == 6 || CountInv("CruxUpgrade") == 9)
				{
				 A_SpawnItemEx("FlamePillarWallBlue",60,-25,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,15,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,-40,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,30,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_FireProjectile("ForceBlastHammer",0,0,0,0,FPF_NOAUTOAIM);
				 }
				else
				{
				 A_SpawnItemEx("FlamePillarWallBlue",60,-25,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,15,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 }
				 A_TakeInventory("Mana1W", 2,TIF_NOTAKEINFINITE);
				 A_TakeInventory("Mana2W", 2,TIF_NOTAKEINFINITE);
				}
		ST7H WX 2 A_OverlayOffset(23,0,-10,WOF_ADD)
		TNT1 A 1 A_OverlayOffset(23,0,-20,WOF_ADD)
		TNT1 A 0
		TNT1 A 0 //{if (CountInv("SHComboCheck2") == 1)
			//{
			//A_TakeInventory("SHComboCounter", 1);
			//A_TakeInventory("SHComboCheck2", 1);
			//}}
		TNT1 A 1
		Goto EndSwingsLeftFlame */
	EndSwingsLeftFlame: //This was the first. I needed to do two for if the original behavior was on.
		TNT1 A 0 
		TNT1 A 5 A_ReFire
		TNT1 A 0 {A_TakeInventory("SHComboCheck",1);A_TakeInventory("SHComboCounter",2);A_TakeInventory("SHComboCheck2",1);}
		TNT1 A 0 A_ReFire("FlameSwingsRight")
		ST5H CBA 2 
		Goto Ready
	HammerSlamCheck:
		CRUX A 0 {if(CountInv("CruxUpgrade") == 1 || CountInv("CruxUpgrade") == 4 || CountInv("CruxUpgrade") == 6 || CountInv("CruxUpgrade") == 9)
				{	A_GiveInventory("MaceChargeCheck2",1);}		}
		CRUX A 0 A_JumpIfInventory("MaceChargeCheck2", 1, "FlameSlamCheck")
		Goto HammerSwingsSlam
	FlameSlamCheck:
		CRUX A 0 A_JumpIfInventory("PowerAmbitMana", 1, "FlamePowerSlam")
		CRUX A 0 A_JumpIfInventory("Mana1W", 2, "FlameSlamCheck2")
		Goto FlameSlam
	FlameSlamCheck2:
		CRUX A 0 A_JumpIfInventory("Mana2W", 2, "FlamePowerSlam")
	FlameSlam:
		TNT1 A 5 A_JumpIfTargetInLOS("FireShieldGo",120,JLOSF_COMBATANTONLY,70,0)
		ST7H D 3 {A_StartSound("SwingItNow",0,CHANF_OVERLAP|CHANF_LOCAL,0.7,ATTN_STATIC,0.7); A_OverlayOffset(23,-30,10,WOF_ADD);}
		ST7H D 1 {	A_OverlayOffset(23,-30,10,WOF_ADD);
					A_StartSound("FireBlue",0,CHANF_OVERLAP,1,ATTN_STATIC,1);
				if(random(0,4) >= 3 && (GetCVar("walp_silentprotagonists")==0))
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}}
		ST7H E 3 A_OverlayOffset(23,-30,10,WOF_ADD)
		ST7H F 2 {
				A_CustomPunch (random(82,154), 1, CPF_NOTURN, "CrusHammerPuffUpgraded", 166, 0);
				A_GiveInventory("SHComboCheck",1);
				A_OverlayOffset(23,-30,10,WOF_ADD);
				}
		ST7H GH 2 A_QuakeEx(0,0,8,20,0,1,"-",QF_SCALEDOWN)
		ST7H I 2 A_StartSound("HammerAndAnvil",0,CHANF_OVERLAP|CHANF_LOCAL,0.7,ATTN_STATIC,0.7)
		ST7H J 2
		ST7H J 0 A_AlertMonsters
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 {A_GiveInventory("SHComboCheck2",1);A_TakeInventory("SHComboCounter",1);A_OverlayOffset(23,30,-10,WOF_ADD);}
		Goto EndSlam
	FlamePowerSlam:
		TNT1 A 5 A_JumpIfTargetInLOS("FireShieldGo",120,JLOSF_COMBATANTONLY,70,0)
		ST7H D 3 {A_StartSound("SwingItNow",0,CHANF_OVERLAP|CHANF_LOCAL,0.7,ATTN_STATIC,0.7); A_OverlayOffset(23,-30,10,WOF_ADD);}
		ST7H D 1 {	A_OverlayOffset(23,-30,10,WOF_ADD);
					A_StartSound("FireBlue",0,CHANF_OVERLAP,1,ATTN_STATIC,1);
				if(random(0,4) >= 3 && (GetCVar("walp_silentprotagonists")==0))
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}}
		ST7H E 3 A_OverlayOffset(23,-30,10,WOF_ADD)
		ST7H F 2 {
				A_CustomPunch (random(82,154), 1, CPF_NOTURN, "CrusHammerPuffUpgraded", 166, 0);
				A_GiveInventory("SHComboCheck",1);
				A_OverlayOffset(23,-30,10,WOF_ADD);
	//			if(CountInv("CruxUpgrade") == 1 || CountInv("CruxUpgrade") == 4 || CountInv("CruxUpgrade") == 6 || CountInv("CruxUpgrade") == 9)
	//			{
				 A_SpawnItemEx("FlamePillarWallBlue",60,-25,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,15,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,-40,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_SpawnItemEx("FlamePillarWallBlue",60,30,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
				 A_FireProjectile("ForceBlastHammer",0,0,0,0,FPF_NOAUTOAIM);
	//			 }
	//			else
	//			{
	//			 A_SpawnItemEx("FlamePillarWallBlue",60,-25,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
	//			 A_SpawnItemEx("FlamePillarWallBlue",60,15,0,3,0,0.2,0,SXF_SETTARGET|SXF_SETMASTER);
	//			 }
				 A_TakeInventory("Mana1W", 2,TIF_NOTAKEINFINITE);
				 A_TakeInventory("Mana2W", 2,TIF_NOTAKEINFINITE);
				}
		ST7H GH 2 A_QuakeEx(0,0,8,20,0,1,"-",QF_SCALEDOWN)
		ST7H I 2 {
				A_StartSound("HammerAndAnvil",0,CHANF_OVERLAP|CHANF_LOCAL,0.7,ATTN_STATIC,0.7);
	//			if(CountInv("CruxUpgrade") == 1 || CountInv("CruxUpgrade") == 4 || CountInv("CruxUpgrade") == 6 || CountInv("CruxUpgrade") == 9)
	//			{
	//			A_Blast(BF_DONTWARN, 3000, 200, 25.0,"None","None");} //just a thought. probably won't keep it.
				} //unintended side effect, I don't know if there's battle potential in this, but it blasts the flames into the air and it looks rad as hell
		ST7H J 2
		ST7H J 0 A_AlertMonsters
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 1 A_OverlayOffset(23,30,-10,WOF_ADD)
		TNT1 A 0 {A_GiveInventory("SHComboCheck2",1);A_TakeInventory("SHComboCounter",1);A_OverlayOffset(23,30,-10,WOF_ADD);}
		Goto EndSlam
	FireShieldGo:
		TNT1 A 0 {
		if(CountInv("MaceChargeCheck1") == 0 )
			{
			A_GiveInventory("MaceChargeCheck1",1);
			if(GetCVar("walp_silentprotagonists")==0)
				{A_StartSound("CrusExerts",CHAN_AUTO,CHANF_OVERLAP,0.9,ATTN_NONE,frandom(0.97,1.04));}
			}
		else
			{
			}
		}
		TNT1 A 7
		Goto HammerSlamCheck //HammerSlamCheck/FlameSlamCheck, depending on whether normal swings are on
It doesn't seem to be working for me. I found it was CometShotA and B failing to die properly. They seem to be clipping through the map occasionally somehow and can be summoned outside of the map if you're close enough to a wall when you cast, and they just keep going forever.

Return to “Gameplay Mods”