Pyromania - mana burning fine tuning


This relay script exposes the hidden settings used by mafia's excess mana burning mechanism, that are too fiddly/limited-use to belong in the built-in UI. To use:
* Make sure you're using KoLmafia revision 8871 or higher; this won't do anything useful on earlier versions.
* Put this script in your relay folder.
* Put htmlform.ash in your script folder, if you don't have it already.
* Look for 'pyromania' in the script popup, in the top pane of the relay browser.

Skills are now categorized by class, and display the associated effect's icon (with a tooltip showing its modifiers in most cases), so it should be a lot easier to find a specific skill. Your mana burning preferences as set in mafia are now summarized at the top of the page.

Revision history:
0.1 - initial release.
0.2 - categorize, iconize, summarize.
0.3 - small fix for mafia changes by Bale


  • relay_pyromania.ash
    6 KB · Views: 225
Last edited by a moderator:


Active member
This is used in combination with the HP/MP usage on the adventure tab, correct? I have a question for clarity:
Minimum burnable mana with nothing to burn it on before the CLI command below will be executed (default 100)
If I have 1000 max MP, have it set recast down to 50% (500 MP), and all my effects are at maximum leaving me with 623 MP left, then the command would trigger? Using the echo example given, it would print "You need to do something with 123 MP", right?

Another question regarding the update in general, does it handle the skills in numerical order? Would Empathy be cast before Leash?


Woot! This is very useful.

Level 0 buffs only need 5% since they're so cheap to get tons and I oftimes find myself wasting mana on them.
skillBurn1000 => -95
skillBurn2000 => -95
skillBurn3000 => -95
skillBurn4000 => -95
skillBurn5000 => -95
skillBurn6000 => -95

AT Buffs shouldn't burn too much since I oftimes need to replace them.
skillBurn6003 => -94
skillBurn6004 => -94
skillBurn6005 => -94
skillBurn6006 => -94
skillBurn6007 => -94
skillBurn6008 => -94
skillBurn6009 => -94
skillBurn6010 => -94
skillBurn6011 => -94
skillBurn6012 => -94
skillBurn6013 => -94
skillBurn6017 => -94
skillBurn6018 => -94
skillBurn6027 => -94

I like to use Jingle Bells and Curiosity in small doses during a run.
skillBurn2025 => -98
skillBurn2026 => -98

The Flavor of magic is cheap to change whenever.
skillBurn3101 => -90
skillBurn3102 => -90
skillBurn3103 => -90
skillBurn3104 => -90
skillBurn3105 => -90


Fluxxdog: the settings apply both to automatic burning as set in the HP/MP tab, and to any "burn" commands you use.

Yes, you've got it right on the last-chance CLI command.

The skills are listed in ID order in this script (and really need to be organized better), but extension is still performed in increasing order of the remaining turns of the effect they give. That's largely irrelevant, since the goal of the mana burner is to extend them all to the same number of turns (now modified by their individual percentages) - if there's enough burnable MP for multiple casts, it will be spread around rather than letting one effect get way ahead of the rest.



This seems nice, but it does not work for me. Is that because I have "Always, if mana > 90%; burn -55" in my mood and that is bypassing this change? Or is it something else?


In what way does it not work? Your mood-triggered burn is a bit unusual, but seems like it should work as long as you don't have any automatic MP restoration that would take you above 55 MP (you're bypassing the built-in protection against an infinite burn - restore - burn loop).


New version of the script in the first post; no new functionality, but it should be easier to use now, and explains exactly what your current burning settings will do (especially in the case where a high MP autorecovery trigger level is preventing your burn-to setting from being honored).


Small bug. Lines 31-32 confuse trig with thresh. It should actually be...

	} else if ([COLOR="#ff0000"]thresh[/COLOR] < 0) {
		write("Automatic mana burning is disabled in your preferences, so these settings will only affect the gCLI \"burn\" command.");

Theres some related weird feedback on line 34. It's just weird to say it will burn mana at -5%. It might make more sense like this...

		write("Your HP/MP Usage preferences are set to ");
		if (trig >=0)
			write("attempt mana burning whenever your MP reaches " + trig + "% of your maximum.  ");
			write("immediately attempt mana burning.  ");


This script has nothing to do with libram summons. All the relevant settings are built-in: enable the desired libram(s) for breakfast summoning, enable summoning during mana burning, set your start-burning/burn-down-to thresholds as desired (for example, I have mine set to 90%/40%, which means that libram casts can be made for up to half my total MP pool).


What if there is a skill, like say, salamander kata, that we dont want a max buff duration of 1m on (8m firefist would be nice), but everything else we want say no more than 5k of?
Last edited:


Well, I haven't tried this, but perhaps you should try setting the preference for Salamander Kata at 100000%. I think that might do the job nicely.
Is there a way I could get mafia to burn down to a specific amount of mana with pyromania, rather than a percentage? With libram summons and pyromania, I don't want to allow it to burn to 0%, because that might cause me to not have enough MP for the next combat on round 1. But when it burns down to 5%, that still leaves several hundred MP burnt. The edge case where this matters is that by the end of a day of mimic farming, what's happening is that that when I'm at 100% MP, and the next libram summon costs 96% of my MP. Using 96% of my MP would still leave me with over 100 MP, more than enough for the next combat. There's ash support for this, but it'd be nice for regular old automated adventuring too.
Last edited:


Well, you could burn down to 2 percent, right? For greater fine-tuning you can burn to 1.5% since an integer isn't necessary.

set manaBurningThreshold = .015

If you want to be specific about an exact MP number, you can have a postAdventureScript that does set_property("manaBurningThreshold", to_float(targetMP) /my_maxmp())
Last edited: