Winterbay's Helpful Automatic Monsterbasher (WHAM)


New member
WHAM 5.6
relay WHAM dontuse 0.4.3

This script is a developed version of the SpamAttack script that exists in this forum in several different places. It is a rather robust way to handle most monsters (and those it can't handle it'll tell you and potentially also print some nice helpful info for, requires a verbosity of at least 3).

The script tries to calculate the cheapest way to kill the monster by smart use of your skills and items. As such the script is pretty calculation heavy and may take a few seconds to run. The speed after version 2.0 is almost negligible unless the scripts decides on a very elaborate strategy to kill the monster.

As of version 5.6 (released on 2013-06-10) the script and its relay-counterpart is installed and udated via SVN. In order to use the very useful feature you need a recent build of Kol Mafia. After logging in type the following in the CLI and press enter:
svn checkout

After the command has run you will have WHAM.ash in your /scripts folder and relay_WHAM_dontuse.ash in your /relay folder. In case you get a prompt about overwriting files press OK (if not make sure that any older versions of WHAM is removed). In order to update the scripts in the future either type svn update in the CLI or tick "Update installed SVN projects on login" in Mafia's preferences (found at the bottom under SVN).

This script relies heavily on vprint() and the output is regulated with Zlib's verbosity-setting and it is possible to get it to output nothing with useful info starting at a verbosity level of 3. If you set the verbosity to 10 the script will
a) Print information regarding all the skills and items it thinks you have available and the amount of damage you might do with them (both before and after taking monster resistance into account)
b) Output a bunch of text-files to your /data folder for debugging purposes and
c) Abort execution before it actually does anything with the monster

The script has several layers of verbosity that can be set depending on how interested you are in what is going on. A rough guideline is:
3-4: Basic helpful information
5-7: Increasingly more verbose output on what is going on without being overly intrusive
8-11: Increasing amounts of debugging information, 10 and 11 will abort without perfoming anything actual actions (also completely bypasses SmartStasis integration)

Please post feedback and suggestions since I'm always interested in making the script more useful. In case you want to help out test new features you can also install the beta version of WHAM by the following command:
svn checkout

In order for the script to run properly you will need the following support scripts:

You also need to set your Combat Action to "custom combat script" and create an entry containing:
[ default ]
consult WHAM.ash

In case you want to you can also fine tune a couple of things in the script:

  1. The amount of turns the script should try to calculate before executing and retrying (defaults to 15)
  2. The hitchance you are willing to risk (defaults to 50%, or 0.5 to be exact)
  3. The max number of rounds you are willing to let the script automate skill-slinging before it reverts control to you (defaults to 30)
  4. A boolean safety parameter. If set to true the script will execute your best option and re-calculate your options form the result until either you are dead or the monster is (defaults to false, new form 2.8)
  5. A boolean parameter that if set tu true will make you not use any items at all when fighting (defauilts to false, new from 3.1)
  6. An integer parameter indicating how many extra rounds you wish WHAM to refrain from stasising (defaults to 0, new from 4.1)
  7. A boolean parameter to toggle use of the Sea Lasso in The Sea (defaults to false, new from 5.3)
  8. A boolean parameter that can be set to swap WHAM from trying to do things as profitable as possible to kill the monster as quick as possible without factoring in cost in any way (default false, new from 5.4)
  9. Two integer parameters indicating how much we are willing to spend to make the combat one round shorter, one for ronin and one for aftercore (to allow for different playstyle in the different cases) (defaults to 5 and 50 respectively, new from r13)
  10. A relay script relay_WHAM_dontuse that can be used to finetune the items and skills used by WHAM. Explanations on how to use it is shown when run. Put it in the /relay folder and run from the drop down in the relay browser. Requires Jason's htmlform in order to function (linked above).

In order to change them use commands like this in the CLI:
zlib WHAM_round_limit = <wanted number>
zlib WHAM_hitchance = <wanted fraction>
zlib WHAM_maxround = <wanted number>
zlib WHAM_AlwaysContinue = true or false
zlib WHAM_noitemsplease = true or false
zlib WHAM_safetymargin = <wanted number>
zlib WHAM_UseSeaLasso = true or false
zlib WHAM_killit = true or false
zlib WHAM_roundcost_aftercore= <wanted number>
zlib WHAM_roundcost_ronin = <wanted number>

Since these variables are set upon first execution it is advisable to run the script from the script-menu once before entering combat if you want to change them. If you do so, you can abort at the first pop-up (or set verbosity to 10 before the first fight you use the script in).

Version History
1.0: Initial public release
1.1: Change all printouts to WHAM, Lower the verbosity requirement for printing useful info to 3
1.2: Add has_happened() to work around happened() being off by one turn if SmartStasis ended the fight before we got there
1.3: Remove has_happened and use round > maxround instead.
Make sure the script aborts if you acquire temporary amnesia.
Make sure we don't automate queued skills longer than the user specified maxround (defaults to 50)
1.3.1: Add a parenthesis so the script won't crash when it shouldn't...
1.4: Set the unknown_ml for specific monsters in the Cyrpt in order to be able to handle them sanely in case of high
1.5: Make sure to reset the unknown_ml-value no matter how we exit the script (unless the user aborts manually)
You can always perform at least one attack/skill in a round, take advantage of this
Fix some cases of the script not exiting properly when a fight ended suddenly
Don't open the Bag O' Tricks since the script isn't aware that you can only use it once.
1.6: Update to work with new version of BatBrain. Also fix some silly return values.
Small adjustments for Avatar of Boris
1.7: Don't use attack if an Avatar of Boris, fix error in OK().
1.8: Yet another adaptation to Batbrain changing
Start re-implementing HP/MP-restoring options
1.9: Add some extra debug-printouts at verbosity 9
Add a new zlib-variable WHAM_AlwaysContinue, default to false, that will try and execute a 5-skill combo even if it
won't kill the monster
Modify the useage of Broadside and Entangling Noodles as well as Intimidating Bellow to make them slightly less wasteful
1.9.5: Fix the modifications for Broadside and Intimidating Bellow
1.9.6: Don't try to use Mighty Axing as an attack-skill if we have temporary amnesia
2.0: Refactor code to use BatBrain predictive abilities and thereby also to use items and gain an enormous speed boost (and
also allow the script to plan 25-shots of monsters)
Banish some foes in Boris-runs if we can, please suggest more potential banishes.
Currently banishes: A.M.C Gremlin, Flaming Troll, Procrastination Giant, Sabre-Toothed Goat, Senile Lihc and Slick Lihc.
2.0.1: Fix some small things, mainly with printouts
2.0.2: Don't use Trusty-specific skills if you're not wielding Trusty
2.0.3: Add missing ) and modify the attack-repeat-macro for a potential bug-fix
2.1: Update to be up to date with latest SS also don't enqueue items as skills, it won't work.
2.1.1: Add missing macro()-call from the SS-function
2.2: Fix bug with using more items than we have (hopefully)
2.3: Fix bug with failing to enqueue some things due to the script (and thus BatBrain) being out of sync with KoL
2.4: Fix some bugs with attacking and hitchances
2.5: Don't throw tower items at monsters (requires zlib version r36 or higher)
Fix bug for banishing monsters in Boris-core
Add logic to handle Bugbear-hunting and special killing
2.6: Resolve infinite loop bug at low MP as well as crashing while trying to delevel
Set guestimates for unknown_ml for the new bugbear monsters
2.7: Fix some Temporary Amnesia related bugs (due to not rebuilding options during a fight)
Fix bug where the script would really only saucesplash if you couldn't...
2.8: Readd the WHAM_AlwaysContinue option as a way to tell if the script should try to fight as best as it can despite the odds
Remove will_attack() since attack is considered among the other options anyway and the hitchance is taken into account when setting up options
Significantly improve stunning logic
Create the quit()-function to collect all exiting into one place
Rudimentary handling of the Operation Patriot Shield
2.8.1: Don't double-enqueue the stunning action
2.8.2: Fix olfactioning of bugbear monsters
Fix some errors with predictions
Fix horrible bug that would make SC and TT attack skills be ok only if you were wearing Trusty...
Start reworking the predictions to soon be able to use MP/HP restorers
2.8.3: Don't use PADL phones or comunication windchimes against trendy bugbear chefs

2.9: Don't olfact bugberas if we don't need more of that type
Recalculate the killer option if we enqueue a stun
Exit correctly if we banish a clingy pirate
3.0: Don't use pool torpedoes unless under water
Try to use another item if possible if we have funkslinging to take better advantage of that skill
Fix generation of debug files
3.0.1: Only use the gnomitronic thingamabob if it can kill the monster
3.0.5: Include the stun even if we are going to saucesplash
Goodfella contracts only work with a Penguin Goodfella active
3.0.6: Lower some verbosities for better feedback at verbosity 3 when aborting
Fix bug where the script thought it was enqueueing a stun while it in fact wasn't
3.1: Adapt script a bit for changes in BatBrain 1.24
Due to popular demand, add option to skip items and rely only on skills
3.1.1: Tighten up some code
Fix bug with WHAM_noitemsplease caused by extra semi-colon
3.1.2: Fix another bug with WHAM_noitemsplease. Stupid thing...
Also fix a bug with items being used when they shouldn't regardless of the setting.
3.2: Forbid reusage of items and skills that can only be used once, in case Batbrain for some reason doesn't
Don't stasis in the basement
Add support for users to exclude items or skills based on their own wish via the relay_WHAM_dontuse-script
Don't use Imp Airs and Bus Passes if the steel organ quest isn't finished

3.3: Remove cludge to reset your hitchance for debug printing purposes by overloading allMyOptions instead
Increase the hitchance limit by 0.25 when fighting Dr. Awkward sice he makes you fumble
Make sure we abort if the unknown_ml-value is set to 0 (as is intended)
Fix bug with dont_use-items where it never used an item you accepted usage of above a certain limit
Redefine WHAM_maxround as number of turns to use after SS has finished

Refactor some code
3.3.1: Fix stupid compile error
3.4 Make sure as many places as possible are under the control of dont_use and WHAM_noitemsplease
Fix bug that prevented correct usage of once per battle items and skills. Thanks to all that helped with the debugging!

3.5 Add support for Smash&Graagh
3.6 Modify the script some for bear-skills and zombies
Also, don't reuse once-items if we enqueue an item first

3.6.1: Don't smash for things that cannot be pickpocketed
3.7: Fix bug with Smash & Graaagh
Add WHAM_happymediumglow setting to control the happy medium siphoning skill
Attempt to allow for multi-usable items to be used more times than the amount of item we have

3.7.1: Fix happy medium detection
3.7.2: Fix for mafia updating Basement monster names
3.8: Update to account for Mafia removing articles from some monster names
Transfer Stasis and Custom actions over to WHAM from SmartStasis to bring them under the control of WHAM_dontuse

3.8.1: Fix for Repeating of bearskill during stasis
Fix for repeating once/battle options as stasis options
Fix for not using olfaction as a custom options
Merge special actions and custom options now that they are in the same script

Gather all pickpocket actions in the same place
3.9: Allow once per battle actions as stasis options with new innovative code to handle the stasis loop
Fix bug with Consume Burrowgrub which can be used three times and no more per battle

3.9.1: Fix multiusing of chefstaffs
3.9.2: Stupid regexp...
3.9.3: Fix pirate book not being used
Fix, hopefully, the last stasis-issues
4.0: Limit stasising with skills to the amount of turns of it we can actually cast
Limit Squeeze Stress Ball to five times per day and fix detection of chef-staff jiggling

4.1: Times happened should include performed actions as well as enqueued ones.
Infect the opponent if the next skill is Plague Claws and we have not already infected
Add WHAM_safetymargin setting to control any extra safety margin (in rounds) you may want for the stasising

Do not use burrowgrub more than three times per day
4.1.1: Add WHAM_safetymargin to one more place
4.1.2: Modify the usage of WHAM_safetymargin slightly
Forbid usage of Richard's Hobopolis skills due to a KoL-bug causing infite loops

4.2: Update to be in line with the recent SmartStasis release
Fix a burrowgrub bug
4.2.1: Fix bug where the script would ignore your WHAM_AlwaysContinue setting.
4.3: Do not use combat items worth more than your autoBuyPriceLimit
Make the attacking part of the script adhere to WHAM_safetymargin as well and not just the stasising part
4.3.1: Consider reusable expensive items as ok even if they are above autoBuyPriceLimit
4.3.2: Use duskwalker syringes against oil-monsters
4.3.3: Correctly insert infectious bite before plague claws
4.3.4: Only infect if we can survive the onslaught afterwards
4.3.5: Fix bugs with incorrect checks in ok()
Correctly abort for unknown monsters if your unknown_ml is 0
4.3.6: Update to align with SmartStasis 3.17
Raise the verbosity for the chefstaff debug printout to 8

4.3.7: Fix stuff not being as stuffy as they should be
4.4: Fix potentially severe miss-counting bug in the stasis-portion
4.5: SS 3.18, BB 1.31.1 compatibility fixes
4.6: Start separating SS from WHAM again
Fix some bugs with Summon Burrowgrub and the Haiku Katana

4.6.1: FIx the rest of the Haiku Katana skills as well
4.7: Adapt for Jarlsberg
Refactor some code
Fix bug (hopefully) with under-stunning due to overly optimistic spells

4.7.1: Fix stun-code to work with all elements, not just those with a colour.
Do not return the gnomitronic thingamabob if you cannot use it
4.7.2: Fix version numbering

4.8: Add workaround for attack_option going blank if called after a stun_option has been enqueued
4.8.1: Don't use duskwalker syringes if it'll kill us

4.8.2: Fix detection of don't-use-maps if the new format is being used
Fix jarlsberg jiggling of limited staffs, also add banishing for Jarlsberg
Don't loop eternally when verbosity > 9 and a valid combat strategy is unable to be found

4.9: Update to be on par with the new BatBrain
Fix some small issues with the ok()-function
Don't stun with 1-round stunners unless we have funkslinging and is stunning for an item

5.0: Fix stun-estimation to correctly account for monster resistances
5.1: Modify the usage of Staff of the All-Steak, Staff of the Staff of life and start using the cream staff to olfact monsters in ftf_olfact
[SUB]5.2: Don't abort just because BatBrian says the fight is over, execute the plan instead.[/SUB]
5.3: Remove fix for endscombat now that BatBrain allows up to three actions after an endscombat flag has been set
If we plan to saucesplash don't bother finding other options first; significant speed boost
You can only jiggle once per combat
Add zlib setting WHAM_UseSeaLasso to toggle use of the Sea Lasso

5.4: Make use of Mafia's seaLasso-tracking to decide when to stop throwing sea lassos
Add option to toggle speed to kill as the most important factor (will ignore any savings that a "smarter" attack method may have), WHAM_killit, default false
Don't get stuck in endless loops for deleveling, also make sure to actually perform the deleveling decided upon

5.5: Fix bug where the script would abort due to no actions found after BatBrain sets endscombat to true
5.6: Try to not fire the yellow ray unless we actually want the drops
Force WHAM_killit to true if we are in Fernswarthy's Basement
Add code to handle automating Yog-Urt and Jigguwatt
Move to SVN for update

r8: Don't try to stasis for so long that we cannot afford to kill the monster
r9: Fix to_int-problem for the new stasis check

r10: Matchers need to be found before being interacted with.
r11: Add zlib as a dependency to get it automatically installed

r13: Attempt to stasis with attack if we can hit, have a chance to crit and have one of the weapons for the Gladiator path equipped
Skip custom options in our various _option functions since BatBrain will allow them in opts soon
Add two new zlib-settings that control how much we are willing to pay to save a combat round, WHAM_roundcost_aftercore and WHAM_roundcost_ronin.
Also, add that value to the stasis-property so that the higher roundcost-value we have, the more valuable an action need to be to be used in stasis
Also, also, skip funkslinging if we either cannot find a second item to sling or said roundcost value is high enough that it is deemed unprofitable

13-06-28:Specifically disallow useage of frosty's iceball until it can be figured out why it keeps using it
13-06-27:Use the special skills in the Suburbs of Dis.
Try to handle the special bosses in the Suburbs areas
13-06-29:Attempt to abort stasising when we learn the last skill for the gladiator weapons, will still try to stasis even if you already know all skills
Only do Gladiator training if the required skills are not known yet
13-07-01:Fix WHAM_round to actually add the wanted thing and not just bulid an ever larger string and fix some to_int problems
13-07-05:Fix warnings for incorrect typed constants
Move removing of custom options to ok()
Make the learning of Gladiator skills better by using Mafia's tracking
Minor code refactoring for better readability
13-08-19:Fix BatBrain breakage
13-08-20:Always attempt to stun if my_location().kisses > 1
13-08-21:Fix removal of items for notiemsplease
Use BatBrain's new custom_action-function
13-08-22:Fix item removal fully by reverting to the really old method...
Print items when debug printing, but mark them red since they are disallowed
13-08-25:Try to blacklist KOHLS-combat items
13-09-03:Attempt to abort when we tame a sea horse
13-10-22:Add basic handling of Procedurally Generated Skeletons as well as Video Game bosses.
Don't use Noodles to stun with the revamped classes. It won't work.
13-11-09:Try to steal accordions if we can. RFemove more classes from noodling.
13-11-10:Fix steal accordion and remove most of the special handling for procedural skeletons
13-11-21:Throw Pocket Crumbs at opponents because why not?
13-11-28:WHen using Drunkula's Wineglass anything but attack is futile
13-11-29:Remove code for saucesplashing as that is no longer a thing
Entangling Noodles are only useful for Pastamancers, adapt stunning logic for the new class specific stun skills
Last edited:


I firmly believe in judging a script by the cleverness of its name, so I am highly looking forward to trying this one out.


New member
I willingly admit to having waited a couple of days longer than strictly necessary to post this because I wanted to come up with a suitable acronym... :)


New member
As a first general recommendation, I suggest you to remove the notify:

[2836] Fernswarthy's Basement (Level 226)
Encounter: 91 Bottles of Beer on a Golem
Round 0: one2three loses initiative!
Round 1: n bottles of beer on a golem takes 1 damage.
Round 1: n bottles of beer on a golem takes 3 damage.
Round 1: n bottles of beer on a golem takes 5 damage.
You lose 668 hit points
Sending kmail to Winterbay...
Redirected to a fight page.
You're on your own, partner.
Click here to continue in the relay browser.

Else, I'm now taking a look at it


New member
As a first general recommendation, I suggest you to remove the notify:
Else, I'm now taking a look at it

Hmm... I was under the impression that would only fire if you ranit from the script-menu. I appear to have been wrong. I shall rectify that :)

Edit: Also, I should perhaps note somewhere that "n bottles of beer on a golem" is one of the monsters the script will have a hard time with due to the skill blocking properties of it.
Last edited:


Just tried this. Thank you. Some message that flashed by on the screen referred to "SpamAttack" when I would have expected it to say "WHAM". I'm not sure what the WHAM_round_limit means in a practical sense but I had to raise it before WHAM was willing to run the fight. It stopped several times and told me it couldn't do what I wanted and suggested I run the combat manually and rerun with a higher verbosity. I'm not sure I understood everything but with the higher verbosity it told me what attacks would be best so that I could perform those manually. If that is true then it would be easier on the user if the information appeared, before the script stopped, with normal verbosity (3). Then I could just fight the good fight. The script seemed to have great difficulty when I was Beaten Up. It would consistently stop all automation in this case.

My primary reason to use it is as part of automation. With a multi-skilled character I suspect using it will be easier than tweaking my CCS every time I ascend. With that vision in mind, as long as it can complete the combat I don't care how long it takes. Indeed, if I cannot defeat the monster in 30 rounds then the logic that sent me to fight that monster needs to be reassessed. But in a perfect world I would want WHAM to never stop or abort automation unless it was as certain as it could be that the character would not survive. That may be the case now with WHAM_round_limit set high enough or there may be a feature request implied in that.

In any event just having something that tells me Saucestorm will be better than Lunging Thrust Smack for the current circumstances is fun. Thanks.


New member
Currently that information is at verbosity 7 which may be a bit too high. I've set it to 3 in my local copy, which might be better since it is rather vital information in that case.
The WHAM_round_limit is for when you're a muscle or mysticallity class. It controls how many rounds it will consider just attacking for (without you getting killed of course) instead of going over and try with skills. One thing I'd like to do is manage to get attack in as a potential thing to use together with your skills.
The script will halt if you cannot kill the monster, without getting killed, with your attack before WHAM_round_limit or in five rounds with skills.

There is a small problem at the moment where the stun from Noodles from SS isn't taken into account in the later consideration which I'm not really sure why (so you could in fact survive 4 rounds instead of 2 but for some reason the script doesn't see this.


I'm guessing WHAM doesn't realize SS has already banished the monster?

[1251] F'c'le
Encounter: clingy pirate
Strategy: C:\KoLMafia\dist\ccs\CafeBoob.ccs [default]
Round 0: cafeboob loses initiative!
You lose 16 hit points
WHAM: Running SmartStasis
Round 1: cafeboob executes a macro!
Round 1: cafeboob uses the cocktail napkin!
WHAM: Starting evaluation and performing of attack
WHAM: Failed to enqueue Lunging Thrust-Smack. Aborting to let you figure this out.
You're on your own, partner.

At this point I had already finished the fight. Only a concern because it stops automation.


New member
Yes and no. It should recognize all autostops but batbrain has a bug where that doesn't work (it sets the turn number incorrectly so the detection won't work).


Yes and no. It should recognize all autostops but batbrain has a bug where that doesn't work (it sets the turn number incorrectly so the detection won't work).

To confirm then, if I actually understood what happened ;-) I would report this as a BatBrain 'error'? I infer, however that BatBrain (zarqon) already knows the error exists so my response is to be patient.


New member
I've reported it already (i.e. the last post in the BatBrain thread currently where I had the exact same problem as you did and was confused because the code I had set up should've handled it...).


New member
Version 1.2 uploaded with a fix that should make the script successfully detect if the fight ended in a sneaky way and not abort automation when that happens. Untested, but the theory is sound and the basis for it is tested :)


Version 1.2 uploaded with a fix that should make the script successfully detect if the fight ended in a sneaky way and not abort automation when that happens. Untested, but the theory is sound and the basis for it is tested :)

FWIW, I saw this abort two or three times yesterday, with the previous version, and none today with the new version so my experience supports the "It is Fixed" hypothesis.


New member
Version 1.3 has been released which includes some fixes for fights aborting incorrectly (more specifically free runaways) as well as detection of temporary amnesia if you are fighting with skills.

Edit: Updated to 1.3.1 since I forgot a parenthesis which didn't show up until after the script was run in a fight (it verified just fine).
Last edited:


New member
[334] Defiled Cranny
Encounter: Death Rattlin'
Encounter: swarm of ghuol whelps
Strategy: /home/fit/.kolmafia/ccs/default.ccs [default]
Round 0: morgad loses initiative!
WHAM: Running SmartStasis
WHAM: Starting evaluation and performing of attack
The string "Suckerpunch" is not an integer; returning 0 (WHAM.ash, line 479)
The string "Entangling Noodles" is not an integer; returning 0 (WHAM.ash, line 479)
The string "Disco Dance of Doom" is not an integer; returning 0 (WHAM.ash, line 479)
The string "Disco Dance II: Electric Boogaloo" is not an integer; returning 0 (WHAM.ash, line 479)
The string "Disco Face Stab" is not an integer; returning 0 (WHAM.ash, line 479)
The string "Disco Eye-Poke" does not look like an integer; returning 0 (WHAM.ash, line 479)
The string "Saucegeyser" is not an integer; returning 0 (WHAM.ash, line 479)
Round 1: morgad executes a macro!
KoLmafia thinks it is round 2 but KoL thinks it is round 1
WHAM: Unable to determine a valid combat strategy. For your benefit here are the numbers for you combat skills.
WHAM: Wave of Sauce 64.2 potential damage.
WHAM: Moxious Maneuver 1.1448001 potential damage.
WHAM: Basic attack 6.7344637 potential damage with a hitchance of 8.795455%.
WHAM: You now have the knowlegde needed to go forward and be victorious
You're on your own, partner.
Click here to continue in the relay browser.

in the relay browser te stats are showing as -
[/code]You're fighting a swarm of ghuol whelps
HP: 0, Atk: 0, Def: 0, Type: undead[/code]

Wham problem, or somewhere upstream?

best regards


I assume he means all the "the string 'foo' is not an integer" messages?
Last edited:


Active member
Possible... that just looks like WHAM had a major datafile bork. If it keeps happening, I'd suggest deleting your batfactors.txt file and letting it get a new one, if you haven't changed it yourself. If you have, knock it off... or at least, knock off editing it with an editor that screws up tabs. :)

But WHAM not being able to calculate which of the available commands were best able to complete because it had 0/0/0 monster stats would be a mafia datafile thing, not a WHAM issue.


New member
Yeah, ghoul whelps have no stats in Mafia and are thus controlled by the zlib-setting unknown_ml, setting that too high may lead to unexpected results at lower levels like this. I usually have mine somewhere between 120 and 200 depending on where in an ascension I am.

When it comes to the "not an integer"-part it does appear like a broken data-file. I would suggest starting by deleting (or renaming) your batfactors.txt and see if that helps. I've had no such problems today at least and line 479 is where the script is excising the skill-ID from batfactors.


New member
Thanks to all for the suggestions.
I have never intentionally touched the data files - but have now deleted batfactors.txt (dated 2012-01-16 19:41) . Will know if it works in 5 days :)