Looking for birdform MP conserving script

StormCrow42

Member
Birdform Feather Generating, MP conserving script

Bale's FeatherExpress script


Many times during my ascensions, I find myself trying to get a roc feather in birdform without overexpending MP. While putting Talon Slash in the CCS works reasonably well, it isn't really a fire-and-forget method when trying to not overspend MP. I either use too many (when it takes more than one talon slash to kill an enemy), or run the risk or using too few (when one-shotting enemies in zones with non-combats).

I'm looking for a script that will do the following things:

1. Talon Slash only if I haven't done so 15 times already.
2. Wing Buffet once before the Talon Slash if I've fewer turns of birdform than I need Talon Slashes (bonus if I detect that I'll just catch up with Talon Slashes, extra bonus if I preemptively detect that I'm in a zone with non-combats and get ahead of the count just in case).

There should be a configurable (probably inside the script) maximum number of talon slashes to do per combat (so as to not overpace sources of automatic MP restoration).

I'm willing to offer a reward of one to several Mr. As, depending on the complexity of the script.

Ideally, it would be nice if the script would also farm for other feathers if asked, or be adaptable for that purpose. I don't know if you can pass arguments to a consult script to make it configurable in that way however,
 
Last edited:

Bale

Minion
I haven't done much work with consult scripts to this point, but this script looks like it might be fun to write and seems like a good opportunity for me to learn more about writing consult scripts. If nobody else wants to take on the request I'd be glad to figure it out, though it will take a bit of time since I will be learning on the job. Fortunately I've got a free multi to test it extensively. :D

There should be a configurable (probably inside the script) maximum number of talon slashes to do per combat (so as to not overpace sources of automatic MP restoration).
Actually I could check the numeric_modifier("MP Regen Min") and numeric_modifier("MP Regen Max") along with my_mp() to handle it automatically. At what rate would you like it to handle talon slashes/combat? Try not to exceed regen rate? Or how fast are you willing to run down current mp?

StormCrow42 said:
Ideally, it would be nice if the script would also farm for other feathers if asked, or be adaptable for that purpose. I don't know if you can pass arguments to a consult script to make it configurable in that way however,
You can't pass an argument to a consult script as far as I know. (It would be cool if you could have an argument in the CCS...) Please let someone else correct me if I'm wrong. However I could easily add a variable at the top of the script which would tell it what feature to create.

StormCrow42 said:
2. Wing Buffet once before the Talon Slash if I've fewer turns of birdform than I need Talon Slashes (bonus if I detect that I'll just catch up with Talon Slashes, extra bonus if I preemptively detect that I'm in a zone with non-combats and get ahead of the count just in case).
What are the wing buffets for? How do they help?

Also, if you don't talon slash, what should the default action be? Just attack with weapon?
 
Last edited:

StormCrow42

Member
Actually I could check the numeric_modifier("MP Regen Min") and numeric_modifier("MP Regen Max") along with my_mp() to handle it automatically. At what rate would you like it to handle talon slashes/combat? Try not to exceed regen rate? Or how fast are you willing to run down current mp?

My usual plan of attack when trying to conserve MP is to only talon slash once or twice per combat if I can manage it. But of course if I'm coming up on the end of birdform, I may do so more often (or if I'm in an area of very high non-combats). It's more of a feeling than something strictly tied to actual MP regen. Most often I'm hoping to get shimmering moths to pay for the later uses.

What are the wing buffets for? How do they help?

Wing Buffets are cumulative with Talon Slashes in getting to 15 for a roc feather. They just delevel, so you can stick one or more in before the talon slash to catch up or get ahead on your count if you're hitting non combats.

Also, if you don't talon slash, what should the default action be? Just attack with weapon?

When I'm conserving MP, yes the standard attack is usually what I fall back on. Best to fall out and let the CCS pick up from where you've left off.
 

Bale

Minion
When I'm conserving MP, yes the standard attack is usually what I fall back on. Best to fall out and let the CCS pick up from where you've left off.

Does that mean you'd do something like...

Code:
[default]
1: consult birdform.ash
10: attack
... so if birdform does nothing 9 times, then it will do whatever you have as the 10th action?
 

StormCrow42

Member
Does that mean you'd do something like...

Code:
[default]
1: consult birdform.ash
10: attack
... so if birdform does nothing 9 times, then it will do whatever you have as the 10th action?

Just something like:

1: consult birdform.ash
2: attack

I'm expecting the script to buffet or talon slash as many times as it needs to, and then exit. In theory, I could then have the CCS continue to talon slash if I was less concerned about MP (if I was a myst class and couldn't hit with a normal attack for example).

I'm divided on if the script should also look for shiny objects (aka pickpocket), or if it's best just to let mafia's "special actions" handling deal with that.
 

Bale

Minion
Can a consult script work like that? I was under the impression that it can only automate a single action. If I'm wrong, please let me know since I'm still learning about it.
 

therealtahu

New member
Can a consult script work like that? I was under the impression that it can only automate a single action. If I'm wrong, please let me know since I'm still learning about it.

FightOptimizer doesn't pass control over to the CSS even if I list action 2 manually.

I haven't tried FirstThingsFirst, but I believe it passes control to the CSS after it's done with what it needs to do. You'll probably have to ask zarqon about it.
 

Bale

Minion
Thanks! I'll check out how FightOptimizer does that. I've got a lot to learn about consult scripts, but I knew almost nothing about ash before I wrong Universal_recovery, so I know I'll figure it out.

I hope the request isn't too urgent.
 

StormCrow42

Member
Consult scripts can definitely do more than one action before exiting. I'm not entirely certain if they need to do at least somthing, but FirstThingsFirst seems to attack if it can't figure out something to do. I'm not certain if that's only required if it's the first action, or if it must always do something.

As for urgency, this is of course more of a "wouldn't it be nice to have" script.
 

therealtahu

New member
Feather attack count

I was trying to figure out a way to track the attacks used when I decided to skim through the character prefs. I noticed these properties.

birdformCold=0
birdformHot=0
birdformRoc=0
birdformSleaze=0
birdformSpooky=0
birdformStench=0

After some testing, I found out where the number in the sidebar beside form of...bird! comes from. With get_property, this may save you the trouble of finding a way to track the attack uses.

EDIT: I'm almost done the script, and I've added a little feature, RiskFactor. When the amount of turns decreases below Risk Factor, it will spam Wing Buffet until you're one away from finishing it. Then it will use a Talon Slash. I'll upload the basic version of what I have when I test it after rollover, and when I have time, I'll try to finish up and set the other feathers.
 
Last edited:

therealtahu

New member
I present....

PluckFeathers! Beta Version!

It includes RiskFactor! RiskFactor (definitely needs a better name) will prompt you if your turns of Birdform are below RiskFactor. If you choose yes, it will use as many wing buffets and one talon slash to bring the number of uses to the required number.

After it's finished, it will fall back and use a normal attack!

Unfortunately, I kill everything in one hit, so I wasn't able to test the MaxAttack value, or if TimesAttacked was correctly implemented. However, as far as I know, the script works and it doesn't break. If you happen to find it breaking, feel free to contact me on KoL under Therealtahu, or here.
 
Last edited:

StormCrow42

Member
I took a quick look and test with this script (with my way-overleveled aftercore character, so no checking yet on the multiple attacks/combat). My first impressions:

1. The "RiskFactor" check triggers on the common case of 15 combat adventures with a single talon slash per combat. This ends up with me having to answer "no" to the popup several times in a row.

2. The popup would make this script completely inappropriate for automated farming in aftercore.

3. There is no intelligence regarding current adventuring location, so no intelligent attempt to get ahead on the count.

The script seems to satisfy the very basics of my requirements, but certainly doesn't cover my entire wishlist or exhibit the greater intelligence of scripts like FirstThingsFirst/SmartStasis, or Universal_recovery.
 

therealtahu

New member
I took a quick look and test with this script (with my way-overleveled aftercore character, so no checking yet on the multiple attacks/combat). My first impressions:

1. The "RiskFactor" check triggers on the common case of 15 combat adventures with a single talon slash per combat. This ends up with me having to answer "no" to the popup several times in a row.

2. The popup would make this script completely inappropriate for automated farming in aftercore.

3. There is no intelligence regarding current adventuring location, so no intelligent attempt to get ahead on the count.

The script seems to satisfy the very basics of my requirements, but certainly doesn't cover my entire wishlist or exhibit the greater intelligence of scripts like FirstThingsFirst/SmartStasis, or Universal_recovery.
Hey, it is a beta version for a reason. There's much potential in the script. RiskFactor can be modified to suit your needs if you wish. I've decided to add an option to finish collecting early and disable the prompt. This should satisfy your first and second issues with this. There's no intelligence at the moment due to my lack of ash knowledge. I don't have an easy way to find out the combat frequency of each location.

Anyways, I've added the other elements, and I've done more extensive testing. There should be enough information in the script itself. Remember to actually modify it to suit what you want. If you're adventuring in an area with 100% combats, set RiskFactor and GetAhead to 0.

As for the other elements, you have to deal with eating the bugs yourself. This is a combat script and it isn't going to be responsible for eating the bugs.

This script auto aborts when:

1. You don't have the proper skill for the element type.
2. You didn't fill in the FeatherType properly.
 

Attachments

  • PluckFeathers.ash
    4.2 KB · Views: 40

StormCrow42

Member
Testing the latest version of your script, it doesn't appear to talon slash more than once. I don't see anywhere that it would loop to do so.

Sorry it took me so long to post back on this, but I've been a bit busy.
 

therealtahu

New member
Testing the latest version of your script, it doesn't appear to talon slash more than once. I don't see anywhere that it would loop to do so.

Sorry it took me so long to post back on this, but I've been a bit busy.

Actually, after I read through it again, I noticed that it would talon slash a maximum of two times, once if the enemy can take two hits, under GettingAhead(), and the second time would be under ChooseAttack(). I'll probably need to rework the code to handle MaxAttack being greater than two, but I've found that a MaxAttack of two is generally sufficient to take down most monsters at the farming stage.
 

StormCrow42

Member
Actually, after I read through it again, I noticed that it would talon slash a maximum of two times, once if the enemy can take two hits, under GettingAhead(), and the second time would be under ChooseAttack(). I'll probably need to rework the code to handle MaxAttack being greater than two, but I've found that a MaxAttack of two is generally sufficient to take down most monsters at the farming stage.

But it won't use the 2 talon slashes if it doesn't use GettingAhead(), I've watched it Talon Slash only once and then attack. In any event, I'm not primarily looking for this only as a farming script, but also as an in-run script.
 

Bale

Minion
Wanted to let you know that I've slowly been working on this.
Ideally, it would be nice if the script would also farm for other feathers if asked, or be adaptable for that purpose. I don't know if you can pass arguments to a consult script to make it configurable in that way however,
I had a good idea about that. How about if it checks your user preferences. Then you could change it by typing one of these lines in the CLI:
  • set birdGoal = Roc
  • set birdGoal = Buzzard
  • set birdGoal = Tit
  • set birdGoal = Penguin
  • set birdGoal = Phoenix
  • set birdGoal = Raven

How does that sound? You could also change it from within an ash script by using set_property(). Do you have something you'd prefer to "birdGoal"? Since you'd be typing it a lot, it ought to be something that you like.

At this time, if it is run without a birdGoal preference, it will create the preference and farm a Roc Feather. That way you only need to care about setting the preference if you sometimes want something other than a Roc Feather.

PS. And I've just figured out how to pull the combat percentage out of mafia's internal data so that I can properly work out the risk factor.
 
Last edited:

therealtahu

New member
  • set birdGoal = Roc
  • set birdGoal = Buzzard
  • set birdGoal = Tit
  • set birdGoal = Penguin
  • set birdGoal = Phoenix
  • set birdGoal = Raven
PS. And I've just figured out how to pull the combat percentage out of mafia's internal data so that I can properly work out the risk factor.
Nice to know. The reason why I have my things set to Roc, Hot, Cold etc, was because Mafia has the counters preset and I didn't want the script to filter out the feather type every battle.

I'd also love to know how to get the combat percentage from mafia. I have a very clumsy way of processing the data right now, but location names with numbers in them tend to trip up the script.
 
Top