The Neo-Cow Farming Script

Banana Lord

Member
Getting a strange error while running NeoCowFarm.ash (NOT neobountyhunting.ash): Bad location value: "Knob Goblin Treasury" (neobountyhunting.ash, line 418). Almost certainly due to the fiddling I've been doing, but I can't for the life of me work out what's causing it.
 

Banana Lord

Member
Huh. What do you know, mafia reads scripts in its /KoLmafia/ directory (I had a copy, but not in /scripts). Thanks for that, I was slowly going insane!
 

Banana Lord

Member
Thanks for that Bale! I'm a bit run off my feet at the moment but I'll do my best to maintain this too, with the help wonderful people who prevent insanity...
 

jwylot

Member
It's been a long time since any maintenance was done on these scripts so thanks for taking it on BL.

A couple of suggestions to save future effort, if I may.
First, let's scrap neolibram.ash and set the between battle script to bestbetween battlescript. Then replace the counter script with Bale's awesome and maintained Counter Checker script. It's pretty easy to configure mafia to burn off MP on summons, particularly if no mood is being used but Pyromania ( http://kolmafia.us/showthread.php?5610-Pyromania-mana-burning-fine-tuning&highlight=mana+burn ) gives pretty fine control.
 

Banana Lord

Member
The counter script has already been replaced with Bale's CounterChecker, it was one of the first things I did :D

How do you go about burning mana with librams with pyromania?

One thing I'd love to do is reduce the number of data files. I would suggest doing the same with the myriad of settings, but one of this script's strengths is its flexibility. What'd be better instead is if someone wrote up a variable editor specifically for this script to streamline the process of setting it up and adjusting it. Be neat if such a relay override included a descriptive line below each setting to clarify its function (I've already written such descriptors and put them in the documentation).
 
Last edited:

Bale

Minion
How do you go about burning mana with librams with pyromania?

Now KoLmafia will automatically include librams in its own manaburning routines if you have a libram (or all librams) in your breakfast settings. That's why my loginScript/logoutScript set and unset libramSkillsSoftcore. I want it set during my run for burning, but unset when I logout so that it doesn't spend all my mana during breakfast.

The preference manaBurningTrigger is particularly important since the difference between manaBurningTrigger and manaBurningThreshold will control how much will be used to summon a single libram item. However, pyromania merely reports on these and allows you to set them in the HP/MP Usage section of the UI.
 
Last edited:

Banana Lord

Member
Ah OK. I'll put that on the backburner for now as I have limited time and I'd rather get the script up and running before adding any new features or cleaning things up. I have a short break coming up in 5 weeks so I'll see where I am when I get there. I'll change the "Known Issues" section to "To do". If anyone wants something to do... Have a look there :D
 
Last edited:

Bale

Minion
Known Issues
  • Currently OCD Inventory Control must be called via cli_execute() as it shares a variable with EatDrink ("make").
LOL! That's one of the reasons that I changed my copy of EatDrink to modify all its variables though a cli_execute! That way my personal copy of EatDrink can be run in the same script as OCD! :)

  • The script will not add meat made farming to meat made through OCD's actions (I could use some help with this one)
Huh? What does OCD have to do with meat made through farming? Are you saying that you want OCD to report on prospective profits in a way that you can retrieve? I wouldn't mind changing the return value for ocd_control() to an integer, but that leaves you with the first problem... I'm not particularly inclined to go out of my way to support farmers. That's not why I wrote OCD.

  • Bountyhunting combat script has no way of telling whether or not the bounty monster you've got copied in your putty is the one for today or not. This is an issue if you have a monster left in your putty from bountying the day before which the script failed to clear. Will be fixed with a stopgap measure in v1.4.1.
I haven't looked over this script, but couldn't you just check get_property("spookyPuttyMonster") ?
 

Banana Lord

Member
LOL! That's one of the reasons that I changed my copy of EatDrink to modify all its variables though a cli_execute! That way my personal copy of EatDrink can be run in the same script as OCD! :)
Eurgh. I really don't feel up to messing with EatDrink :O

Are you saying that you want OCD to report on prospective profits in a way that you can retrieve?
Yep. I can understand why you wouldn't want to do that though.
I haven't looked over this script, but couldn't you just check get_property("spookyPuttyMonster") ?
Yes but I have no way of telling which monster I ACTUALLY want to be puttying on that day, so I can't use spookyPuttyMonster to decide if I want to putty it or just clear it out of my putty.

How do I update the version number of the script so that users know to update? Do I just update the version number at the top of the first post and near the top of NeoCowFarm.ash?
 
Last edited:

Bale

Minion
Yes but I have no way of telling which monster I ACTUALLY want to be puttying on that day, so I can't use spookyPuttyMonster to decide if I want to putty it or just clear it out of my putty.

Actually, this is reasonably simple.
PHP:
if(item_drops(get_property("spookyPuttyMonster").to_monster()) contains get_property("currentBountyItem").to_item())


How do I update the version number of the script so that users know to update? Do I just update the version number at the top of the first post and near the top of NeoCowFarm.ash?

If you're using zarqon's check_version(), then you need to update the part that looks like this:

[size=+1]The Neo-Cow Farming Script 1.4.1[/size]

The important thing about that is it is boldface. In check_version(soft, prop, thisver, thread) you supply a string soft that says "The Neo-Cow Farming Script". You then need to update whatever sequence of character/numbers that folllows it to be equal to thisver.

If you're not using zarqon's check_version, then whatever. I didn't read the script to find out.
 

Banana Lord

Member
Huh. There's a currentBountyItem property? Awesome!

It is using check_version. So it should look like this?
PHP:
check_version("The Neo-Cow Farming Script","NeoCowFarm","1.4.1",2583);
Because at the moment the script's telling me to update to version 1.3.4 from version 1.4.1 xD
 

Banana Lord

Member
So thinking about the code you posted above, could I use last_monster() in place of get_property("spookyPuttyMonster").to_monster() to determine if the monster I'm currently fighting will drop my county item? Because that would be a much neater way of doing things.
 

slyz

Developer
One thing I'd love to do is reduce the number of data files. I would suggest doing the same with the myriad of settings, but one of this script's strengths is its flexibility. What'd be better instead is if someone wrote up a variable editor specifically for this script to streamline the process of setting it up and adjusting it.
Apparently it already uses zlib vars that all all start with "neocowfarm_". That makes them easy to find and modify with a zlib var editor.

You could also whip up a relay script version where all the variables are configurable, from which the changes could be saved and the script launched. It would be a good exercise (you can look up the relay version of slime.ash or the relay script for configuring Universal_Recovery.ash).
 

Banana Lord

Member
ALMOST all of them do. If I recall correctly there're a handful to do with putty settings and suchlike further down (alphabetically speaking). Yeah, I was really just hoping that someone would whip something up and save me the trouble of figuring out how to write a relay script. It's something I've been intending to do, but it's not going to happen for quite a while!
 

Bale

Minion
So thinking about the code you posted above, could I use last_monster() in place of get_property("spookyPuttyMonster").to_monster() to determine if the monster I'm currently fighting will drop my county item? Because that would be a much neater way of doing things.

The monster you're currently fighting is being passed as a parameter to the combat consult script. Use that.
 
Top