View Full Version : Destroy All Monsters
Destroy All Monsters 0.4.2 beta
This script is designed to fight monsters regardless of their type or your character's skills. If you want a script that can easily switch between killing huge ghouls and Feast of Boris monsters, then you've found it! It knows when monsters can be out-moxied and when to shieldbutt or cast spells.
The emphasis is on flexibility and speed of execution. There is already an excellent script that determines the optimal combination of spells to cast (http://kolmafia.us/showthread.php?5234-Spam-attack-and-save-servers&p=58624&viewfull=1#post58624), but it was too darn slow if you have all the skills in the game so I began work on this. This script is less optimal, but still reasonably smart.
I know that a lot of people expect me to produce fully realized and fool proof scripts. This is not one of those. This script is more of the "throw stuff against a wall and hope it sticks" variety. It is very solidly in beta and I appreciate constructive criticism from anyone who can help to make this script better. I don't expect this script to be perfect, but I do hope it becomes better.
This script makes heavy use of BatBrain. I'm not really interested in improving it in ways that move away from BatBrain. A secondary purpose of my writing this was to figure out how to make maximal use of BatBrain's power, so if I miss a BatBrain trick, please point it out and help me improve this script.
Please notice that the script starts out by calling SmartStasis. SmartStasis does many clever and important things. After that it will announce when DestroyAllMonsters attempts to kill the monster. Anything disagreeable that happens before this script announces "DestroyAllMonsters starts now!" is probably a SmartStasis bug so report it in that thread, not here.
This script requires the user to download the latest versions of the following scripts to the KoLmafia /script directory (http://wiki.kolmafia.us/index.php?title=Mafia_directories). If you dislike clutter, you can create a subdirectory called /automation and put all four scripts in that directory. KoLmafia will automatically detect scripts in subdirectories of the /script directory.
Zlib (http://kolmafia.us/showthread.php?2072-ZLib-Zarqon-s-useful-function-library)
BatBrain (http://kolmafia.us/showthread.php?6445-BatBrain-a-central-nervous-system-for-consult-scripts)
SmartStasis (http://kolmafia.us/showthread.php?1715-SmartStasis-a-complex-script-for-a-simple-CCS)
DestroyAllMonsters - Download Link Below
Then you need to set your custom combat action to "custom combat script" and create a custom combat script that contains only the following:
[ default ]
consult DestroyAllMonsters.ash
This post is reserved for future use.
Winterbay
11-10-2011, 07:07 AM
Nice good to have a thread in which to discuss this.
I will most likely still use my own spamattack-script while in HC runs but in aftercore it is, as you say, way too slow taking 2-3 minutes per fight :)
Winterbay
11-10-2011, 11:22 AM
Anythign I can do to help debug this one?
Request 2 of 183 (The Sea: The Wreck of the Edgar Fitzsimmons) in progress...
[8523] The Wreck of the Edgar Fitzsimmons
Encounter: mine crab
Strategy: C:\Privat\Dropbox\Mafia\ccs\PM.ccs [default]
Round 0: winterbay wins initiative!
Profit per round: ActionProfitDamageOtherbase; Grouper Groupie (0μ)0μ--
Run SmartStasis! (0 profit to stasis with spectre scepter -- low)
Monster: Mine Crab, ATT: 710, DEF: 549, HP: 860, Value: 2709.5
You will die in 2306 rounds.
Your attack will kill the monster in 1 rounds.
DestroyAllMonsters starts now! (using attack -- killrounds: 1, dierounds: 2306)
Macro called on empty queue!
DestroyAllMonsters starts now! (using attack -- killrounds: 1, dierounds: 2306)
Macro called on empty queue!
Profit per round: ActionProfitDamageOtherbase; Grouper Groupie (0μ)0μ--
Run SmartStasis! (0 profit to stasis with spectre scepter -- low)
Monster: Mine Crab, ATT: 710, DEF: 549, HP: 860, Value: 2709.5
You will die in 2306 rounds.
Your attack will kill the monster in 1 rounds.
DestroyAllMonsters starts now! (using attack -- killrounds: 1, dierounds: 2306)
Macro called on empty queue!
DestroyAllMonsters starts now! (using attack -- killrounds: 1, dierounds: 2306)
Macro called on empty queue!
You're on your own, partner.
Click here to continue in the relay browser.
Edit:
I am currently a level 30 TT with a melee weapon equipped (even though it is a whip so not very powerful). Current stats are 2628/1617/1634 if that matters and verbosity is currenlty on 7.
Edit, edit: Having attacked the darn thing manually I noticed that, as it says up there, it was a mine crab. Batbrain does not like attacking mine crabs so when DAM tried to do that nothing happened since that option wasn't available. I think you need special handling for mine crabs if you are going to get that to work. I tend to funksling two toy soldiers to kill them.
ooh, I've been waiting for a thread for this for a while now. Are you going to add versioning?
I should probably add some nice vprint("",8) lines for debugging purposes. Right now all my debugging lines are in the code, but commented out in case I decide to enable them for some special purpose. Obviously that's less useful to people other than myself.
Edit, edit: Having attacked the darn thing manually I noticed that, as it says up there, it was a mine crab. Batbrain does not like attacking mine crabs so when DAM tried to do that nothing happened since that option wasn't available. I think you need special handling for mine crabs if you are going to get that to work. I tend to funksling two toy soldiers to kill them.
I see. BatBrain was trying to avert disaster. It will definitely require special handling to deal with them.
Are you going to add versioning?
Yup.
IceColdFever
11-14-2011, 05:41 PM
Not sure if this is by design, but Destroy All Monsters just used a yellow ray to kill a Knob Goblin Madam. Kind of a lame use of a yellow ray, but I guess if the purpose is to have DAM use the most likely method to successfully make a kill, then it completed it as it should. Just made me tear up a little when I realized my yellow ray was done for the day. :(
Request 2 of 49 (Knob: Cobb's Knob Harem) in progress...
[113] Cobb's Knob Harem
Encounter: Knob Goblin Madam
Strategy: ................\HC_Run.ccs [default]
Round 0: IceColdFever wins initiative!
BCC: We are using the hebo against the right monster.
Round 1: IceColdFever casts SUCKERPUNCH!
Round 2: knob goblin madam takes 1 damage.
Round 2: knob goblin madam drops 1 attack power.
Round 2: knob goblin madam drops 1 defense.
Round 2: Mike Wazowski's yellow eye gazes upon a pie cooling on a windowsill. The pie doesn't vanish, but the hobo who was trying to steal it does.
BCC: We are trying to use the HeBoulder, but this is not the right monster, so I'm attacking.
BCC: We are trying to use the HeBoulder, but this is not the right monster, so I'm attacking.
Run SmartStasis! (-1 profit to stasis with Suckerpunch -- low)
1/3 monsters drop goals here.
DestroyAllMonsters starts now! (using Point at your opponent -- killrounds: 1, dierounds: 188)
Round 2: IceColdFever executes a macro!
Round 2: IceColdFever casts POINT AT YOUR OPPONENT!
Round 3: Mike Wazowski swings his eyestalk around and unleashes a massive ray of yellow energy, completely disintegrating your opponent.
You acquire an effect: Everything Looks Yellow (duration: 150 Adventures)
Round 3: IceColdFever wins the fight!
After Battle: Mike Wazowski gives you an invigorating hot rock massage.
You gain 10 hit points
You gain 7 Mojo Points
You acquire an item: Knob Goblin perfume
You acquire an item: whalebone corset
You gain 2 Fortitude
You gain 4 Mysteriousness
You gain 5 Smarm
jwylot
11-14-2011, 09:06 PM
"BCC: We are using the hebo against the right monster" indicates that BCC's ascend script has decided to use the Hebo surely? DAM announces itself as taking over combat later.
Catch-22
11-14-2011, 11:05 PM
Still waiting for Zarqon to add Naughty Paper Shuriken support to BatBrain :P
New Version!
Download 0.2.2 from the first post.
Not sure if this is by design, but Destroy All Monsters just used a yellow ray to kill a Knob Goblin Madam. Kind of a lame use of a yellow ray, but I guess if the purpose is to have DAM use the most likely method to successfully make a kill, then it completed it as it should. Just made me tear up a little when I realized my yellow ray was done for the day. :(
Holy crap! I have never seen that before!! Why the heck did BatBrain think that was a good option for killing? Technically this is a BatBrain bug, but I'll make darn sure that it doesn't happen again!
Fortunately it is easy to fix. I'll just add "skill 7082" the list of skill that are not ok. First post updated with the new version.
Versioning has also been added in this build.
Theraze
11-15-2011, 02:43 PM
Any chance DAM can aim to finish fights in 25 rounds instead of 30? It's really depressing when it calculates out that, if their HP is exactly the right one, it can finish off the fight using spaghetti spear in 30 rounds. Problem is, with the 5% HP variance, it feels like more of these end in failure than success.
Run SmartStasis! (0 profit to stasis with spectre scepter -- low)
Monster: Procrastination Giant, ATT: 200, DEF: 180, HP: 225, Value: 931.1
You will die in 69 rounds.
Your attack will kill the monster in 3 rounds.
DestroyAllMonsters starts now! (using Spaghetti Spear -- killrounds: 30, dierounds: 69)Fully brimstoned pastamancer is apparently just enough to barely kill procrastination giants.
Suppose that may actually be a BatBrain request, since DAM is just using maxround from BB. I'll think through how I can best request it in a way that's more modular. :) But since HP always has that 5% variance, if you ever calculate out that you'll have exactly enough to kill them, that's almost a 50% chance for failure.
I'd rather it always just assume the monster has that extra 5% hp.
Theraze
11-15-2011, 06:58 PM
True... if BB just put the extra 5% on the monster when it was initializing, that would take care of it. But if it's reading the current HP, how does it track that there's always the extra 5% over what mafia is reporting?
Catch-22
11-15-2011, 11:10 PM
True... if BB just put the extra 5% on the monster when it was initializing, that would take care of it. But if it's reading the current HP, how does it track that there's always the extra 5% over what mafia is reporting?
I guess on round 1 you'd do something like:
extra_hp = monster_hp(last_monster())*0.05;
then add extra_hp to each calculation involving HP.
Any chance DAM can aim to finish fights in 25 rounds instead of 30? It's really depressing when it calculates out that, if their HP is exactly the right one, it can finish off the fight using spaghetti spear in 30 rounds.
That sounds like a very good idea and not terribly hard to implement.
I guess on round 1 you'd do something like:
extra_hp = monster_hp(last_monster())*0.05;
then add extra_hp to each calculation involving HP.
That has definitely turned into a BatBrain discussion. That has little do with DAM, other than to discuss how to work around BatBrain's possible flaws. DAM does no HP calculation.
New Version!
Download 0.2.3 from the first post.
If a monster cannot be killed by round 25, abort and let the player deal with it.
Catch-22
11-16-2011, 01:04 AM
I'd say it's more of a discussion as to the way KoLmafia represents a monsters known HP than a discussion on shortcomings of BatBrain.
I've created a pessimistic monsters.txt file, which multiplies all known HP values by 1.05, see the attached file.
Bale, any chance we can get the maxround abort as a variable at the top of the script, instead of a hard-coded "maxround - 5"?
I'm going to be experimenting with my pessimistic monsters.txt and skip the current fix. We'll see how things go :)
Edit: So parts of this monsters.txt aren't formatted correctly on monsters lacking a Defense stat (due to my laziness), KoLmafia seems smart enough to get around the formatting mistakes. I'll update this when I figure out a better way to edit the file en masse and post it again if anyone's interested.
lostcalpolydude
11-16-2011, 03:23 AM
The 1.05 variance is capped at 5 HP I think. Can't really check from my phone.
Bale, any chance we can get the maxround abort as a variable at the top of the script, instead of a hard-coded "maxround - 5"?
How would you want that expressed, considering that not every fight is limited to 30 rounds? Several monsters let you go 50 rounds. Should the variable be failsafeRounds?
New Version!
Download 0.3.0 from the first post.
I only changed a few lines of code, but I believe it is a fundamental improvement in DAM's effectiveness. I hope that I'm not wrong.
First of all, I discarded use of the enqueueSafe() function. I no longer use the safeKill item, although it is still being reported. Now all monsters are killed with the enqueueDanger() function.
Next, I changed the sorting algorithm for opts. All attack skills are sorted according to this shockingly obvious algorithm:
int meatval(advevent a, int stun, float mdpr) {
int rnd = kill_rounds(a);
int cost = rnd * (a.mp * meatpermp + a.meat);
if(rnd> stun)
cost+= (rnd - stun) * mdpr * meatperhp;
return cost;
}
Honestly I don't know why I didn't just do that in the first place! It's so bloody obvious! It simply figures out how much mp an attack will cost you and how much damage you will receive. It then multiplies that number by the rounds that it will take to kill the monster with that attack. What could be simpler?
Theraze
11-16-2011, 03:49 PM
Unfortunately, DAM 0.3 is failing to attack Procrastination Giants at all now...
Run SmartStasis! (0 profit to stasis with spectre scepter -- low)
Monster: Procrastination Giant, ATT: 140, DEF: 126, HP: 165, Value: 645.87
You will die in 273 rounds.
Your attack will kill the monster in 1 rounds.
DestroyAllMonsters starts now! (using Spaghetti Spear -- killrounds: 22, dierounds: 273)
DestroyAllMonsters is unable to figure out a useful combat strategyI end up just one-hitting it with a fearful fettucini or physical attack or weapon, or... well, I have a lot of things that work properly. But DAM wants to slowly use SS even though it's decided to consider it to be too dangerous.
Attacked, and killed in one hit:
You swat him on the knee, doing 240 (+10) damage. KERBLAM! WHAM! BAM! KAPOW! SMACK! ZAP! BARF! BONK! POW! SPLAT!
Winterbay
11-16-2011, 07:21 PM
It does not attack Procrastination giants because it does not want to attract the annoying effect it can give you if you do, and so it falls back to other options which are apparently no good at the moment. I guess it could iterate down to a skill that will work for a low cost, but 0 is probably going to be hard to beat... (and leads you into SpamAttack's territory of being slowed down by too many options).
Theraze
11-16-2011, 08:35 PM
0 is fine if it works. Using Weapon or Fettucini to one hit it would have been fine as well. Deciding that 0 is best value and then eliminating it and quitting is not optimal behaviour. :)
fewyn
11-16-2011, 08:38 PM
Wow, this sounds awesome! Going to give a whirl soon.
0 is fine if it works. Using Weapon or Fettucini to one hit it would have been fine as well. Deciding that 0 is best value and then eliminating it and quitting is not optimal behaviour. :)
Definitely not. Found the problem and I think I fixed it. Give the new build a whirl.
New Version!
Download 0.3.1 beta from the first post.
Edit: Let's try that again....
New Version!
Download 0.3.1.1 beta from the first post.
Catch-22
11-16-2011, 11:00 PM
How would you want that expressed, considering that not every fight is limited to 30 rounds? Several monsters let you go 50 rounds. Should the variable be failsafeRounds?
Yeah, basically so the hardcore testers like myself can set it to zero and entrust the full amount of rounds to DAM or for people who want to be a bit careful, you can allow a specified amount of rounds at the end. Maybe cushionRounds or safetyMargin, I dunno :)
Done. (Already added to my local copy.) Next time I update the version it will include a variable at the top called safetyMargin. I'm not making it a zlib variable, at least for now.
Catch-22
11-16-2011, 11:37 PM
Thanks Bale :)
So I did a bit of reading (http://kol.coldfront.net/thekolwiki/index.php/Monsters#Monster_Level_Variance) and as lostcalpolydude has said, the HP variance is sort of capped at 5.
Although "Variance has a triangular distribution (that is, you are much more likely to see 0 than -5 or 5)." seems to suggest that it should more often than not be a pretty good estimation of HP, which doesn't really explain Theraze's woes, perhaps she was just extraordinarily unlucky. If there's only a difference of 5hp at most, then you'd think it very unlikely that the battle would end exactly within that 1-4 HP remaining range. Perhaps DAM or BatBrain is just being too optimistic elsewhere and the ±5 HP is just a bit of a red herring.
In the example given, Spaghetti Spear (http://kol.coldfront.net/thekolwiki/index.php/Spaghetti_Spear) is being used, the damage formula for this is 2-3 damage (my guess is 50/50 chance to deal 2 or 3 damage), bonus damage capped at +5, for a total of 7-8 damage. Even if we assume that Procrastination Giant has exactly 225HP you'd still have to deal 8 damage as often or more often than 7 damage each time you use Spaghetti Spear, so perhaps it's more that Theraze's troubles were the cause of optimistic damage prediction as opposed to monster HP variance.
Theraze
11-17-2011, 04:58 AM
Hmm... with DAM 0.3.1.1 it doesn't think it can finish the combat, and just hangs instead of aborting.
Run SmartStasis! (-91 profit to stasis with seal tooth -- low)
Monster: Pooltergeist, ATT: 20, DEF: 18, HP: 25, Value: 222.13
You will die in 2 rounds.
Your attack will kill the monster in 9 rounds.
DestroyAllMonsters starts now! (using Clobber -- killrounds: 3, dierounds: 2)
KoLmafia declares world peace.
You're on your own, partner.I one-hit them using my master-fist unarmed.
The lack of thinking attack is fine is a BatBrain bug. Hanging instead of aborting is a DAM bug.
Hmm... with DAM 0.3.1.1 it doesn't think it can finish the combat, and just hangs instead of aborting. Hanging instead of aborting is a DAM bug.
Yep. I've improved anti-infinite-looping protection.
New Version!
Download 0.3.1.2 beta from the first post.
safetyMargin is a configurable (and hopefully useful) variable near the top of the script. It is for Catch-22's personal enjoyment.
Hopefully fixed an infinite loop.
New Version!
Download 0.3.1.3 beta from the first post.
Shmart Shtuff.
Better noodling.
So much left to do regarding my recent abandonment of safe vs dangerous combats.
Plus I still have no good implementaton for deleveling. Anyone have any idea how deleveling should be implemented? It would make me happy if anyone had a good suggestion for that problem.
Winterbay
11-18-2011, 06:31 AM
I guess the delevelling question is dependent on if you want it to go as fast as possible, or as cheaply as possible and so on. Do you have any base assumption that you want to be there as a start someone can build on?
Do you have any base assumption that you want to be there as a start someone can build on?
Just that it should delevel if that will enable you to hit with your basic attack and it will cost fewer mp than using attack skills. Obviously mistletoe should be accounted for.
At least that is what I do when I'm running a bit more ML than I can handle as a moxie class. I suspect that softcore people never delevel since the ML they can run is insane.
Winterbay
11-18-2011, 07:51 AM
So, in a flow:
1) Calculate cost of killing with attack skill (without you getting spanked)
2) Calculate cost of delevelling to where you can hit the monster (also without you getting spanked)
3) Perform the cheapest option of the two
Not having looked intently at the current script I am guessing the first calculation is done somewhere already? That leaves doing the second step and then comparing it.
Should we use a short-list of delevelling skills/items or do we want to use all (which will slow down the calculation I guess)? I might take a look at it (I mean my spamattack is also lacking this functionality so...), if I find the time.
Not having looked intently at the current script I am guessing the first calculation is done somewhere already?
Nope. I don't do that calculation at all! :D
The wonder of BatBrain is that I don't have to do it! Okay, maybe that isn't something to be so proud about. Still, BatBrain has kept track of that so I can probably check adj.mp for the answer.
I've currently got an attempt at a function to delevel the enemy. It's called enqueuePlink(). I'm not proud at it, but it is in the script. It's very messy.
StDoodle
11-18-2011, 12:18 PM
The "to delevel or not to delevel" question was what eventually made me give up on writing a combat script back in the day, so good luck! :p
Winterbay
11-18-2011, 12:36 PM
The "to delevel or not to delevel" question was what eventually made me give up on writing a combat script back in the day, so good luck! :p
There's no problem with it. You just need to define your target audience first and all others that use it do so on their own risk :)
StDoodle
11-18-2011, 05:12 PM
Problem is, I had already defined my target audience as "people who want the script to run optimally." :p
Winterbay
11-18-2011, 05:40 PM
Well, yes. Then you would have a somewhat bigger problem :)
Crowther
11-18-2011, 09:35 PM
I had a couple problems yesterday, with yesterday's version.
The first involved Half-Eaten Brain. I was fighting zombie waltzers. Destroy chose to noodle, then spam stream of sauce. That worked great, except on two different occasions, I was hit with Half-Eaten Brain. Then stream of sauce stopped and attack was used instead. I couldn't hit and died quickly. I really should put an abort into my CCS after your script, but I think the script was still running. I think the macro was still running. I've got logs if that helps.
The second was with Quiet Healer. Stasis value was zero, Destroy took over and decided to sing until all rounds were used up. Obviously she's an odd monster (dierounds: 1260000).
All in all, this script (and batbrain) are really amazing. I hope someone can figure out a simple, nearly optimal deleveling scheme.
I've got logs if that helps.
Logs always help. "I think" makes me wonder.
The second was with Quiet Healer. Stasis value was zero, Destroy took over and decided to sing until all rounds were used up. Obviously she's an odd monster (dierounds: 1260000).
This is a BatBrain bug. I reported it to zarqon in his thread. You can fix it pretty easily. For some reason zarqon thought that the Quiet Healer never attacks. You can remove that mistake by changing line 565 of BatBrain.ash to this:
if ($monster[naughty sorority nurse] == m) return 0; // these monsters have no attack
Crowther
11-19-2011, 04:12 PM
Logs always help. "I think" makes me wonder.Ha! Yeah, just didn't want to clutter things up if it was my fault, like me not remembering the nurse fix. ;)
[449] Haunted Ballroom
Encounter: zombie waltzers
Strategy: /root/.kolmafia/ccs/Destroy.ccs [zombie walt]
Round 0: Crowther wins initiative!
Running ZLib version: r31 (current)
Running BatBrain version: 1.11 (current)
Running SmartStasis version: 3.7 (current)
Running Destroy All Monsters version: 0.3.1.2 (current)
Run SmartStasis! (-28 profit to stasis with Sing -- low)
1/4 monsters drop goals here.
This monster is the best source of goals (0.32)!
Round 1: Crowther executes a macro!
Round 1: Crowther tries to steal an item!
You lose 20 hit points
DestroyAllMonsters starts now! (using attack -- killrounds: 18, dierounds: 6)
Round 2: Crowther executes a macro!
Round 2: Crowther casts ENTANGLING NOODLES!
Round 3: Crowther casts STREAM OF SAUCE!
Round 4: Crowther casts STREAM OF SAUCE!
Round 5: Crowther casts STREAM OF SAUCE!
You lose 19 hit points
Round 6: Crowther casts STREAM OF SAUCE!
You lose 18 hit points
Round 7: Crowther attacks!
You lose 20 hit points
You acquire an effect: Half-Eaten Brain (duration: 10 Adventures)
Round 8: Crowther attacks!
You lose 19 hit points
Round 9: Crowther attacks!
You lose 18 hit points
DestroyAllMonsters starts now! (using attack -- killrounds: 18, dierounds: 0)
DestroyAllMonsters is unable to figure out a useful combat strategy
Health fell below 0. Auto-abort triggered.
[450] Haunted Ballroom
Encounter: zombie waltzers
Strategy: /root/.kolmafia/ccs/Destroy.ccs [zombie walt]
Round 0: Crowther wins initiative!
Running ZLib version: r31 (current)
Running BatBrain version: 1.11 (current)
Running SmartStasis version: 3.7 (current)
Running Destroy All Monsters version: 0.3.1.2 (current)
Run SmartStasis! (-28 profit to stasis with Sing -- low)
1/4 monsters drop goals here.
This monster is the best source of goals (0.32)!
Round 1: Crowther executes a macro!
Round 1: Crowther tries to steal an item!
You lose 21 hit points
DestroyAllMonsters starts now! (using attack -- killrounds: 18, dierounds: 7)
Round 2: Crowther executes a macro!
Round 2: Crowther casts ENTANGLING NOODLES!
Round 3: Crowther casts STREAM OF SAUCE!
Round 4: Crowther casts STREAM OF SAUCE!
Round 5: Crowther casts STREAM OF SAUCE!
You lose 19 hit points
Round 6: Crowther casts STREAM OF SAUCE!
You lose 21 hit points
You acquire an effect: Half-Eaten Brain (duration: 10 Adventures)
Round 7: Crowther attacks!
You lose 20 hit points
Round 8: Crowther attacks!
You lose 22 hit points
Round 9: Crowther attacks!
You lose 20 hit points
Round 10: Crowther attacks!
You lose 20 hit points
DestroyAllMonsters starts now! (using attack -- killrounds: 18, dierounds: 0)
DestroyAllMonsters is unable to figure out a useful combat strategy
Health fell below 0. Auto-abort triggered.
Theraze
11-19-2011, 04:44 PM
Actually, in both cases, the plan was for it to attack...
DestroyAllMonsters starts now! (using attack -- killrounds: 18, dierounds: 6)If that shouldn't have been the proper response, that gives an interesting question.
Winterbay
11-19-2011, 07:26 PM
Actually, in both cases, the plan was for it to attack...If that shouldn't have been the proper response, that gives an interesting question.
Which is odd, since it states that you will die in 6 rounds and kill the monster in 18. That certainly doesn't sound like a good idea to me...
Jar of Jam
11-20-2011, 12:41 AM
Script certainly likes to say one thing and then do another:
[521] Defiled Niche
Encounter: dirty old lihc
Strategy: C:\Program Files\KOLMafia\ccs\DestroyAllMonsters!.ccs [default]
Round 0: ezhuks wins initiative!
Run SmartStasis! (-1941 profit to stasis with attack -- low)
DestroyAllMonsters starts now! (using Spaghetti Spear -- killrounds: 11, dierounds: 2)
Round 1: ezhuks executes a macro!
Round 1: ezhuks casts CANNELLONI CANNON!
You lose 25 hit points
Round 2: ezhuks casts CANNELLONI CANNON!
Round 3: ezhuks wins the fight!
After Battle: Either way, your Evilometer beeps three times.
You gain 12 hit points
You gain 11 Mana Points
You gain 5 Fortitude
You gain 9 Enchantedness
You gain 3 Sarcasm
Actually, that information is more like "If it uses attack". It then decides not to do so since that would be stupid.
Winterbay
11-20-2011, 08:12 AM
Actually, that information is more like "If it uses attack". It then decides not to do so since that would be stupid.
Ahh, that makes more sense :)
I didn't look too closely at the code around that print-line...
I think Jam's point was
DestroyAllMonsters starts now! (using Spaghetti Spear -- killrounds: 11, dierounds: 2)
but it goes on to use CANNELLONI CANNON!
Jar of Jam
11-20-2011, 12:41 PM
I think Jam's point was
DestroyAllMonsters starts now! (using Spaghetti Spear -- killrounds: 11, dierounds: 2)
but it goes on to use CANNELLONI CANNON!
That was pretty much my point, yes :)
Also, does DAM ever take into consideration skills like Entangling Noodles ? I may have not been paying 100% attention, but I don't think I've seen it being used.
Actually, that information is more like "If it uses Spaghetti Spear". It then decides not to do so since that would be stupid.
Yes, it does consider using Entangling Noodles.
Donavin69
11-20-2011, 04:23 PM
I've been using Destroy-All-Monsters for about 10 days now, on all of my characters, for both in-run and aftercore. The only addition I would like to see is a check for the skill Feed, I've set my CCS up to check for it, and use it if I have it, but it's not the most efficient use. (I have to change CCS for low level bounties)
I did just find a new issue though....in Hobopolis, it thought that lasagna bandages was good enough:
36091] Hobopolis Town Square
Encounter: Hydrocephalic Judas, the Future of Hoboing
Strategy: C:\KoLmafia\ccs\test3.ccs [default]
Round 0: damuri wins initiative!
Run SmartStasis! (68 profit to stasis with Lasagna Bandages -- good enough)
Round 1: damuri executes a macro!
Round 1: damuri casts LASAGNA BANDAGES!
You gain 10 hit points
You lose 89 hit points
Round 2: damuri executes a macro!
Round 2: damuri casts LASAGNA BANDAGES!
You gain 13 hit points
You lose 91 hit points
.
.
.
Round 12: damuri casts LASAGNA BANDAGES!
You gain 15 hit points
You're on your own, partner.
Feed (http://kol.coldfront.net/thekolwiki/index.php/Feed) would be a good addition for SmartStasis. It certainly falls under that purview. Zarqon, what do you think?
The other problem that you point out is also SS related since it happens after "Run SmartStasis" and before "DestroyAllMonsters starts now!" (The script never made it to DAM in your example.) I wonder why it thought that there was so much advantage to Stasising a Hobo. What familiar, effects did you have that might have granted your HP/MP/drops per round?
Weatherboy
11-21-2011, 01:52 PM
Overkill much?
This monster is not your huckleberry.
Stasis loop complete.
SmartStasis complete.
DestroyAllMonsters starts now! (using love song of naughty innuendo, love song of naughty innuendo -- killrounds: 1, dierounds: 2617)
use 3759; call batround; if hpbelow 4; abort "BatBrain abort: Danger, Will Robinson"; endif;
sub batsub2; use 3759,3759; call batround; endsub; call batsub2; repeat hascombatitem 3759 && (!times 21); if hpbelow 4; abort "BatBrain abort: Danger, Will Robinson"; endif;
Executing macro: scrollwhendone; sub batround; endsub; use 3759; call batround; if hpbelow 4; abort "BatBrain abort: Danger, Will Robinson"; endif; sub batsub2; use 3759,3759; call batround; endsub; call batsub2; repeat hascombatitem 3759 && (!times 21); if hpbelow 4; abort "BatBrain abort: Danger, Will Robinson"; endif;
Round 5: weatherboy executes a macro!
Round 5: weatherboy uses the love song of naughty innuendo!
Round 6: white chocolate golem takes 982 damage.
+125 ML, mainstat 982
Donavin69
11-21-2011, 03:38 PM
What familiar, effects did you have that might have granted your HP/MP/drops per round?
This account is a Lvl 29 Pasta (fairly low skilled), using a simple Fairy
Muscle: 861 (647)
Mysticality: 1102 (833)
Moxie: 816 (613)
Equip: Straw Hat, Letterman Jacket, Boombox, Loathing Legion Hook, Bounty-hunting pants, Old soft Shoes, Wossname, Zinc Delta, Li'l Businessman kit
Effects: Empathy, Cantata, Jingle Jangle, and Phat loot
New Version!
Download 0.3.1.4 beta from the first post.
no longer claims that it will actually do something (since people took it too seriously)
Fixed killing of slimes at the Convention Hall Lobby to get their vials of slime!
Note to self: Someone complained in a mail that it won't use Chilled Monkey Brains to stun and injure monster for 0mp. Figure out how to make that seem good to this program.
Note to others: Please post your comments in this thread, not my PMs!
Theraze
11-24-2011, 03:54 AM
Problem with Chilled Monkey Brain is that it's a 50/50 stun. That means if you're using the stun to keep yourself alive, it's not as good as noodles or most guaranteed stuns...
Thanks. Not as awesome as my anonymous correspondent wanted me to believe. (I figure if he's too shy to post in the thread, he doesn't want me to broadcast his name? Maybe?)
zanmatoer
11-24-2011, 08:56 AM
Not shy, but thanks for your consideration!
Only reason I didn't post is because I realise this is a case that won't come up very often. Almost no-one gets Chilled monkey as it's after World punch AND the challenge path is now over. Anyway, the wiki (http://kol.coldfront.net/thekolwiki/index.php/Chilled_Monkey_Brain_Technique) doesn't think it's a 50/50 stun and neither does my testing. It's never failed to stun an enemy for me.
Assuming I'm not being an imbecile, shouldn't the code be similar to entangling noodles, except you know it's 1 round only?
Thanks!
Donavin69
11-24-2011, 01:45 PM
Its obviously not a problem with destroy all monsters, but I'm not sure where to comment on it:
Mafia is recognizing the FOB monsters as hobo's (in hobo town square)
I'm not sure if it should be something resolved in Mafia, or if I need to just modify all of my CCS to do something specific with the holiday monsters.
my ccs:
[ default ]
try to steal an item
consult DestroyAllMonsters.ash
[ hobo ]
attack with weapon
and my fight:
Request 131 of 395 (Hobopolis: Hobopolis Town Square) in progress...
[32468] Hobopolis Town Square
Encounter: Malevolent Tofurkey
Strategy: C:\KoLmafia\ccs\Bounty.ccs [hobo]
Round 0: pawn69 wins initiative!
Round 1: pawn69 executes a macro!
Round 1: pawn69 attacks!
You lose 8 hit points
You lose 153 hit points
Round 2: pawn69 attacks!
Round 3: malevolent tofurkey takes 1 damage.
You lose 142 hit points
Round 3: pawn69 attacks!
Round 4: malevolent tofurkey takes 1 damage.
.
.
.
Round 10: pawn69 attacks!
You lose 132 hit points
Round 11: pawn69 attacks!
Round 12: malevolent tofurkey takes 1 damage.
You lose 131 hit points
Using soft green whatever...
Beaten Up removed.
Winterbay
11-24-2011, 01:52 PM
I think the problem is that your "hobo" matches not only the monster "hobo" but also the area "hobopolis" which means that it will use that part as long as it thinks you are in that zone (which you obviously are with the FOB monsters). If you change [ hobo ] to [ Normal Hobo ] you should be fine I think.
Edit: Which of course means that you need a section for each elemental hobo as well if you don't want DAM to take care of those as well.
Donavin69
11-24-2011, 02:41 PM
I'll set that up, it also appears that Destroy-all couldn't figure out a way to kill the FOB monsters with an AT with few skills:
Liver of Steel
Torso Awaregness (HP)
CLEESH
Fashionably Late (HP)
Musk of the Moose (HP)
Sauce Contemplation (P)
Disco Power Nap (HP)
Superhuman Cocktailcrafting (HP)
Moxie of the Mariachi
The Moxious Madrigal
The Polka of Plenty
Fat Leon's Phat Loot Lyric
The Ode to Booze
The Sonata of Sneakiness
Carlweather's Cantata of Confrontation
Sing
Moxious Maneuver wasn't even considered (it works fine)
Theraze
11-24-2011, 04:10 PM
Ah... this is the part I was missing on why it wasn't a good continual choice:
Stuns for one round, first time only.So it works fine as a single stun, don't pick it as a continual attack though based on hoping for more stunning.
I was dying too frequently as a Pastamancer. It turns out that Entangling Noodles needed some tweaking. I tweaked it and stopped dying. :D
New Version!
Download 0.3.1.5 beta from the first post.
morgad
11-27-2011, 10:21 AM
Starting my annual crimbo basement run, and running autoBasement.ash (which I might have misconfigured)
lvl21 AT, basement level 51
Name: morgad
Class: Accordion Thief
Lv: 21
HP: 694 / 1,252
MP: 327 / 936
Mus: 978 (226), tnp = 374
Mys: 604 (227), tnp = 340
Mox: 583 (416), tnp = 691
Advs: 21
Meat: 10,723,449
Drunk: 18
> equipment
Hat: Hodgman's porkpie hat
Weapon: Brimstone Bludgeon
Off-hand: (none)
Shirt: astral shirt
Pants: Greatest American Pants
Acc. 1: fancy black tie
Acc. 2: V for Vivala mask
Acc. 3: navel ring of navel gazing
Pet: Baby Sandworm (16 lbs)
Item: plastic pumpkin bucket
> skills
Uncategorized
- CLEESH
- Liver of Steel
- Lunch Break
- Summon Crimbo Candy
- Transcendent Olfaction
- Vent Rage Gland
Seal Clubber
- Claws of the Walrus
- Double-Fisted Skull Smashing
- Eye of the Stoat
- Lunging Thrust-Smack
- Musk of the Moose
- Rage of the Reindeer
- Super-Advanced Meatsmithing
- Thrust-Smack
- Tongue of the Walrus
Turtle Tamer
- Amphibian Sympathy
- Astral Shell
- Empathy of the Newt
- Hero of the Half-Shell
- Shieldbutt
- Tao of the Terrapin
- Wisdom of the Elder Tortoises
Pastamancer
- Entangling Noodles
- Leash of Linguini
- Pastamastery
- Spirit of Ravioli
- Spirit of Rigatoni
Sauceror
- Advanced Saucecrafting
- Elemental Saucesphere
- Expert Panhandling
- Immaculate Seasoning
- Intrinsic Spiciness
- Saucegeyser
- Wave of Sauce
Disco Bandit
- Advanced Cocktailcrafting
- Ambidextrous Funkslinging
- Disco Dance II: Electric Boogaloo
- Disco Dance of Doom
- Disco Face Stab
- Disco Fever
- Disco Nap
- Disco Power Nap
- Kung Fu Hustler
- Mad Looting Skillz
- Nimble Fingers
- Overdeveloped Sense of Self Preservation
- Smooth Movement
- Superhuman Cocktailcrafting
Accordion Thief
- Aloysius' Antiphon of Aptitude
- Brawnee's Anthem of Absorption
- Carlweather's Cantata of Confrontation
- Cletus's Canticle of Celerity
- Fat Leon's Phat Loot Lyric
- Inigo's Incantation of Inspiration
- Jackasses' Symphony of Destruction
- Moxie of the Mariachi
- Sing
- Stevedave's Shanty of Superiority
- The Magical Mojomuscular Melody
- The Moxious Madrigal
- The Ode to Booze
- The Polka of Plenty
- The Power Ballad of the Arrowsmith
- The Psalm of Pointiness
- The Sonata of Sneakiness
- Ur-Kel's Aria of Annoyance
Conditional
- Moxious Maneuver
Mr. Skills
- Summon Alice's Army Cards
- Summon BRICKOs
- Summon Clip Art
- Summon Love Song
- Summon Party Favor
- Summon Stickers
- Summon Sugar Sheets
- Summon Tasteful Items
- The Smile of Mr. A.
Gnome Trainer
- Gnefarious Pickpocketing
- Powers of Observatiogn
- Torso Awaregness
> effects
0 of 3 AT buffs active.
Slippery Oiliness (5)
Omphaloskepsis (∞)
> modifiers
ML: +12
Enc: -5.00%
Init: +40.00%
Exp: +3.52
Meat: +42.00%
Item: +45.00%
[2093] Fernswarthy's Basement (Level 0)
Test: 0 current, 0 needed
You gain 471 Cheek
You gain a Moxie point!
> Basement level 51: Monster
custom outfit Damage
familiar Baby Sandworm (16 lbs)
> Restoring HP! Currently at 340 of 1110 HP, 356 of 525 MP, current meat: 10725069 ... Target HP = 1110.
equip pants Travoltan trousers
buy 1 Medicinal Herb's medicinal herbs for 95 each from Smacketeria
You acquire an item: Medicinal Herb's medicinal herbs
You spent 95 Meat
equip pants Greatest American Pants
use 1 Medicinal Herb's medicinal herbs
You gain 770 hit points
[2094] Fernswarthy's Basement (Level 0)
Encounter: 5-Dimensional Horror
Round 0: morgad wins initiative!
> Run SmartStasis! (0 profit to stasis with fat stacks of cash -- low)
Round 1: morgad executes a macro!
Round 1: morgad tries to steal an item!
Round 2: Paul rolls the plastic pumpkin bucket at it. It promptly trips over it and falls, taking 15 damage.
Round 2: 5-dimensional horror takes 15 damage.
> DestroyAllMonsters starts now! (using attack -- killrounds: 1, dierounds: 37000)
Round 2: morgad executes a macro!
Round 2: morgad attacks!
Round 3: morgad attacks!
Round 4: morgad attacks!
Round 5: Paul can't think of a nasty trick to pull, so settles for kicking it square in its most sensitive area -- that's right, its ego -- and does 16 damage.
Round 5: 5-dimensional horror takes 16 damage.
Round 5: morgad attacks!
Round 6: Paul ties its shoelaces together. It trips and takes 9 damage as it lands on its face.
Round 6: 5-dimensional horror takes 9 damage.
Round 6: morgad attacks!
Round 7: morgad attacks!
Round 8: Paul ties its shoelaces together. It trips and takes 16 damage as it lands on its face.
Round 8: 5-dimensional horror takes 16 damage.
You lose 29 hit points
Round 8: morgad attacks!
Round 9: morgad attacks!
Round 10: Paul can't think of a good trick to play on your opponent, and resorts to just hitting it with the plastic bucket. It's not very imaginative, but it deals 8 damage.
Round 10: 5-dimensional horror takes 8 damage.
Round 10: morgad attacks!
Round 11: Paul ties its shoelaces together. It trips and takes 13 damage as it lands on its face.
Round 11: 5-dimensional horror takes 13 damage.
Round 11: morgad attacks!
Round 12: Paul rolls the plastic pumpkin bucket at it. It gets its foot caught in it and falls over, sustaining 14 damage.
Round 12: 5-dimensional horror takes 14 damage.
Round 12: morgad attacks!
Round 13: morgad attacks!
Round 14: morgad attacks!
Round 15: Paul rolls the plastic pumpkin bucket at it. It gets its foot caught in it and falls over, sustaining 11 damage.
Round 15: 5-dimensional horror takes 11 damage.
Round 15: morgad attacks!
Round 16: morgad attacks!
Round 17: Paul rolls the plastic pumpkin bucket at it. It gets its foot caught in it and falls over, sustaining 9 damage.
Round 17: 5-dimensional horror takes 9 damage.
Round 17: morgad attacks!
Round 18: morgad attacks!
Round 19: morgad attacks!
Round 20: morgad attacks!
Round 21: Paul can't think of a nasty trick to pull, so settles for kicking it square in its most sensitive area -- that's right, its ego -- and does 11 damage.
Round 21: 5-dimensional horror takes 11 damage.
Round 21: morgad attacks!
Round 22: morgad attacks!
Round 23: Paul rolls the plastic pumpkin bucket at it. It promptly trips over it and falls, taking 12 damage.
Round 23: 5-dimensional horror takes 12 damage.
Round 23: morgad attacks!
Round 24: morgad attacks!
Round 25: morgad attacks!
> DestroyAllMonsters starts now! (using attack -- killrounds: 1, dierounds: 36034)
Round 26: morgad executes a macro!
Round 26: morgad attacks!
Round 27: morgad attacks!
Round 28: morgad attacks!
Round 29: morgad attacks!
Round 30: Paul rolls the plastic pumpkin bucket at it. It promptly trips over it and falls, taking 9 damage.
Round 30: 5-dimensional horror takes 9 damage.
Round 30: morgad attacks!
Round 31: morgad attacks!
Round 32: Paul rolls the plastic pumpkin bucket at it. It promptly trips over it and falls, taking 13 damage.
Round 32: 5-dimensional horror takes 13 damage.
Round 32: morgad attacks!
Round 33: Paul rolls the plastic pumpkin bucket at it. It gets its foot caught in it and falls over, sustaining 14 damage.
Round 33: 5-dimensional horror takes 14 damage.
Round 33: morgad attacks!
Round 34: morgad attacks!
You lose 24 hit points
Round 35: morgad attacks!
Round 36: morgad attacks!
Round 37: morgad attacks!
Round 38: morgad attacks!
Round 39: morgad attacks!
Round 40: Paul can't think of a nasty trick to pull, so settles for kicking it square in its most sensitive area -- that's right, its ego -- and does 11 damage.
Round 40: 5-dimensional horror takes 11 damage.
Round 40: morgad attacks!
Round 41: morgad attacks!
Round 42: Paul rolls the plastic pumpkin bucket at it. It gets its foot caught in it and falls over, sustaining 12 damage.
Round 42: 5-dimensional horror takes 12 damage.
Round 42: morgad attacks!
Round 43: Paul can't think of a good trick to play on your opponent, and resorts to just hitting it with the plastic bucket. It's not very imaginative, but it deals 15 damage.
Round 43: 5-dimensional horror takes 15 damage.
Round 43: morgad attacks!
Round 44: morgad attacks!
Round 45: morgad attacks!
Round 46: Paul ties its shoelaces together. It trips and takes 9 damage as it lands on its face.
Round 46: 5-dimensional horror takes 9 damage.
Round 46: morgad attacks!
Round 47: morgad attacks!
Round 48: morgad attacks!
Round 49: Paul rolls the plastic pumpkin bucket at it. It gets its foot caught in it and falls over, sustaining 9 damage.
Round 49: 5-dimensional horror takes 9 damage.
> Run SmartStasis! (0 profit to stasis with spectre scepter -- low)
> Run SmartStasis! (0 profit to stasis with spectre scepter -- low)
at this point I had a 'click to continue in relay browser' message. When I clicked this I got a corrupted relay browser display (main plane blank) and
Exception in thread "LocalRelayAgent3" java.lang.NullPointerException
at net.sourceforge.kolmafia.request.RelayRequest.pseu doResponse(RelayRequest.java:457)
at net.sourceforge.kolmafia.webui.RelayAgent.readServ erResponse(RelayAgent.java:418)
at net.sourceforge.kolmafia.webui.RelayAgent.performR elay(RelayAgent.java:154)
at net.sourceforge.kolmafia.webui.RelayAgent.run(Rela yAgent.java:131)
Exception in thread "LocalRelayAgent0" java.lang.NullPointerException
at net.sourceforge.kolmafia.request.RelayRequest.pseu doResponse(RelayRequest.java:457)
at net.sourceforge.kolmafia.webui.RelayAgent.readServ erResponse(RelayAgent.java:418)
at net.sourceforge.kolmafia.webui.RelayAgent.performR elay(RelayAgent.java:154)
at net.sourceforge.kolmafia.webui.RelayAgent.run(Rela yAgent.java:131)
so I restartd Mafia, changed my equipment and killed the hydra by hand
use 1 philter of phorce
You acquire an effect: Phorcefullness (duration: 5 Adventures)
equip hat big bad voodoo mask
equip weapon Staff of the Walk-In Freezer
equip off-hand Bag o' Tricks
equip shirt astral shirt
equip pants Greatest American Pants
equip acc1 navel ring of navel gazing
equip acc2 Ankh of Badahnkadh
equip acc3 stainless steel scarf
equip familiar little box of fireworks
[2094] Fernswarthy's Basement (Level 51)
Encounter: 5-Dimensional Horror
Round 0: morgad wins initiative!
Round 1: Paul produces a tubular red firecracker labeled M-24, lights the long fuse, and tosses it behind your opponent.
Adjusted combat item count: lawn dart
Adjusted combat item count: paint bomb
Adjusted combat item count: palm-frond fan (3)
Round 1: morgad casts ENTANGLING NOODLES!
Round 2: morgad casts SAUCEGEYSER!
Round 3: 5-dimensional horror takes 1454 damage.
Round 3: morgad wins the fight!
After Battle: Paul sets off a lovely little cluster rocket, and smiles broadly as it explodes.
After Battle: Paul leans against a cactus, produces a bottle of tequila, and drinks it. A few minutes later, he belches some murky fluid back into the bottle and hands it to you.
You acquire an item: agua de vida
You gain 32 Strongness
You gain 54 Mysteriousness
You gain 69 Sarcasm
should DaM gave been able to handle this, or did I screw up the autobasement settings?
best regards
Dave
Winterbay
11-27-2011, 10:54 AM
Isn't the n-dimensional horror immune to physical attacks? BatBrain returns 0 for attack on that monster so it's a bit confusing that DaM choose to attack.
This is a KoLmafia bug (http://kolmafia.us/showthread.php?6184-collapse-basement-monsters). (Lack of feature?) Mafia thought you were fighting a 5-dimensional horror, not an n-dimensional horror.
Despite having stats for basement monsters, mafia does not distinguish them so consult scripts will not work in the basement.
morgad
11-27-2011, 03:59 PM
Thanks for the answer Bale :)
I will just run the Basement manually instead
Dave
zarqon
11-27-2011, 05:13 PM
Yay you finally made your own DAM thread! :)
Your script choosing a yellow ray was not a BatBrain bug. The yellow ray kills monsters dead, and BatBrain accurately delivered that information to your script. Zombo's eye is likely to be preferred as well if it available, with no special handling for its usage limitations. It would not be useful for BatBrain to report other than the actual consequences of an action.
Re: deleveling. There are three reasons to delevel, so you'd probably also need three separate calculations: 1) You want to delevel a monster so it can't hit you, II) you want to delevel it so you can hit it, or c) you want to delevel it a little to reduce the overall cost of the combat if you can't one-shot or stun-kill it. I'd say the first -- also the easiest to implement -- happens more commonly, so even if you just add one out of three you'll be making people happy. I'd suggest making a calculation of the cost of the rounds a given action would take to delevel the monster to a safe point (fairly easy using the delevel parameter of m_dpr). From there all the calculations aren't too hard.
In case it helps, here's a little snippet from my fight.php override, which provides special macrofied links for deleveling skills (a is the advevent being displayed in the table):
res.append("<small><span style='color:gray' font-size:0.8em; font-weight:900>");
if (a.att != 0) {
int tillsafe;
if (monster_stat("att") > my_defstat() - 6) tillsafe = max(1,round((my_defstat() - monster_stat("att") - 6)/a.att));
if (tillsafe > 0) res.append("<form name=macro"+random(999999)+" style='display: inline' action=fight.php method=post><input type=hidden name=action value='macro'>"+
"<input type='hidden' name='macrotext' value='"+batround()+"sub main; "+a.id+"; call batround; endsub; call main; repeat !times "+(tillsafe-1)+"'><input type=image src='images/itemimages/nicesword.gif' border=0"+
" width=16 height=16 title='Delevel until safe: x"+tillsafe+" ("+rnum(m_dpr(a.att,0)-m_dpr(0,0))+" DPR)' onclick='return killforms(this);'></form>"+rnum(a.att)+" ");
else res.append("<img src='images/itemimages/nicesword.gif' title='"+rnum(m_dpr(a.att,0)-m_dpr(0,0))+" DPR.' border=0 height=16 width=16>"+rnum(a.att)+" ");
}
if (a.def != 0) {
int tillhit;
if (monster_stat("def") > buffed_hit_stat() - 6) tillhit = max(1,round((buffed_hit_stat() - monster_stat("def") - 6)/a.def));
if (tillhit > 0) res.append("<form name=macro"+random(999999)+" style='display: inline' action=fight.php method=post><input type=hidden name=action value='macro'>"+
"<input type='hidden' name='macrotext' value='"+batround()+"sub main; "+a.id+"; call batround; endsub; call main; repeat !times "+(tillhit-1)+"'><input type=image src='images/itemimages/whiteshield.gif' border=0"+
" width=16 height=16 title='Delevel until you can always hit: x"+tillhit+"' onclick='return killforms(this);'></form>"+rnum(a.def)+" ");
else res.append("<img src='images/itemimages/whiteshield.gif' title='+DPR goes here.' border=0 height=16 width=16>"+rnum(a.def)+" ");
}
res.append("</span></small>");
This is a KoLmafia bug (http://kolmafia.us/showthread.php?6184-collapse-basement-monsters)
Also this.
I'd suggest making a calculation of the cost of the rounds a given action would take to delevel the monster to a safe point (fairly easy using the delevel parameter of m_dpr). From there all the calculations aren't too hard.
Wait, what?! So you suggest testing multiples of the different deleveling skills until m_dpr() is safe? Or is there an easier way that I am completely missing?
zarqon
11-28-2011, 01:34 AM
I was thinking you'd make your own function with which to sort opts, which would contain (among other things) something like this:
roundsofpain = max(1,round((my_defstat() - monster_stat("att") - 6)/a.att)) - 1;
float accumulatedpain;
for i from 1 to roundsofpain accumulatedpain += m_dpr(a.att*i,0);
When foreaching over the sorted list afterwards, if accumulatedpain > my_stat("hp"), it's not a valid option. Likewise if it's more than the total damage taken from just using your best survivable attack skill.
Perhaps better would be to use enqueue() and to_profit() since those have a lot of stuff built in. Something like:
float delevelprof;
while (my_defstat() - monster_stat("att") > 6) {
delevelprof += to_profit(a);
enqueue(a);
}
reset_queue();
And that would be your total cost/profit of deleveling the monster until safe using that action, including everything that BB knows about -- fewer calculations needed afterwards that way. You'd need a few more conditions in the while loop but that's a start anyway.
Could you explain exactly how to_profit() works and what it returns. I don't really understand it. I believe that the concept is to turn an action into a meat value, but what does that mean?
zarqon
11-28-2011, 08:31 AM
It returns how profitable a given action is at this point in the combat (keeping in mind that "at this point" is at the end of the queue).
This includes stunning and blocking (25% chance of stunning a monster that normally deals 8 damage is a profit of 2 HP), meat cost, deleveling (the profit is the average HP you save by weakening the monster), mp and hp gain/cost, familiar actions, passive damage effects -- everything. It's along the same lines as what you posted in post #19, but much more thorough.
One caveat: to_profit() assesses the profitability of any action only for the rounds that the action is performed (in the event that you pass it a compound action like a disco combo). It is blind to any effects which outlast performing the action, since it cannot guess how many rounds the combat will last. So a multi-round stunner would not be seen as more profitable than a single-round stunner, likewise the profit of deleveling is simply the reduction in the monster's next attack (not the HP you save for the remainder of the combat). It does consider existing stuns however, so if your previous action was Noodles, a stunning action will not be seen as having any profit from its stun.
Thank you. That helps, a lot.
Donavin69
11-28-2011, 11:37 AM
I keep having the issue of SmartStasis using Lasagna Bandages until I get beaten up, but I'll post over in the SS thread on that.
The current issue I'm having is in the basement, DAM thinks that against a 5th Dimension horror (Physical resist) that attacking with my weapon should be good enough. I typically will use love songs against most of the basement monsters. Is there a way to automate the usage of love songs, or should I keep manually doing it?
Winterbay
11-28-2011, 11:48 AM
I keep having the issue of SmartStasis using Lasagna Bandages until I get beaten up, but I'll post over in the SS thread on that.
The current issue I'm having is in the basement, DAM thinks that against a 5th Dimension horror (Physical resist) that attacking with my weapon should be good enough. I typically will use love songs against most of the basement monsters. Is there a way to automate the usage of love songs, or should I keep manually doing it?
You can do a sepcific entry for the horror (or the entire basement should you be so inclined) in your CCS which says "use love song of ..., love song of ..." (replace ... with whatever love song you want to use).
zarqon
11-28-2011, 04:49 PM
It's only consult scripts that don't work with basement monsters. Regular CCSs work fine.
The "beaten up by hobos" issue is probably because BB doesn't know about elemental hobos' special attacks. This line has been in m_event() for quite a while:
// TODO: add elemental hobo special attacks
I suppose I could ask again: does anyone have accurate info on how much damage they do, and how often? I added completely approximated "close enough" numbers for the normal hobos because once I was farming the town square and kept getting beaten up, but I never went in any of the other zones and so I didn't add anything for them.
zarqon just released new versions of BatMan and SmartStasis. Naturally they completely break this script, but never fear...
New Version!
Download 0.3.2.0 beta from the first post.
Updated for compatibility with BatMan 1.12 and SmartStasis 3.8
Magus_Prime
11-30-2011, 12:58 PM
With the new versions of Batbrain, SmartStasis, and Destroy All Monsters I had two combats in the Castle where Destroy All Monsters gave up. One combat was a Goth Giant and the other was a Possibility Giant. Here is what happened:
Encounter: Possibility Giant
Strategy: K:\software\Kol\ccs\default.ccs [default]
Round 0: Arbos wins initiative!
Run SmartStasis! (-64 profit to stasis with Saucy Salve -- low)
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 15, dierounds: 6)
Round 1: Arbos executes a macro!
Round 1: Arbos casts ENTANGLING NOODLES!
Round 2: Arbos casts SAUCESTORM!
Round 3: possibility giant takes 59 damage.
You gain 11 hit points
You gain 3 Mana Points
You acquire an effect: Burning Ears (duration: 1 Adventure)
Round 3: Arbos casts SAUCESTORM!
Round 4: possibility giant takes 63 damage.
You gain 11 hit points
You gain 3 Mana Points
Round 4: Arbos casts STREAM OF SAUCE!
Round 5: possibility giant takes 28 damage.
You gain 3 hit points
You gain 1 Mana Point
You acquire an effect: Burning Hands (duration: 1 Adventure)
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 6, dierounds: 3)
DestroyAllMonsters is unable to figure out a useful combat strategy
Round 5: Arbos executes a macro!
KoLmafia thinks it is round 6 but KoL thinks it is round 5
You're on your own, partner.
Click here to continue in the relay browser.
I had plenty of mana and HP when Destroy All Monsters gave up and once in the relay browser I was able to one-shot the monster.
I tried to continue in the castle with zlib verbosity set to 8 but the problem did not reoccur.
I got it to reoccur in the Haunted Bedroom with zlib verbosity set to 9. Here is what happened:
[786] Haunted Bedroom
Encounter: One Nightstand
Encounter: animated nightstand
Round 0: Arbos wins initiative!
Running ZLib version: r32 (current)
1 MP costs 5.4054055μ.
1 HP costs 1.8480018μ.
old coin purse (25.0 @ +100.0): 500μ * 50.0% = 250.0
old leather wallet (25.0 @ +100.0): 500μ * 50.0% = 250.0
Value of stat gain: 380.63μ
Running BatBrain version: 1.12 (current)
Profit per round: ActionProfitDamageOtherbase; Pet Cheezling (0μ)0μ--
Running SmartStasis version: 3.8 (current)
Running Destroy All Monsters version: 0.3.2.0 (current)
Parsed round number: 1
Building options...
Options built! (42 actions)
Stasis action chosen: skill 4014
Run SmartStasis! (-75 profit to stasis with Saucy Salve -- low)
old coin purse (25.0 @ +100.0): 500μ * 50.0% = 250.0
old leather wallet (25.0 @ +100.0): 500μ * 50.0% = 250.0
Value of stat gain: 380.63μ
Monster: Animated Nightstand (Mahogany), ATT: 162, DEF: 146, HP: 170, Value: 880.63
You will die in 2 rounds.
Your attack will kill the monster in 17 rounds.
Building custom actions...
Custom actions built! (1 actions)
Stun action chosen: skill 3004
Stun action chosen: skill 3004
Custom action: skill 4014 (stun first with skill 3004)
Stun action chosen: skill 3004
Building options...
Options built! (41 actions)
Building options...
Options built! (41 actions)
Executing macro: scrollwhendone; sub batround; endsub; skill 3004; call batround; skill 4014; call batround;
Round 1: Arbos executes a macro!
Round 1: Arbos casts ENTANGLING NOODLES!
Round 2: Arbos casts SAUCY SALVE!
You gain 12 hit points
Parsed round number: 2
Building options...
Options built! (41 actions)
Stasis action chosen: skill 4014
Attack action chosen: skill 4005
This monster is not your huckleberry.
Stasis loop complete.
SmartStasis complete.
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 17, dierounds: 3)
Building options...
Options built! (41 actions)
Building options...
Options built! (41 actions)
Building options...
Options built! (41 actions)
Unable to enqueue empty action.
skill 4005; call batround; if hpbelow 46; abort "BatBrain abort: Danger, Will Robinson"; endif;
skill 4005; call batround; if hpbelow 11; abort "BatBrain abort: Danger, Will Robinson"; endif;
skill 4003; call batround; if hpbelow 2; abort "BatBrain abort: Danger, Will Robinson"; endif;
Executing macro: scrollwhendone; sub batround; if haseffect 8 || haseffect 264 || haseffect 282 || haseffect 283 || haseffect 284; abort "BatBrain abort: poisoned"; endif; endsub; skill 4005; call batround; if hpbelow 46; abort "BatBrain abort: Danger, Will Robinson"; endif; skill 4005; call batround; if hpbelow 11; abort "BatBrain abort: Danger, Will Robinson"; endif; skill 4003; call batround; if hpbelow 2; abort "BatBrain abort: Danger, Will Robinson"; endif;
Round 3: Arbos executes a macro!
Round 3: Arbos casts SAUCESTORM!
KoLmafia thinks it is round 4 but KoL thinks it is round 3
Round 4: animated nightstand (mahogany) takes 64 damage.
You gain 10 hit points
You gain 3 Mana Points
You acquire an effect: Burning Ears (duration: 1 Adventure)
Round 4: Arbos casts SAUCESTORM!
Round 5: animated nightstand (mahogany) takes 62 damage.
You gain 11 hit points
You gain 3 Mana Points
Round 5: animated nightstand (mahogany) takes 2 damage.
Round 5: animated nightstand (mahogany) takes 5 damage.
You lose 40 hit points
Round 5: Arbos casts STREAM OF SAUCE!
Round 6: animated nightstand (mahogany) takes 28 damage.
You gain 3 hit points
You gain 1 Mana Point
You acquire an effect: Burning Hands (duration: 1 Adventure)
Round 6: animated nightstand (mahogany) takes 1 damage.
Round 6: animated nightstand (mahogany) takes 4 damage.
You lose 40 hit points
Parsed round number: 3
Building options...
Options built! (41 actions)
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 3, dierounds: 2)
Unable to enqueue empty action.
Building options...
Options built! (41 actions)
DestroyAllMonsters is unable to figure out a useful combat strategy
abort "Unable to figure out a useful combat strategy"; call batround; if hpbelow 37; abort "BatBrain abort: Danger, Will Robinson"; endif;
Executing macro: scrollwhendone; sub batround; if haseffect 8 || haseffect 264 || haseffect 282 || haseffect 283 || haseffect 284; abort "BatBrain abort: poisoned"; endif; endsub; abort "Unable to figure out a useful combat strategy"; call batround; if hpbelow 37; abort "BatBrain abort: Danger, Will Robinson"; endif;
Round 6: Arbos executes a macro!
KoLmafia thinks it is round 7 but KoL thinks it is round 5
Parsed round number: 5
Building options...
Options built! (41 actions)
You're on your own, partner.
This is as a level 10 Sauceror with all skills up to level 10 known, all Saucespheres except Scarysauce active, and a pet Cheezling as the familiar.
Thank you. These points of data make a beautiful line, but I'm not sure what that line points to so please be patient with me.
Valliant
12-01-2011, 09:08 PM
Having a small issue with funkslinging...
DestroyAllMonsters starts now! (0mp option Miniborg Destroy-O-Bot, Miniborg Destroy-O-Bot -- killrounds: 4, dierounds: 30)
Round 4: ililili executes a macro!
Round 4: ililili uses the Miniborg Destroy-O-Bot and uses the Miniborg Destroy-O-Bot!
Round 5: lollipede takes 25 damage.
Round 5: lollipede drops 5 attack power.
Round 5: lollipede drops 4 defense.
Round 5: lollipede takes 25 damage.
Round 5: lollipede drops 3 attack power.
Round 5: lollipede drops 3 defense.
You lose 5 hit points
Round 5: ililili uses the Miniborg Destroy-O-Bot!
Round 6: lollipede takes 26 damage.
Round 6: lollipede drops 5 attack power.
Round 6: lollipede drops 4 defense.
You lose 4 hit points
Round 6: ililili uses the Miniborg Destroy-O-Bot!
Round 7: lollipede takes 23 damage.
Round 7: lollipede drops 3 attack power.
Round 7: lollipede drops 4 defense.
You lose 4 hit points
Round 7: ililili uses the Miniborg Destroy-O-Bot!
Round 8: lollipede takes 21 damage.
Round 8: lollipede drops 3 attack power.
Round 8: lollipede drops 5 defense.
Round 8: ililili wins the fight!
Totally reasonable time to kill the thing, but it doesn't seem reasonable to funksling the once and then single-use for the other rounds given that it was a zero cost action.
Sigh. Unfortunately BatBrain has a problem with ambidextrous funkslinging. I manually added in the option, but BatBrain has changed. Now it rebuilds the options after each enqueue so my work around got broken. I guess I'll have to fix my workaround until zarqon fixes funkslinging.
roippi
12-01-2011, 10:42 PM
I don't think I've said it yet, but major thanks for maintaining this script. Is mighty useful.
You're welcome. I'm glad that people find it useful since I know it is absolutely full of flaws.
Winterbay
12-06-2011, 12:45 PM
In case you're interested I've set up this little snippet to automatically use "Release the boots" if it's available and the monster I'm facing doesn't have the goal I'm currently after. It seems to be working fine (it even fired after I got the last goal item in a pickpocket attempt which was nice).
string special_action()
{
if(my_familiar() == $familiar[Stomping Boots] && get_property("bootsCharged") == "true" && m.phylum != $phylum[none] && has_goal(m) == 0) {
enqueue(get_action($skill[release the boots]));
return macro();
}
}
Donavin69
12-06-2011, 08:53 PM
I know I have a bad singing voice, but today DAM thinks that I can sing the monsters in the castle to death:
Run SmartStasis! (0 profit to stasis with Sing -- low)
DestroyAllMonsters starts now! (0mp option Sing -- killrounds: 66, dierounds: 1300)
Round 2: Pawn69 executes a macro!
Round 2: Pawn69 casts SING!
this goes on for my 30 rounds, and then I have to manually kill the monster...
It seems to have started doing this with the new BatBrain update.
This character is a lvl 33 AT with no combat spell skills
Donavin69
12-08-2011, 09:38 PM
Ok, after a few more times of this occurring with the procrastination giant, I finally went into the code for and simply 'removed' the check for the Procrastination Giant
boolean no_cunctatitis() {
return TRUE;
//m != $monster[Procrastination Giant] || weapon_type(equipped_item($slot[weapon])) == $stat[Moxie];
}
I have power nap, and would rather get the cunctatitis and remove it than not be able to complete the fight. I'm not sure if there is a good way to combat this problem. But clearly, picking a skill that calculates to 60 rounds to kill isn't a good skill...
Sigh.
No. No it isn't a good way to do that... Perhaps if the player has power nap and no good way to kill a procrastination giant then it should take the chance... sigh... I'd have to refactor a bit to even make that work sanely.
Theraze
12-09-2011, 03:19 AM
Probably if the 'best' result is >maxrounds, exit, don't guarantee failure. :)
bsander
12-12-2011, 10:11 AM
Is there a limit of one use per skill per fight? DAM only fires off a couple of pasta spells before switching to a failing attack strategy while I still have 200+MP (which is over 60%) left for spell usage. I even have the Feed skill which means most spells hardly cost me any MP after combat. Any thoughts?
Also, I noticed DAM mentions it starts twice during the same combat? Is that normal?
[1290] Battlefield (Hippy Uniform)
Encounter: War Frat 110th Infantryman
Strategy: /Users/Sander/Library/Application Support/KoLmafia/ccs/standard.ccs [default]
Round 0: bsander wins initiative!
Running ZLib version: r33 (current)
1 MP costs 4.082μ. ( 0 / 364 )
1 HP costs 0.427μ. ( 0 / 242 )
beer bomb (5.0 @ +45.0): 150μ * 7.25% = 10.875
beer helmet (10.0 @ +45.0): 721μ * 14.5% = 104.545
bejeweled pledge pin (10.0 @ +45.0): 600μ * 14.5% = 87.0
bottle opener belt buckle (10.0 @ +45.0): 717μ * 14.5% = 103.965
distressed denim pants (10.0 @ +45.0): 989μ * 14.5% = 143.405
giant foam finger (10.0 @ +45.0): 723μ * 14.5% = 104.835
keg shield (6.0 @ +45.0): 689μ * 8.7% = 59.942997
Value of stat gain: 403.9μ
Running BatBrain version: 1.15 (current)
Profit per round: ActionProfitDamageOtherbase; Untamed Turtle (0μ)0μ--75% stun chance
New Version of SmartStasis Available: 3.10
Upgrade from 3.9 to 3.10 here!
Running Destroy All Monsters version: 0.3.2.0 (current)
Parsed round number: 1
Building options...
Options built! (91 actions)
Stasis action chosen: use 2678
Run SmartStasis! (0 profit to stasis with spectre scepter -- low)
beer bomb (5.0 @ +45.0): 150μ * 7.25% = 10.875
beer helmet (10.0 @ +45.0): 721μ * 14.5% = 104.545
bejeweled pledge pin (10.0 @ +45.0): 600μ * 14.5% = 87.0
bottle opener belt buckle (10.0 @ +45.0): 717μ * 14.5% = 103.965
distressed denim pants (10.0 @ +45.0): 989μ * 14.5% = 143.405
giant foam finger (10.0 @ +45.0): 723μ * 14.5% = 104.835
keg shield (6.0 @ +45.0): 689μ * 8.7% = 59.942997
Value of stat gain: 403.9μ
Monster: War Frat 110th Infantryman, ATT: 172, DEF: 155, HP: 185, Value: 1,018.47
You will die in 31 rounds.
Your attack will kill the monster in 46 rounds.
Building custom actions...
Custom actions built! (0 actions)
Stasis action chosen: use 2678
beer bomb (5.0 @ +45.0): 150μ * 7.25% = 10.875
beer helmet (10.0 @ +45.0): 721μ * 14.5% = 104.545
bejeweled pledge pin (10.0 @ +45.0): 600μ * 14.5% = 87.0
bottle opener belt buckle (10.0 @ +45.0): 717μ * 14.5% = 103.965
distressed denim pants (10.0 @ +45.0): 989μ * 14.5% = 143.405
giant foam finger (10.0 @ +45.0): 723μ * 14.5% = 104.835
keg shield (6.0 @ +45.0): 689μ * 8.7% = 59.942997
Value of stat gain: 403.9μ
Attack action chosen: skill 7116
This monster is not your huckleberry.
Stasis loop complete.
SmartStasis complete.
DestroyAllMonsters starts now! (0mp option Feed -- killrounds: 4, dierounds: 31)
Queued: skill 7116
Building options...
Options built! (90 actions)
Queued: skill 3005
Building options...
Options built! (90 actions)
Queued: skill 3003
Building options...
Options built! (90 actions)
Queued: use 2678
Building options...
Options built! (90 actions)
skill 7116; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif;
skill 3005; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif;
skill 3003; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif;
use 2678; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif;
Executing macro: scrollwhendone; sub batround; if haseffect 8 || haseffect 264 || haseffect 282 || haseffect 283 || haseffect 284; abort "BatBrain abort: poisoned"; endif; endsub; skill 7116; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif; skill 3005; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif; skill 3003; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif; use 2678; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif;
Round 1: bsander executes a macro!
Round 1: bsander casts FEED!
Round 2: war frat 110th infantryman takes 44 damage.
You gain 22 hit points
You gain 22 Mana Points
Round 2: Your opponent moves to attack you, but trips over Grort and falls on their face (or face-analogue). Grort briefly peeks out of his shell, then withdraws again.
Round 2: bsander casts CANNELLONI CANNON!
Round 3: war frat 110th infantryman takes 60 damage.
Round 3: Your opponent moves to attack you, but trips over Grort and falls on their face (or face-analogue). Grort briefly peeks out of his shell, then withdraws again.
Round 3: bsander casts RAVIOLI SHURIKENS!
Round 4: war frat 110th infantryman takes 90 damage.
Round 4: Your opponent moves to attack you, but trips over Grort and falls on their face (or face-analogue). Grort briefly peeks out of his shell, then withdraws again.
Round 4: bsander uses the spectre scepter!
Round 5: war frat 110th infantryman takes 10 damage.
You lose 32 hit points
Happened: skill 7116
Happened: skill 3005
Happened: skill 3003
Happened: use 2678
Parsed round number: 5
Building options...
Options built! (90 actions)
DestroyAllMonsters starts now! (0mp option Feed -- killrounds: 6, dierounds: 29)
Queued: use 2678
Building options...
Options built! (90 actions)
use 2678; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif;
Executing macro: scrollwhendone; sub batround; if haseffect 8 || haseffect 264 || haseffect 282 || haseffect 283 || haseffect 284; abort "BatBrain abort: poisoned"; endif; endsub; use 2678; call batround; if hpbelow 31; abort "BatBrain abort: Danger, Will Robinson"; endif;
Round 5: bsander executes a macro!
Round 5: bsander uses the spectre scepter!
Round 6: war frat 110th infantryman drops 1 attack power.
Round 6: war frat 110th infantryman drops 1 defense.
Round 6: Your opponent moves to attack you, but trips over Grort and falls on their face (or face-analogue). Grort briefly peeks out of his shell, then withdraws again.
Happened: use 2678
Parsed round number: 6
Building options...
Options built! (90 actions)
Round 6: bsander attacks!
Round 7: bsander attacks!
You lose 33 hit points
Round 8: bsander attacks!
Round 9: Your opponent moves to attack you, but trips over Grort and falls on their face (or face-analogue). Grort briefly peeks out of his shell, then withdraws again.
Round 9: bsander attacks!
You lose 33 hit points
Round 10: bsander attacks!
Round 11: Your opponent moves to attack you, but trips over Grort and falls on their face (or face-analogue). Grort briefly peeks out of his shell, then withdraws again.
Round 11: bsander attacks!
You lose 9 hit points
Round 12: Your opponent moves to attack you, but trips over Grort and falls on their face (or face-analogue). Grort briefly peeks out of his shell, then withdraws again.
Round 12: bsander attacks!
You lose 31 hit points
Round 13: bsander attacks!
You lose 33 hit points
Round 14: bsander attacks!
You lose 7 hit points
You lose 35 hit points
Round 15: bsander attacks!
Round 16: Your opponent moves to attack you, but trips over Grort and falls on their face (or face-analogue). Grort briefly peeks out of his shell, then withdraws again.
Round 16: bsander attacks!
You lose 31 hit points
You've had the crap beaten out of you... attempting to find some more crap.
Winterbay
12-12-2011, 10:46 AM
It is normal such that the first Macro ran out and thus a second round needed to be performed so it restarted. What is a bit odd is that it clearly states that stasising with the scepter is low on profit but it still does it for whatever reason.
Also, it decides to use "attack" even though you clearly can't hit the monster which is a bit odd isn't it?
bsander
12-12-2011, 12:15 PM
Wait. I just noticed my CCS had an "attack with weapon" statement after the DAM consult. Could it be that DAM somehow ended (without notification) and the attack statement handled the fight from round 6 onward? Though if that is the case, it's still strange that DAM silently failed, right?
Theraze
12-12-2011, 01:40 PM
Not so much... when it would have aborted with a message telling you that it couldn't figure out a good way to guarantee success and that you should be careful, it instead went to the guaranteed failure of attack with weapon. That's a you thing, not a DAM thing. :)
bsander
12-12-2011, 02:52 PM
Thing is, I've seen that message many times over the last couple of weeks (since i started using DAM), with the same CCS, and it always aborted properly without switching to the weapon attack. Also, I don't see an actual abort message being printed in the combat log.
zarqon
12-14-2011, 03:10 AM
BB-based scripts (should) use exclusively macros. Since all those attacks were not macro'd, and they also lack any other non-mafia print statements, it's safe to say that DAM was somehow done and mafia proceeded with your CCS from the then-current round number, which you had specified as "attack".
Theraze
12-19-2011, 10:56 PM
Would it make sense for DAM to automatically recalculate stasis values after round 10 (or so) if using a meat-dropping familiar like the Cocoabo, Mimic, Fuzzy Dice, Hipster, or NZPR? Since their meat stasis value goes to 0 there, there's no sense in hoping to get more meat for 15 more rounds... HP/MP is still valid, but...
zarqon
12-22-2011, 02:41 AM
BB already caps familiar meat profit on the high end at 0 after round 10.
Also Bale, if perchance you take in the new Sherlock Holmes movie, stay for the closing credits, then pay close attention towards the end, just before they show all the song copyrights.
Also Bale, if perchance you take in the new Sherlock Holmes movie, stay for the closing credits, then pay close attention towards the end, just before they show all the song copyrights.
I was thinking about seeing it. Right before the song copyrights? Sure... Is this going to go by quickly or is it obvious?
zarqon
12-23-2011, 01:23 AM
It's pretty obvious if you're looking. I chortled.
StDoodle
12-23-2011, 05:46 AM
Thanks for the heads-up, the wife and I are seeing that on Xmas. </offtopic>
Winterbay
12-23-2011, 06:47 AM
Also Bale, if perchance you take in the new Sherlock Holmes movie, stay for the closing credits, then pay close attention towards the end, just before they show all the song copyrights.
I've never understood people that doesn't do that. I quite like looking at the closing credits especially to get to the song thingies since I often will wonder what one of them were.
Thanks for telling me to pay attention to the credits there. I was wondering if I'd spot this strange thing you were referring to. No worries though, there's no way I could miss that! I laughed from the amusing surprise.
zarqon
12-27-2011, 07:47 AM
I think you can now verify that none of our posts (including StDoodle's) were off topic. :)
maximillian the red
01-05-2012, 12:02 AM
will this, or will anything else, handle releasing the boots when it's available? or would that need to be added to a CCS somewhere?
zarqon
01-05-2012, 12:30 AM
I believe that would probably be appropriate for SS to handle in custom actions. I'll make a post about it over there.
garbled
01-17-2012, 06:09 PM
I'm having a wierd problem with this script. For no apparent reason, it just gives up in combat.
HP:902/932
MP:1872/2175
Request 1 of 119 (The Sea: The Mer-Kin Outpost) in progress...
[15333] The Mer-Kin Outpost
Encounter: Mer-kin raider
Strategy: /root/.kolmafia/ccs/DAM.ccs [default]
Round 0: pastopheles wins initiative!
Run SmartStasis! (-187 profit to stasis with Lasagna Bandages -- low)
Round 1: pastopheles executes a macro!
Round 1: pastopheles casts ENTANGLING NOODLES!
Round 2: pastopheles casts SAUCY SALVE!
You gain 10 hit points
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 8, dierounds: 27)
Round 3: pastopheles executes a macro!
Round 3: pastopheles casts FEARFUL FETTUCINI!
KoLmafia thinks it is round 4 but KoL thinks it is round 3
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 3, dierounds: 27)
Round 4: pastopheles executes a macro!
KoLmafia thinks it is round 5 but KoL thinks it is round 3
You're on your own, partner.
Click here to continue in the relay browser.
Once I bring it up in the mini-browser, I just fearful or saucegeyser:
KoLmafia thinks it is round 6 but KoL thinks it is round 3
Round 6: pastopheles casts FEARFUL FETTUCINI!
KoLmafia thinks it is round 7 but KoL thinks it is round 4
Round 7: pastopheles wins the fight!
You gain 395 Meat
You gain 75 Beefiness
You gain 100 Mysteriousness
You gain 41 Chutzpah
Why does it just give up?
Actually, examining a few more failures.. It seems to give up 100% of the time if the first fearful doesn't kill the mob. Shouldn't it just cast it again? no?
garbled
01-19-2012, 05:19 PM
So, one of the problems I've noticed, is that it will sometimes pick Volcanometeor, when I don't have any volcanic ash in inventory. This leads to it automatically bailing out after doing absolutely nothing. (I don't have any ash in inventory, because it just kept picking volcano for really easy fights over and over, and used like 30 of them before I caught it and closeted them all). Given my preference, I would rather it picked some big "bomb" attack, like geyser, and just spammed that at the end if things get hairy.
Winterbay
01-19-2012, 05:28 PM
If you have no ash BatBrain should mark that skill as unavailable. At least it's coded that way...
garbled
01-20-2012, 02:35 PM
I'm at least assuming that was what was going on. Occasionally it would enter DAM, do absolutely nothing, then enter it again, then give up. I'm guessing that prior to that, those were the combats where it was using up all my ash.
Theraze
01-25-2012, 01:59 PM
This is a bit odd, but... noticed today that DAM was using options that guaranteed failure for some reason:
DestroyAllMonsters starts now! (0mp option spectre scepter -- killrounds: 90, dierounds: 154)With a 35 pound purse rat as my familiar, not sure why it would be guaranteeing failure. Don't think there's a single fight in the game that will work with 90 rounds... Is this one of those cases where I need a 9 verbosity log-dump, or is this just because, when looking at crippling failure, it will take the best of a bad selection that at least does damage?
StDoodle
01-25-2012, 02:28 PM
I thought DAM just listed the cheapest option for reference, not actually used it unless it worked ok.
Winterbay
01-25-2012, 02:57 PM
I thought DAM just listed the cheapest option for reference, not actually used it unless it worked ok.
That is indeed how I thought it worked as well.
Theraze
01-25-2012, 03:58 PM
Well, it followed that up with 29 rounds of using the scepter, giving me one round to try to do 200+ damage as a no-combat-skill AT. Rather depressing.
maximillian the red
01-29-2012, 12:51 PM
I'm using DAM as my consult script and I'm in the middle of the giant castle quest (using bumcheekascend) and it just olfacted a goth giant when my only remaining goal is a giant needle. I assume this is not DAM, but maybe SmartStasis or BatBrain but I'm not entirely sure how to tell which is why i'm mentioning it here. Is there a setting to have goth giant only olfact in aftercore, or to tell the suite of scripts to olfact based on goals (ie: sniff a raver giant in this case since my only goal is a giant needle?)
SmartStasis will always olfact if:
1) The monster drops the bounty item you are currently hunting
2) The monster is in your ftf_olfact zlib variable
3) Mafia would have decided to olfact the monster as a 'special action' because of the way autoOlfact has been set.
This means that you should remove goth giants from your ftf_olfact zlib variable, and you (or, in this case, BCCAscend) should do something like "set autoOlfact = goals" once you have only one goal left.
maximillian the red
01-29-2012, 03:36 PM
This means that you should remove goth giants from your ftf_olfact zlib variable
thats kind of what i figured, but then it's not there for aftercore where i would want it. it almost seems like there could/should be a distinction drawn between monsters you'd want to olfact in run and those out of run. for another example i'd always want to olfact dairy goats in run, but probably not outside of a run. vice versa for goth giants.
Theraze
01-29-2012, 04:07 PM
So add that logic into your Between Battle Script.
The removal/addition can happen in your postAscensionScript and your kingLiberatedScript.
Theraze
01-29-2012, 04:38 PM
That would also make sense. :) Probably more, since it only checks once and does the change exactly when he wants it.
maximillian the red
01-29-2012, 04:51 PM
i'll see if i can figure that out. how does one change a zlib variable inside of a postascention or kingliberated script assuming i can figure out what/if i use.
Theraze
01-29-2012, 05:10 PM
Similar to this, pasted from my preAscension script for setting up the next 100% familiar run:
import <zlib.ash>
void next_familiar() {
vars["is_100_run"] = normalized(my_familiar(),"familiar");
updatevars();
}
Or just do
cli_execute( "zlib ftf_olfact = zlib ftf_olfact = Blooper, Dairy Goat, Shaky Clown, Some Zombie Waltzers, Goth Giant, Knott Yeti, Violent Fungus, Spectral Jellyfish, Gnarly Gnome, Gnasty Gnome, Fruit Golem, Quantum Mechanic, C. H. U. M., Rotund Duck, Pufferfish, Wealthy Pirate, Skeletal Sommelier, Endless Conference Call" );
maximillian the red
01-29-2012, 10:49 PM
thanks very much for the assist guys. appreciate it.
Just curious, can DAM not try to stasis naughty sorority nurses with sing? Or is this SS?
[1158] Battlefield (Hippy Uniform)
Encounter: Naughty Sorority Nurse
Strategy: solomonster.ccs [default]
Round 0: solomonster loses initiative!
Run SmartStasis! (1 profit to stasis with spectre scepter -- low)
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 3, dierounds: 1320000)
Round 1: solomonster executes a macro!
Round 1: solomonster attacks!
Round 2: naughty sorority nurse takes 64 damage.
Round 2: naughty sorority nurse heals 64 hit points.
Round 2: solomonster casts SING!
Round 3: naughty sorority nurse takes 2 damage.
Round 3: naughty sorority nurse heals 2 hit points.
Round 3: solomonster casts SING!
Round 4: naughty sorority nurse takes 2 damage.
Round 4: naughty sorority nurse heals 2 hit points.
Round 4: solomonster casts SING!
Round 5: naughty sorority nurse takes 2 damage.
Round 5: naughty sorority nurse heals 2 hit points.
Round 5: solomonster casts SING!
Round 6: naughty sorority nurse takes 3 damage.
Round 6: naughty sorority nurse heals 3 hit points.
Round 6: solomonster casts SING!
Round 7: naughty sorority nurse takes 3 damage.
Round 7: naughty sorority nurse heals 3 hit points.
Round 7: solomonster casts SING!
Round 8: naughty sorority nurse takes 3 damage.
Round 8: naughty sorority nurse heals 3 hit points.
Round 8: solomonster casts SING!
Round 9: naughty sorority nurse takes 2 damage.
Round 9: naughty sorority nurse heals 2 hit points.
Round 9: solomonster casts SING!
Round 10: naughty sorority nurse takes 2 damage.
Round 10: naughty sorority nurse heals 2 hit points.
Round 10: solomonster casts SING!
Round 11: naughty sorority nurse takes 2 damage.
Round 11: naughty sorority nurse heals 2 hit points.
Round 11: solomonster casts SING!
Round 12: naughty sorority nurse takes 2 damage.
Round 12: naughty sorority nurse heals 2 hit points.
Round 12: solomonster casts SING!
Round 13: naughty sorority nurse takes 3 damage.
Round 13: naughty sorority nurse heals 3 hit points.
Round 13: solomonster casts SING!
Round 14: naughty sorority nurse takes 3 damage.
Round 14: naughty sorority nurse heals 3 hit points.
Round 14: solomonster casts SING!
Round 15: naughty sorority nurse takes 3 damage.
Round 15: naughty sorority nurse heals 3 hit points.
Round 15: solomonster casts SING!
Round 16: naughty sorority nurse takes 3 damage.
Round 16: naughty sorority nurse heals 3 hit points.
Round 16: solomonster casts SING!
Round 17: naughty sorority nurse takes 3 damage.
Round 17: naughty sorority nurse heals 3 hit points.
Round 17: solomonster casts SING!
Round 18: naughty sorority nurse takes 3 damage.
Round 18: naughty sorority nurse heals 3 hit points.
Round 18: solomonster casts SING!
Round 19: naughty sorority nurse takes 2 damage.
Round 19: naughty sorority nurse heals 2 hit points.
Round 19: solomonster casts SING!
Round 20: naughty sorority nurse takes 3 damage.
Round 20: naughty sorority nurse heals 3 hit points.
Round 20: solomonster casts SING!
Round 21: naughty sorority nurse takes 2 damage.
Round 21: naughty sorority nurse heals 2 hit points.
Round 21: solomonster casts SING!
Round 22: naughty sorority nurse takes 2 damage.
Round 22: naughty sorority nurse heals 2 hit points.
Round 22: solomonster casts SING!
Round 23: naughty sorority nurse takes 3 damage.
Round 23: naughty sorority nurse heals 3 hit points.
Round 23: solomonster casts SING!
Round 24: naughty sorority nurse takes 2 damage.
Round 24: naughty sorority nurse heals 2 hit points.
Round 24: solomonster casts SING!
Round 25: naughty sorority nurse takes 3 damage.
Round 25: naughty sorority nurse heals 3 hit points.
Round 25: solomonster casts SING!
Round 26: naughty sorority nurse takes 3 damage.
Round 26: naughty sorority nurse heals 3 hit points.
Round 26: solomonster casts SING!
Round 27: naughty sorority nurse takes 2 damage.
Round 27: naughty sorority nurse heals 2 hit points.
Round 27: solomonster casts SING!
Round 28: naughty sorority nurse takes 2 damage.
Round 28: naughty sorority nurse heals 2 hit points.
Round 28: solomonster casts SING!
Round 29: naughty sorority nurse takes 3 damage.
Round 29: naughty sorority nurse heals 3 hit points.
Round 29: solomonster casts SING!
Round 30: naughty sorority nurse takes 3 damage.
Round 30: naughty sorority nurse heals 3 hit points.
Run SmartStasis! (1 profit to stasis with spectre scepter -- low)
Run SmartStasis! (1 profit to stasis with spectre scepter -- low)
You're on your own, partner.
Click here to continue in the relay browser.
Theraze
02-10-2012, 05:16 PM
That was DAM. As it said, DestroyAllMonsters starts now. It just didn't think that NSN healed themselves, so that Sing was a valid attack mechanism...
Yeah, that version of DAM has a problem with low damage attacks. I'll update a more recent version. It works betterer. Mostly. Still has some problems though.
I've updated the first post with a brand new version that will not try to sing your enemy to death.
IceColdFever
02-11-2012, 12:35 PM
0.3.3.0 doesn't seem to move from SmartStasis to Destory. Here's my CCS:
try to steal an item
special action
consult DestroyAllMonsters.ash
Here's the results. All fights look like this, but I didn't notice because smart stasis actually killed the monster up until this fight.
[709] Palindome
Encounter: Dr. Awkward
Encounter: Dr. Awkward
Strategy: C:\Users\Me\Dropbox\KoLmafia\ccs\HC_Run.ccs [default]
Round 0: IceColdFever wins initiative!
Round 1: IceColdFever tries to steal an item!
Run SmartStasis! (35 profit to stasis with Sing -- good enough)
Round 2: IceColdFever executes a macro!
Round 2: IceColdFever casts SING!
Round 3: dr. awkward takes 2 damage.
Round 3: The Cat in the Sock mimics a red-and-white striped candy cane, and canes him for 36 damage.
Round 3: dr. awkward takes 36 damage.
Round 3: IceColdFever casts SING!
Round 4: dr. awkward takes 2 damage.
Round 4: The Cat in the Sock's bells jingle merrily.
Round 4: The Cat in the Sock mimics a red-and-white striped ATM, and dispenses a little extra Meat.
You gain 145 Meat.
Round 4: IceColdFever casts SING!
Round 5: dr. awkward takes 2 damage.
Round 5: The Cat in the Sock mimics a candy-striper nurse, heals some of your wounds, and recharges your mojo.
You gain 39 hit points
You gain 39 Mojo Points
Round 5: IceColdFever casts SING!
Round 6: dr. awkward takes 2 damage.
Round 6: IceColdFever casts SING!
Round 7: dr. awkward takes 3 damage.
Round 7: IceColdFever casts SING!
Round 8: dr. awkward takes 2 damage.
Round 8: IceColdFever casts SING!
Round 9: dr. awkward takes 2 damage.
Round 9: dr. awkward heals 21 hit points.
Round 9: IceColdFever casts SING!
Round 10: dr. awkward takes 3 damage.
Round 10: IceColdFever casts SING!
Round 11: dr. awkward takes 2 damage.
Round 11: The Cat in the Sock's bells jingle merrily.
Round 11: The Cat in the Sock mimics a red-and-white striped candy cane, and canes him for 34 damage.
Round 11: dr. awkward takes 34 damage.
Round 11: IceColdFever casts SING!
Round 12: dr. awkward takes 2 damage.
Round 12: The Cat in the Sock's bells jingle merrily.
Round 12: The Cat in the Sock mimics a candy-striper nurse, heals some of your wounds, and recharges your mojo.
You gain 40 hit points
You gain 40 Mojo Points
Round 12: IceColdFever casts SING!
Round 13: dr. awkward takes 2 damage.
Round 13: The Cat in the Sock mimics a candy-striper nurse, heals some of your wounds, and recharges your mojo.
You gain 41 hit points
You gain 41 Mojo Points
Round 13: IceColdFever casts SING!
Round 14: dr. awkward takes 2 damage.
Round 14: IceColdFever casts SING!
Round 15: dr. awkward takes 2 damage.
Round 15: IceColdFever casts SING!
Round 16: dr. awkward takes 3 damage.
Round 16: The Cat in the Sock's bells jingle merrily.
Round 16: The Cat in the Sock mimics a red-and-white striped barber pole, spinning in front of your opponent. He looks mesmerized.
Round 16: dr. awkward drops 11 attack power.
Round 16: dr. awkward drops 11 defense.
Round 16: dr. awkward heals 22 hit points.
Round 16: IceColdFever casts SING!
Round 17: dr. awkward takes 3 damage.
Round 17: IceColdFever casts SING!
Round 18: dr. awkward takes 3 damage.
Round 18: IceColdFever casts SING!
Round 19: dr. awkward takes 2 damage.
Round 19: The Cat in the Sock mimics a red-and-white striped barber pole, spinning in front of your opponent. He looks mesmerized.
Round 19: dr. awkward drops 11 attack power.
Round 19: dr. awkward drops 11 defense.
Round 19: IceColdFever casts SING!
Round 20: dr. awkward takes 2 damage.
Round 20: The Cat in the Sock's bells jingle merrily.
Round 20: The Cat in the Sock mimics a red-and-white striped barber pole, spinning in front of your opponent. He looks mesmerized.
Round 20: dr. awkward drops 12 attack power.
Round 20: dr. awkward drops 12 defense.
Round 20: IceColdFever casts SING!
Round 21: dr. awkward takes 3 damage.
Round 21: dr. awkward heals 20 hit points.
Round 21: IceColdFever casts SING!
Round 22: dr. awkward takes 2 damage.
Round 22: dr. awkward heals 25 hit points.
Round 22: IceColdFever casts SING!
Round 23: dr. awkward takes 3 damage.
Round 23: IceColdFever casts SING!
Round 24: dr. awkward takes 2 damage.
Round 24: IceColdFever casts SING!
Round 25: dr. awkward takes 3 damage.
Round 25: IceColdFever casts SING!
Round 26: dr. awkward takes 3 damage.
Round 26: The Cat in the Sock's bells jingle merrily.
Round 26: The Cat in the Sock mimics a candy-striper nurse, heals some of your wounds, and recharges your mojo.
You gain 39 hit points
You gain 39 Mojo Points
Round 26: IceColdFever attacks!
Round 27: dr. awkward takes 55 damage.
Round 27: dr. awkward takes 2 damage.
Round 27: IceColdFever attacks!
You lose 8 hit points
Round 28: The Cat in the Sock mimics a red-and-white striped barber pole, spinning in front of your opponent. He looks mesmerized.
Round 28: dr. awkward drops 12 attack power.
Round 28: dr. awkward drops 12 defense.
Round 28: dr. awkward takes 3 damage.
Round 28: dr. awkward heals 29 hit points.
Round 28: IceColdFever attacks!
Round 29: dr. awkward takes 57 damage.
Round 29: IceColdFever attacks!
You lose 8 hit points
Round 30: IceColdFever attacks!
Round 31: dr. awkward takes 50 damage.
Round 31: The Cat in the Sock mimics a candy-striper nurse, heals some of your wounds, and recharges your mojo.
You gain 39 hit points
You gain 39 Mojo Points
Round 31: IceColdFever attacks!
Sounds like SmartStasis is making the decision that it can gain more by letting your stocking mimic restore hp/mp and kill the monster for you.
As you noted, it never moves on from SS to DAM because SS is happy. If you see a problem with this, please report to SS since this is not related to DAM. You say it usually kills the monster like this, so SS probably isn't very wrong although it should give up a few rounds earlier just in case.
garbled
02-12-2012, 02:15 PM
I don't understand this failure. Why didn't it just cast saucegeyser or fearful fettucini?
Request 3 of 83 (The Sea: The Briniest Deepests) in progress...
[24014] The Briniest Deepests
Encounter: decent white shark
Strategy: /root/.kolmafia/ccs/DAM.ccs [default]
Round 0: garbled wins initiative!
Run SmartStasis! (146 profit to stasis with Lasagna Bandages -- low)
Round 1: garbled executes a macro!
Round 1: garbled casts ENTANGLING NOODLES!
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 2, dierounds: 2090)
Destroy with: attack
Destroy with: Candyblast
Round 2: garbled executes a macro!
Round 2: garbled attacks!
You lose 1 hit point
Round 3: garbled casts CANDYBLAST!
Destroy with: attack
Round 4: garbled executes a macro!
Round 4: garbled attacks!
You lose 1 hit point
You lose 19 hit points
Round 5: garbled executes a macro!
KoLmafia thinks it is round 6 but KoL thinks it is round 5
DestroyAllMonsters was unable to figure out a useful combat strategy
You're on your own, partner.
Click here to continue in the relay browser.
Theraze
02-12-2012, 02:27 PM
Here's a guess... had you consumed bazookafish gum, making the shark flip out? If so, mafia is unaware of flipped out monsters and the fact they have higher stats, and so any 'intelligent' consult script is going to fail...
Winterbay
02-12-2012, 03:35 PM
Why isn't the copy showing that the shark took damage? I didn't think that was toggleable, but I may be wrong :)
Theraze
02-12-2012, 04:00 PM
I believe that would be the record monster health changes option...
anotherherring
02-12-2012, 07:03 PM
Um - 3.3.0 seems to have decided to waste Frosty's iceball in trivial combats...
[10233] South of the Border
Encounter: angry piñata
Strategy: C:\My Dropbox\Kolmafia\ccs\HC sauce.ccs [default]
Round 0: Albert Herring wins initiative!
Run SmartStasis! (0 profit to stasis with fat stacks of cash -- low)
1/5 monsters drop goals here.
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 1, dierounds: 6700)
Destroy with: Frosty's iceball
Destroy with: Frosty's iceball
Round 1: Albert Herring executes a macro!
Round 1: Albert Herring uses the Frosty's iceball!
Round 2: Albert Herring wins the fight!
You acquire an item: pile of candy
That was the third and final use (should have been watching more closely, I know). Spect I'll manage to get another one sooner or later :-(
Winterbay
02-12-2012, 07:43 PM
That's interesting as the script by default returns false for any uses of the iceball...
anotherherring
02-12-2012, 11:43 PM
Heh, in best complaining luser style I am of course prepared to deny that I have ever fiddled with any settings, just dumped the script in /scripts and stuck it in a CCS. And I've been using the previous version without any similar issues for a week or two, and this happened immediately after I replaced it with 0.3.3.0 on getting the update nag messages.
Heck. That was definitely my fault. Winterbay was correct until a bug was recently introduced. New version added to the first post to keep this from happening again.
Winterbay
02-13-2012, 07:33 AM
Heck. That was definitely my fault. Winterbay was correct until a bug was recently introduced. New version added to the first post to keep this from happening again.
That's what I get from looking at an old version of the script :)
anotherherring
02-13-2012, 02:13 PM
Ha, just when you had me almost convinced it was my own fault (and of course I should still have closeted the thing the first time it was used, really). Ah well, shit happens.
The last 2 versions have done this quite a bit:
1672] Tavern Cellar (row 4, col 2)
Encounter: Hot and Cold Running Rats
Encounter: drunken rat
Strategy: solomonster.ccs [default]
Round 0: solomonster wins initiative!
Round 1: solomonster tries to steal an item!
You acquire an item: rat whisker
Run SmartStasis! (0 profit to stasis with spectre scepter -- low)
DestroyAllMonsters starts now! (0mp option Miniborg stomper, Miniborg laser -- killrounds: 1, dierounds: 9767)
Destroy with: spectre scepter
Destroy with: spectre scepter
Round 2: solomonster executes a macro!
Round 2: solomonster uses the spectre scepter!
You gain 5 hit points
Destroy with: seal tooth
Destroy with: seal tooth
Round 3: solomonster executes a macro!
Round 3: solomonster uses the seal tooth!
Round 4: drunken rat takes 1 damage.
Round 4: solomonster executes a macro!
KoLmafia thinks it is round 5 but KoL thinks it is round 4
DestroyAllMonsters was unable to figure out a useful combat strategy
You're on your own, partner.
Click here to continue in the relay browser.
This is a level 15 after core char decked out with plenty of goodies.
are moar details needed?
Theraze
02-13-2012, 02:41 PM
I believe it's because DAM is hoping to finish the fight using your familiar, which failed to complete. New DAM appears to punt if it doesn't complete in the expected rounds, instead of recalculating, to help you be able to figure out what exactly went wrong... but it means that when the low combat is supposed to finish, it has a tendency to fail.
charred
02-13-2012, 07:42 PM
DAM used 2 torpedos and a frigid ninja star today in a fight when i needed them for my telescope :(
Theraze
02-13-2012, 07:45 PM
So... closet them if you know you need them? Or can DAM and/or BatBrain be aware of the telescope1-7 values?
I just made a quick fix for the problem and ensured it won't happen again simply by refusing to use a non-reusable item unless you have 2 of them when you are in ronin/hardcore. This will stop DAM from using your last item of a type, even when you don't need them for the telescope, but that might not be a bad thing.
First post updated with the new version.
Or can DAM and/or BatBrain be aware of the telescope1-7 values?
This is only my todo list, but it is troublesome so it might not happen any time soon.
Typo prevents the prior fix from working properly. (I forgot a space.)
Fixed it. Updated version number. Updated first post.
Theraze
02-13-2012, 11:55 PM
This is only my todo list, but it is troublesome so it might not happen any time soon.
Shouldn't be too troublesome... whipped this up in a few minutes. Should work, but then again, not having gotten any telescopes yet, I have no good way to test it. :) Anyways, this goes into the boolean ok section, in aid.find, just before the switch. I included both the find and switch to give it boundaries. Just says that if an available item is a telescope item and you only have 1 left, skip it.
if(aid.find())
if (get_property("telescopeUpgrades").to_int() > 0) {
for tUpgrades from 1 to get_property("telescopeUpgrades").to_int() if (aid.group(1).equals("use") && aid.group(2) == get_property("telescope"+tUpgrades).to_int() && available_amount(aid.group(2).to_item()) == 1)
return false
}
switch(aid.group(1)+aid.group(2)) {
charred
02-13-2012, 11:57 PM
bale, youre awesome. i wasnt upset. love your scripts!
Thank you.
Shouldn't be too troublesome... whipped this up in a few minutes.
You are confused. That will not work at all. If you had a telescope you'd know that the value of telescope3 is not "fancy bath salts", but "see a slimy eyestalk" so I'd need to write a lookup function to convert the later into the former. That's the troublesome part, though I can crib that from my campground.ash so it wouldn't be too hard.
Anyway, it might be for the best to stop the script from automatically expending anything you only have 1 of, so I'm not likely to "fix" this.
Theraze
02-14-2012, 12:14 AM
Ah... sorry. Yeah, not having a telescope, I have no clue what mafia saves to its preferences. I suppose I should probably have ripped into the code, but... meh. Found out I didn't get a job I wanted today, so I'm feeling lazy-ish. :)
Looked and TelescopeCommand is where all that lives. Is it worth requesting that SorceressLairManager.findGateByDescription, SorceressLairManager.gateName, SorceressLairManager.gateEffect, SorceressLairManager.findGuardianByDescription, and SorceressLairManager.guardianItem actually get exposed so we don't need to keep static lists, or... are static lists good enough?
Catch-22
02-14-2012, 04:08 AM
Function 'group( int )' undefined. This script may require a more recent version of KoLmafia and/or its supporting scripts. (DestroyAllMonsters.ash, line 71)
Consult script 'DestroyAllMonsters.ash' not found.
You're on your own, partner.
Using r10482.
Theraze
02-14-2012, 04:33 AM
Change the spots with just group to aid.group. You need to do it twice in that line...
Oh.... Bugger!
Updated new version... again.
lostcalpolydude
02-14-2012, 09:22 AM
If you have exactly 2 of a non-reusable item, will DAM funksling both of them?
If you have exactly 2 of a non-reusable item, will DAM funksling both of them?
No funkslinging support, so it's not possible. Sorry.
chown
02-14-2012, 01:19 PM
I've been getting lots of the following with the past few versions. Any idea what's up? Do other folks get this?
Request 1 of 142 (Pyramid: The Middle Chamber) in progress...
[867] The Middle Chamber
Encounter: Iiti Kitty
Strategy: /media/0928-5C4C/kol/kolmafia/ccs/fight_optimizer.ccs [default]
Round 0: chown wins initiative!
You have the latest batfactors.txt. Will not check again today.
Checking for updates (running BatBrain ver. 1.16)...
Running BatBrain version: 1.16 (current)
Checking for updates (running SmartStasis ver. 3.11)...
Running SmartStasis version: 3.11 (current)
Checking for updates (running Destroy All Monsters ver. 0.3.3.4)...
Running Destroy All Monsters version: 0.3.3.4 (current)
You have the latest pluralMonsters.txt. Will not check again today.
Run SmartStasis! (25 profit to stasis with Suckerpunch -- good enough)
You have the latest use_for_items.txt. Will not check again today.
Round 1: chown executes a macro!
Round 1: chown tries to steal an item!
Round 2: chown executes a macro!
Round 2: chown casts SUCKERPUNCH!
Round 3: iiti kitty takes 1 damage.
Round 3: iiti kitty drops 1 attack power.
Round 3: iiti kitty drops 1 defense.
Round 3: gcc paws at the ground for a second, and then charges your opponent, bashing her for 20 damage.
Round 3: iiti kitty takes 20 damage.
Round 3: chown executes a macro!
[... SUCKERPUNCH! xN ...]
Round 23: chown casts SUCKERPUNCH!
Round 24: iiti kitty takes 1 damage.
Round 24: iiti kitty drops 1 attack power.
Round 24: iiti kitty drops 1 defense.
Round 24: gcc coos softly, and nuzzles you with his beak.
You gain 25 hit points
You gain 25 Mojo Points
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 3, dierounds: 356)
Round 24: chown executes a macro!
Round 24: chown casts ENTANGLING NOODLES!
Round 25: gcc squawks loudly and runs in a circle around your opponent. She looks a little bit confused.
Round 25: iiti kitty drops 6 attack power.
Round 25: iiti kitty drops 6 defense.
Round 25: chown executes a macro!
KoLmafia thinks it is round 26 but KoL thinks it is round 25
DestroyAllMonsters was unable to figure out a useful combat strategy
You're on your own, partner.
Click here to continue in the relay browser.
Theraze
02-14-2012, 02:05 PM
Yeah... it means that SmartStasis tried to stasis for too long for DAM to come up with a guaranteed safe solution. Unfortunately. The only real fix, currently, is to manually edit your SmartStasis script to abort and hand control back to DAM sooner, but...
Often, it's related to the bug where, despite reaching full health/mana and being beyond round 10 so that the only benefit to stasis is a minor damaging of the enemy, SmartStasis likes to continue onwards. All of this is, however, related to SS, not DAM. So you're likely to get better results on that thread... :)
Valliant
02-14-2012, 04:26 PM
I'm having a similar issue, but it's happening when the monster only has a few HP left... perhaps something to do with the expected vs. encountered monster HP?
[514] F'c'le
Encounter: cleanly pirate
Strategy: F:\Games\KoL\KoLmafia\ccs\default.ccs [default]
Round 0: ililili wins initiative!
Run SmartStasis! (-2 profit to stasis with Suckerpunch -- low)
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 4, dierounds: 29)
Destroy with: attack
Destroy with: attack
Destroy with: attack
Destroy with: attack
Round 1: ililili executes a macro!
Round 1: ililili attacks!
Round 2: cleanly pirate takes 37 damage.
You lose 16 hit points
Destroy with: attack
Destroy with: attack
Round 2: ililili executes a macro!
Round 2: ililili attacks!
Round 3: cleanly pirate takes 26 damage.
Round 3: ililili attacks!
Round 4: cleanly pirate takes 35 damage.
Round 4: ililili executes a macro!
KoLmafia thinks it is round 5 but KoL thinks it is round 4
DestroyAllMonsters was unable to figure out a useful combat strategy
You're on your own, partner.
Click here to continue in the relay browser.
I'm aware of the problem and you're correct about the cause. I've been giving the solution some thought, but so far I haven't come up with any potential answers other than asking zarqon for new BatBrain features or working outside of BatBrain since it won't do much if it is convinced the monsters has no HP.
Theraze
02-15-2012, 12:57 AM
Since someone said the maximum swing is +-5, any chance DAM can try to overkill all monsters to -5 hp?
chown
02-15-2012, 02:38 AM
Hmm. That explanation sounds good, but I'm not 100% convinced. It looks like I neglected to copy the last bit of the battle, but all I had to do to finish the battle was attack a single time! Other cases aren't always that extreme, but generally the combat can be completed with a small number of attack-with-weapons. So, although I can definitely believe that SS ought to have stopped earlier, I'm still surprised that DAM was unable to figure out how to finish the battle in 5 rounds.
Since someone said the maximum swing is +-5, any chance DAM can try to overkill all monsters to -5 hp?
BatBrain actually makes that hard for me to do. You could say it is too helpful so I'd need to work with less help from it.
Winterbay
02-15-2012, 07:49 AM
You could loop until you have a win I guess because if the monster is still alive after the run it probably have quite little health left and as such a small trivial skill may be able to kill it (WHAM usually finishes the monster off in such cases by toss or salsaball or something similar).
Theraze
02-15-2012, 01:35 PM
Yeah... my only request there is that hopefully DAM would request something that actually overkills, because especially in the case of casters, I've repeatedly died when it thought it could finish things off using spaghetti spear because it was free and would just finish things off, and it ends up being JUST a tiny bit too little. I'd much rather have ravioli and stream as the go-to spells over spaghetti and salsaball, if I'm not in any sort of meatflow/manaflow problem.
garbled
02-15-2012, 05:57 PM
Yeah, I would prefer that when DAM gets to the point where it's going to give up, it instead just start spamming big attacks. My char has saucegeyser, fearful fettucini, etc. Why not just start bombing those until combat ends? I like using DAM in automation, but it sucks if occasionally it gives up an easily winnable combat and I have to fix it. (especially if it's running on a day when I'm not home, and can't fix it)
Theraze
02-15-2012, 07:12 PM
Well, when it stops, my current strategy is a "use_skill ravioli" or something similar. Love that use_skill alias.
alexsqian
02-19-2012, 05:07 AM
DAM seems to like using saucegeyser a lot, even when it's perfectly safe to just regularly attack.
DestroyAllMonsters starts now! (0mp option attack -- killrounds: 3, dierounds: 237)
Destroy with: Saucegeyser
Destroy with: Saucegeyser
Any way around this? Other than lowering your mp threshold to around 10%
EDIT: Oh, actually, the next few monsters it fought it attacked normally. And then it went to Saucegeyser again for a couple monsters.
Winterbay
02-19-2012, 08:00 AM
What monster was it? Were you perhaps in the Giant's castle? If so DAM will avoid using attack on the giant that gives you that annoying cuncatitis-effect.
Theraze
03-08-2012, 02:26 PM
Just a quick note regarding using DAM with Boris: You'll probably want to add Mighty Axing and Cleave (11000 and 11001) to the Cunctatitis avoidance. Makes the Giant Castle ever-so-much less frustrating. :)
Does this script actually work in BorisCore? I honestly haven't tried since so many of the skills have unspaded to-hit bonuses.
Theraze
03-09-2012, 02:15 AM
Works decently well, especially if you end up getting Belch and Cleave. It doesn't use Broadside often (ever?), since that's more similar to noodles which gets special handling, but for spaded monsters (which could read, not Mountain Men, which are spaded but not in mafia yet because Darzil's post got lost in the shuffle), it does decent. Not as good as manual, but it gets the job done.
Winterbay
03-09-2012, 04:21 AM
WHAM is sort of modified for AoB support. When it comes to Broadside I've had WHAM use it when SS needs to stun before IDing things and changed the code to the entangling-noodles stuff in SS to:
if (round < maxround && !is_our_huckleberry() && (get_action($skill[entangling noodles]).stun > 0 || get_action($skill[broadside]).stun > 0) &&
m_dpr(0,0)*2*meatperhp > mp_cost($skill[entangling noodles])*meatpermp)
{
if(have_skill($skill[entangling noodles]))
{
macro(get_action($skill[entangling noodles]));
}
else
{
macro(get_action($skill[broadside]));
}
}
zarqon
03-09-2012, 07:28 AM
The beta release of the new BB accounts for as much as it can at the moment, and I'm seeing mostly useful results in my current Trustycore run. Its use (or lack thereof) of Broadside is its biggest failing at the moment, since BB is still not particularly useful for predicting combinations of actions without adding them to the queue to do so. I'm going to give Winterbay's code a try.
Winterbay
03-09-2012, 07:44 AM
It basically says that if you would've used Noodles and have Broadside, use that which seemed to work fine last round when I had Broadside. Doing a more song oriented run this time so have not got that skill now :)
Crowther
03-09-2012, 09:16 PM
Works decently well, especially if you end up getting Belch and Cleave. It doesn't use Broadside often (ever?), since that's more similar to noodles which gets special handling, but for spaded monsters (which could read, not Mountain Men, which are spaded but not in mafia yet because Darzil's post got lost in the shuffle), it does decent. Not as good as manual, but it gets the job done."Decently well" has been my experience too. A few times it under hit, using the zero-MP skill, when bellow would have been better (pirates?) and a few times it said I couldn't defeat the monster when bellow-cleave was available and that combination massively over killed the monster. Basically, I let DAM go until it fails, then switch to a fixed CCS for a while, then back later. I'd say I was running DAM at least 95% of the time. It does better than I would, because I'm seriously lazy about clicking.
Crowther
03-13-2012, 03:29 AM
Ha! I messed up my setup, and well, it seems I can't play "decently well" as Boris without DAM. DAM and SmartStasis are impressive even there.
I made a bunch of mistakes and now understand that knowing exactly when to use intimidating bellow is tough to calculate. For example I wasted a lot of meat on healing today. Lots.
Weatherboy
03-25-2012, 07:56 PM
How would I go about adding special handing to DAM? Say, I wanted to set up a condition where if I have a star chart for each star item still in goals, I want to banish the astronomer? ;) Or, basically, any monster that doesn't drop a goal up to 3 per location, cuz, well, that's the way I'm rolling with Banishing Shout. :D
BladeLight
03-26-2012, 04:47 AM
WARNING: Unreachable code (DestroyAllMonsters.ash, line 115)
WARNING: Unreachable code (DestroyAllMonsters.ash, line 298)
WARNING: Missing return values in boolean functions will soon become an error (DestroyAllMonsters.ash, line 514)
Everything works fine afterwards and it only happens once per mafia session so I assume it's something to do with updating?
It's just a warning that mafia will eventually become less tolerant of certain coding practices. I suppose I'll at least update the script not to get those warning before it becomes a problem.
FortyCakes
03-26-2012, 03:45 PM
Is there a fallback of "cast Wave of Sauce" anywhere? I keep seeing DAM try to cast Wave although I don't have it; this seems to only occur when DAM has left a fight that it could easily win (e.g. monster has ~5% hp left and I have enough mana for Weapon of the Pastalord) with the message
KoLmafia thinks it is round 26 but KoL thinks it is round 25
DestroyAllMonsters was unable to figure out a useful combat strategy
You're on your own, partner.
and then I've restarted it:
Validating adventure sequence...
Round 26: dehdrol casts WAVE OF SAUCE!
[2853] Giant's Castle
KoLmafia thinks it is round 27 but KoL thinks it is round 25
Round 27: dehdrol casts WAVE OF SAUCE!
KoLmafia thinks it is round 28 but KoL thinks it is round 25
Round 28: dehdrol casts WAVE OF SAUCE!
KoLmafia thinks it is round 29 but KoL thinks it is round 25
Round 29: dehdrol casts WAVE OF SAUCE!
When I go into the relay to fix it, the page is returning "You don't have that skill" as usual.
EDIT: Never mind, found the reason. I had
[ default ]
consult DestroyAllMonsters.ash
skill wave
fronobulax
03-26-2012, 05:04 PM
EDIT: Never mind, found the reason. I had
I was gonna tell you that. I don't know how many times I have forgotten to change my CCS when I switch between classes on Ascension so at least you know you are not alone ;-)
Weatherboy
03-31-2012, 03:51 AM
I noticed that DAM wasn't removing Bifurcating Blow from the queue during the cooldown timer. There is an associated effect, Foe-Splattered, lasts 20 turns, but reported can be soft-greened/hot tubbed away.
I think that should be reported in the BatBrain thread. It shouldn't provide Bifurcating Blow as an opt if you are Foe-Splattered.
zarqon
03-31-2012, 07:49 AM
Got it -- will add that to the upcoming BB update (out today I hope).
With the new BB/SS updates, I'm getting:
[206935] Giant's Castle
Encounter: Alphabet Giant
Strategy: /home/na/.kolmafia/ccs/default.ccs [default]
Round 0: lieutenant pepper wins initiative!
WARNING: Unreachable code (DestroyAllMonsters.ash, line 115)
Function 'enqueue( advevent, string )' undefined. This script may require a more recent version of KoLmafia and/or its supporting scripts. (DestroyAllMonsters.ash, line 146)
Consult script 'DestroyAllMonsters.ash' not found.
You're on your own, partner.
Click here to continue in the relay browser.
Script is updated for current version of BB/SS. Thanks to a new SS feature it now attempts to kill the monster in a single macro submission to save page loads. As a result there is no longer a clear division between SS and DAM. It now announces all DAM decided actions before submitting the macro, everything else is SS's fault.
This script needs so much work to take advantage of new BatBrain features! I really wish I had the time for that right now, but I do not. Once I have the spare time I will make this script wonderful.
Theraze
04-02-2012, 10:02 PM
Regarding DAM giving up on easily winnable fights as per above, I find part of the problem is objects like the spectre scepter, which have a 50/50 chance of causing damage, but the other actions are considered to be profit. However, there's a 50% chance when using them of being hit, which isn't considered in the cost benefit analysis by BatBrain (or maybe it is, and DAM picks it anyways, not sure). But yes, if you get hit, it will hurt more than the paltry healing or delevel will benefit you.
Solution? Closet your spectre sceptre. Maybe closet your gnomitronic hyperspatial demodulator, if you have one and it keeps getting picked. Once the 0 mana minimal damage items were closetted, DAM moved on from flinging the scepter to using Mighty Axing (I'm in an AoB run) to mightily overkill the enemy, but also giving me some extra muscle substats, which is nice.
Is this a DAM bug or a BB bug? Probably. :) I'd guess that it's BB's fault for not considering that, if the damage fails or isn't quite enough, I'm taking a full hit. But DAM is the one that picks spaghetti spears and gets my casters killed, so it might fall under the DAM bug-side. Eh.
Just updated version 0.3.5.1 with support for intelligent bellowing to be a better Avatar of Boris.
Theraze, the new version will never again try to kill a monster with your spectre scepter so you can stop worrying about keeping it in your closet. Please tell me more about how you die while using spaghetti spear.
Theraze
04-05-2012, 01:58 PM
Awesome! I can remove those from the closets, since all my characters closetted their scepters after that post. :)
When spaghetti spear killed me, it was because DAM believed that BB was telling it accurately how many HP the monster had and it was actually a TINY bit healthier, so while DAM exactly 'killed' the monster, the monster was strong enough to kill me in actual fact. :)
Edit: Something odd with the new 0.3.5.1 version:
You acquire an item: Knob Goblin pants
You gain 3 Strongness
You gain 1 Mysteriousness
You gain a Mysticality point!
Look! You found 1 Knob Goblin pants (30μ)!
Look! You found 1 Knob Goblin pants (30μ)!Anytime I get an item, it apparently displays twice. This appears to be act() running twice...
Theraze
04-06-2012, 08:10 PM
Still getting the double item messages I noted in post 185, but...
Destroy with: Cleave
Round 1: Somybode executes a macro!
Round 1: Somybode casts CLEAVE!
Round 2: iiti kitty takes 147 damage.
Destroy with: spectre scepter
Round 2: Somybode executes a macro!
Round 2: Somybode uses the spectre scepter!
You gain 5 hit points
You lose 58 hit points
Round 3: Somybode executes a macro!
KoLmafia thinks it is round 4 but KoL thinks it is round 3
DestroyAllMonsters was unable to figure out a useful combat strategy
You're on your own, partner.
Click here to continue in the relay browser.Apparently it's still needing to be closetted. Killed it with a single mighty axing after automation ended.
version 0.3.5.2
I believe I found and fixed both errors. You should not need to closet your scepter. No promises about spaghetti spear yet. That's a little bit trickier.
Theraze
04-10-2012, 08:09 PM
Thanks, both of those appeared to be happy. :) Did find a new issue tied into run-aways though:
Custom action: use 2956 (stun first with skill 11003)
Destroy with: Mighty Axing
Round 1: Theraze executes a macro!
Round 1: Theraze casts BROADSIDE!
Round 2: Theraze uses the cocktail napkin!
DestroyAllMonsters was unable to figure out a useful combat strategy
You're on your own, partner.Happens every time it escapes from a clingy pirate. DAM ends the fight, but thinks that the fight is going on and it just can't finish. Is this a BatBrain finished() bug or a DAM issue?
It would have known that the fight was finished if finished() returned true, so I guess it counts as a batbrain bug. I could work around it though if I had the text for escaping from a clingy pirate.
BladeLight
04-26-2012, 04:55 AM
I've noticed that the script doesn't use sauce synergy properly, is it supported or does it just not work?
for example:
Visit to Beanstalk: Giant's Castle in progress...
[1599] Giant's Castle
Encounter: Goth Giant
Strategy: C:\Users\User\Documents\KOL\ccs\auto.ccs [default]
Round 0: DracoTrainer wins initiative!
Round 1: DracoTrainer executes a macro!
KoLmafia thinks it is round 2 but KoL thinks it is round 1
Destroy with: Saucegeyser
Destroy with: Stream of Sauce
Destroy with: Gnomitronic Hyperspatial Demodulizer
Round 2: DracoTrainer executes a macro!
Round 2: DracoTrainer casts SAUCEGEYSER!
KoLmafia thinks it is round 3 but KoL thinks it is round 2
Round 3: goth giant takes 137 damage.
You gain 33 hit points
You gain 8 Mana Points
Round 3: DracoTrainer casts STREAM OF SAUCE!
Round 4: goth giant takes 23 damage.
You gain 3 hit points
You gain 1 Mana Point
You acquire an effect: Burning Hands (duration: 1 Adventure)
Round 4: DracoTrainer uses the Gnomitronic Hyperspatial Demodulizer!
Round 5: goth giant takes 13 damage.
You acquire an effect: Super-Mega-Ultra-Charged (duration: 5 Adventures)
Round 5: DracoTrainer wins the fight!
After Battle: Lucky winks at you.
You gain 580 Meat
You gain 7 Strongness
You gain 27 Magicalness
You gain 8 Sarcasm
It is supported. If it didn't say "Destroy will attempt to use Saucesplashing" then it didn't believe that it would work. That could be caused by a number of things, but is mostly likely because your bonus spell damage is less than +25.
BladeLight
04-26-2012, 07:48 AM
It is supported. If it didn't say "Destroy will attempt to use Saucesplashing" then it didn't believe that it would work. That could be caused by a number of things, but is mostly likely because your bonus spell damage is less than +25.
I feel so stupid...
version 0.4
This is an important update! I'm finally making real use of BatBrain's predictive abilities to compare and contrast different strategies. It should even figure out if the MP cost for using Broadside is worthwhile to keep from being hit.
Also, I am forcing Boris to use Mighty Axing instead of Attack to workaround a currently existing bug in BatBrain.
Please let me know if it is working well.
Edit: One thing to note is that DAM is no longer distinguishing between actions it chooses and actions SS chooses, so I'll just deal with the increased influx of confusing bug reports. The two things are just too tightly entwined now.
Theraze
04-26-2012, 10:15 PM
Haven't checked, but does DAM 0.4 have awareness that attack is better than Mighty Axing on the Bonerdagon and NS, due to not being blocked?
Haven't checked, but does DAM 0.4 have awareness that attack is better than Mighty Axing on the Bonerdagon and NS, due to not being blocked?
No, no it does not...
version 0.4.1
Yes, it does.
Theraze
04-27-2012, 04:00 AM
Latest DAM loops rather hard on pirate insults...
[779] Barrrney's Barrr
Encounter: tetchy pirate
Round 0: Theraze wins initiative!
Round 1: Theraze uses the The Big Book of Pirate Insults!
Pirate insults known: 7 (62.50%)
You acquire an effect: Embarrassed (duration: 1 Adventure)
You lose 23 hit points
ATT: 94 (94% × 42.02, death in 4)
DEF: 86 (95.45% × 92.47, win in 2)
HP: 83, Value: 300.61 μ
Profit per round: ActionProfitDamageOtherbase (0μ)0μ--
Custom action: use 2947 (stun first with skill 11003)
Custom action: use 2947 (stun first with skill 11003)
Custom action: use 2947 (no stun)
Custom action: use 2947 (stun first with skill 11003)
Custom action: use 2947 (no stun)
Macro: Broadside
Macro: The Big Book of Pirate Insults
Macro: Mighty AxingActually, seems to happen anytime it uses an item, since cocktail napkin did the same.
Edit: Unrelated to above, but... might want to increase the SS function's stasis safe round amount. I was finding that with relatively weak enemies, it would stasis until round 25 or 26, because I could kill the mob in a single round... however, DAM aborts if you have less than 5 rounds remaining. Easiest fix would be setting the round - 3 to round - 5 or so, to guarantee at least a single round. Personally though, I turn it to round - 15. :) Once I've got the meat, I don't really care about stasis-ing to make up the MP I'm spending stasis-ing. It just seems rather stupid to keep using saucy salve when I have full health and full mp just to try to get back up to full health and mp.
I thought I had successfully tested it on Pirates... sigh.
Edit: Unrelated to above, but... might want to increase the SS function's stasis safe round amount. I was finding that with relatively weak enemies, it would stasis until round 25 or 26, because I could kill the mob in a single round... however, DAM aborts if you have less than 5 rounds remaining.
Actually, I just copy/pasted that "maxround - 3" from SmartStasis so it is exactly the same! I should probably change that to "maxround - safetyMargin" like everything else in DAM. Just for consistency.
zanmatoer
04-27-2012, 11:06 AM
Got an issue: adventuring without Trusty equipped so I can use a Frosty Halo, but Mighty Axing doesn't work if Trusty isn't equipped. This means DAM (and WHAM, actually) try to use Mighty Axing repeatedly even though it's doing nothing.
Maybe add in another exception to your "force Boris to use Mighty Axing instead of Attack" rule?
Thanks!
Winterbay
04-27-2012, 12:26 PM
Hmm... Yes. Good catch :)
Version 2.0.2 of WHAM should not do this at least.
Theraze
04-27-2012, 07:37 PM
Item bug does still appear to be around, unfortunately.
[573] Haunted Bedroom
Encounter: chalkdust wraith
Strategy: C:\Program Files (x86)\KoLMafia\ccs\default.ccs [default]
Round 0: Theraze wins initiative!
ATT: 20 (6% × 1, death in 3600)
DEF: 18 (95.45% × 139.47, win in 10)
HP: 10, Value: 252.13 μ
Profit per round: ActionProfitDamageOtherbase (0μ)0μ--
Custom action: use 819 (no stun)
Custom action: use 820 (no stun)
Custom action: use 821 (no stun)
Custom action: use 822 (no stun)
Custom action: use 823 (no stun)
Custom action: use 824 (no stun)
Custom action: use 825 (no stun)
Custom action: use 826 (no stun)
Custom action: use 827 (no stun)
Custom action: use 819 (no stun)
Custom action: use 820 (no stun)
Custom action: use 821 (no stun)
Custom action: use 822 (no stun)
Custom action: use 823 (no stun)
Custom action: use 824 (no stun)
Custom action: use 825 (no stun)
Custom action: use 826 (no stun)
Custom action: use 827 (no stun)
Custom action: use 819 (no stun)
Custom action: use 820 (no stun)
Custom action: use 821 (no stun)
Custom action: use 822 (no stun)
Custom action: use 823 (no stun)
Custom action: use 824 (no stun)
Custom action: use 825 (no stun)
Custom action: use 826 (no stun)
Custom action: use 827 (no stun)
Custom action: use 819 (no stun)
Custom action: use 820 (no stun)
Custom action: use 821 (no stun)
Custom action: use 822 (no stun)
Custom action: use 823 (no stun)
Custom action: use 824 (no stun)
Custom action: use 825 (no stun)
Custom action: use 826 (no stun)
Custom action: use 827 (no stun)
Custom action: use 819 (no stun)
Custom action: use 820 (no stun)
Custom action: use 821 (no stun)
Custom action: use 822 (no stun)
Custom action: use 823 (no stun)
Custom action: use 824 (no stun)
Custom action: use 825 (no stun)
Custom action: use 826 (no stun)
Custom action: use 827 (no stun)
Macro: milky potion
Macro: swirly potion
Macro: bubbly potion
Macro: smoky potion
Macro: cloudy potion
Macro: effervescent potion
Macro: fizzy potion
Macro: dark potion
Macro: murky potion
Macro: Mighty Axing
Macro: Mighty Axing
Macro: Mighty Axing
Macro: Mighty Axing
Macro: Mighty Axing
Macro: Mighty Axing
Macro: Mighty Axing
Macro: Mighty Axing
Macro: Mighty Axing
Macro: Mighty Axing
Round 1: Theraze executes a macro!Any chance custom actions are being displayed when it's speculating, not just when they're selected as the final action? It appears to only use each !potion once, even though it keeps showing them over and over.
Item bug does still appear to be around, unfortunately.Any chance custom actions are being displayed when it's speculating, not just when they're selected as the final action?
That's because your verbosity is turned up. Assuming you're talking about the first section.
Theraze
04-28-2012, 01:18 PM
Verbosity is only set to 5, which gives minimal additional debugging information. Normally. Things like estimated profit per round, the fact you don't have any stasis items, and... that's it, according to what I see added between default (3) and mine (5) in my copy of DAM.
Looks like the issue is that you're repeatedly calling enqueue_custom() instead of calling it once, as happened before DAM 0.4, and every time you call that, it gives the full list of custom actions that WILL happen.
The only spot where... hmm... looks almost like that's backwards in SS. I'll query it there, but... basically, before DAM 0.4, I don't think anything would repeatedly call enqueue_custom as a speculative consideration.
Edit: My current fix is copying the enqueue_custom function from SS into DAM, renaming it to enqueue_custom_dam, and removing the vprint line completely, since I have no way of knowing which of the 4 versions of EC will actually get called, making it a useless report. Removes the incorrect custom-promise, at least.
Also been getting these failures sometimes when DAM fails to kill a mob:
Macro: Intimidating Bellow
Macro: Cleave
Round 1: Theraze executes a macro!
Round 1: Theraze casts INTIMIDATING BELLOW!
Round 2: furry giant drops 19 attack power.
Round 2: furry giant drops 19 defense.
You lose 36 hit points
Round 2: Theraze casts CLEAVE!
Round 3: furry giant takes 150 damage.
You lose 36 hit points
Macro called on empty queue!
Macro called on empty queue!
Macro called on empty queue!
Macro called on empty queue!
Begin index 6 out of bounds (DestroyAllMonsters.ash, line 34)
You're on your own, partner.
Click here to continue in the relay browser.
mredge73
05-01-2012, 02:08 AM
I am getting this a bunch with the latest version:
[607] Haunted Bedroom
Encounter: animated nightstand
Round 0: mredge73 wins initiative!
ATT: 172 (94% × 86.29, death in 4)
DEF: 155 (95.45% × 32.0, win in 7)
HP: 185, Value: 980.48 μ
Profit per round:
Action
Profit
Damage
Other
base (0μ)
0μ
--
Macro called on empty queue!
Macro called on empty queue!
Macro called on empty queue!
Macro called on empty queue!
Begin index 6 out of bounds (destroyallmonsters.ash, line 34)
You're on your own, partner.
Also; it is not working in the junkyard quest for some reason. I had to switch to regular SS.
Donavin69
05-01-2012, 10:29 PM
I'm having an issue where DAM is choosing a physical damage skill against a physically resistant mob (this one being the snow queen)
Attack action chosen: skill 3008 (round 6, profit: -0.89)
Stun action chosen: skill 3004 (round 6, profit: -0.11)
Queued: skill 3004
Attack action chosen: Weapon of the Pastalord
Queued: skill 3008
Constructed macro: scrollwhendone; sub batround; endsub; skill 3004; call batround; skill 3008; call batround;
Attack action chosen: Weapon of the Pastalord
Queued: skill 3008
Constructed macro: scrollwhendone; sub batround; endsub; skill 3008; call batround;
Queued: skill 3004
Attack action chosen: Weapon of the Pastalord
Queued: skill 3008
Constructed macro: scrollwhendone; sub batround; endsub; skill 3004; call batround; skill 3008; call batround;
Attack action chosen: Weapon of the Pastalord
Queued: skill 3008
Constructed macro: scrollwhendone; sub batround; endsub; skill 3008; call batround;
Macro: Weapon of the Pastalord
Round 6: damuri executes a macro!
Round 6: damuri casts WEAPON OF THE PASTALORD!
Round 7: snow queen takes 1 damage.
after a couple rounds like this it will abort and I can use an elemental spell against her....
*edit* I just tried with WHAM, and have the same result, maybe it is a batbrain bug?
Valliant
05-05-2012, 06:07 AM
So I'm having an issue I don't quite know how to describe...
[3495] Tavern Cellar (row 5, col 2)
Encounter: Hot and Cold Running Rats
Encounter: drunken rat
Strategy: F:\Games\KoL\KoLmafia\ccs\default.ccs [default]
Round 0: ililili wins initiative!
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found E-8
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found E-8
Macro: Miniborg Destroy-O-Bot
Macro: whimpering willow bark
Macro: cup of hickory chicory
Macro: cup of hickory chicory
Macro: cup of hickory chicory
Macro: whimpering willow bark
Macro: whimpering willow bark
Macro: spices
Round 1: ililili executes a macro!
Round 1: ililili uses the Miniborg Destroy-O-Bot!
Round 2: drunken rat takes 28 damage.
Round 2: drunken rat drops 4 attack power.
Round 2: drunken rat drops 3 defense.
Round 2: ililili wins the fight!
You gain 9 Meat
You acquire an item: rat whisker
You acquire an item: rat appendix
You gain 1 Chutzpah
DestroyAllMonsters is taking a final shot.
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Evaluator syntax error: expected ), found E-8))))
Expression syntax error for 'modifier_eval()': expected end, found E-8))))
Evaluator syntax error: expected ,, found E-8*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
DestroyAllMonsters was unable to figure out a useful combat strategy
You're on your own, partner.
I have the latest versions of DAM, BB and so on, and the latest .jar. I'm not having issues in other zones, just in using the rat tap.
Try erasing the batfactors file, to force it to be updated.
Theraze
05-05-2012, 02:41 PM
I get the same error. It happens with specific monsters throughout the world, I reported it back on post 727 in the BatBrain thread (http://kolmafia.us/showthread.php?6445-BatBrain-a-central-nervous-system-for-consult-scripts&p=73725&viewfull=1#post73725), but it hasn't met with any response. It happens for specific monsters in the world, the monsters themselves might vary depending on the day (but remain consistent that day), and will always happen when that monster is regardless of character. However, the specific number varies sometimes for different monsters... the Knob Goblin Madam might be -6, but Cubist Bulls might be -7. To throw out example monsters without being sure they actually cause specific error. :)
But updating batfactors didn't help.
Could that E-# come from a badly converted floating point number? (i.e. 0.00000001 = 1E-8)
Hard to tell, since the error doesn't display the entire expression (and offset) for context.
Theraze
05-06-2012, 02:01 AM
Looks possible...
> ash (0.000001)
Returned: 1.0E-6But without the whole expression, it's really hard to guess...
Magus_Prime
05-11-2012, 11:27 AM
I keep forgetting to report this and it only seems to happen with Goth Music Students in the Haunted Conservatory. I haven't had a chance to track it down to where it's happening yet either (scriptwise)
458] Haunted Conservatory
Encounter: confused goth music student
Strategy: E:\software\Kol\ccs\default.ccs [default]
Round 0: Arbos wins initiative!
Evaluator syntax error: expected ,, found E-6*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found E-6
Evaluator syntax error: expected ,, found E-6*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found E-6
Evaluator syntax error: expected ,, found E-6*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found E-6
Evaluator syntax error: expected ,, found E-6*6,1000)
Evaluator syntax error: expected ), found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found ,1000)
Expression syntax error for 'modifier_eval()': expected end, found E-6
Macro: Mighty Axing
Macro: Mighty Axing
Round 1: Arbos executes a macro!
Round 1: Arbos casts MIGHTY AXING!
Round 2: confused goth music student takes 331 damage.
FortyCakes
05-12-2012, 11:31 AM
Is there any chance you could make the script always save at least 1 of possible tower items (eg photoprotoneutron torpedoes)?
Theraze
05-12-2012, 02:09 PM
That's actually a BatBrain change that zarqon already has planned, not something that Bale needs to add to DAM.
And Magus_Prime, that's the same large-number bug that's actually a BatBrain bug, not a DAM bug (due to it using modifier_eval, which zarqon uses repeatedly but Bale doesn't... specifically, zarqon has an 'eval' function that gets called a LOT in BB), reported and talked through in posts 206-210. Yours was 211, and reported the same thing...
Is there any chance you could make the script always save at least 1 of possible tower items (eg photoprotoneutron torpedoes)?
The feature already exists. It actually saves 1 of every item, just in case.
Powered by vBulletin® Version 4.2.0 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.