Plugin: MQ2AASpend -- AutoAAspender plugin

Status
Not open for further replies.
id rather it wait, personally. otherwise it will not be able to purchase the high cost class ones and skip to the cheaper archetype/general.. which defeats the entire purpose. possible to make that an option you can toggle if you do implement it?
 
Level checks are already in there, it ignores (skips) if you don't meet the level req.

I know the requiresability stuff was taking out of mq2 (if it was ever actually in there, I don't recall), but either way, I'd have to chase down how to get it. (it's defined, just doesn't do anything - i.e., always NULL).

If we get a general consensus that in brute, abilities should be skipped if not enough points, that's fine - but that means it will just always purchase the cheapest first (in straight brute mode) that it finds (in order found), or in type order, the cheapest type of first type, then would move into the 2nd (even if first type isn't all purchased, but you cannot afford them).

htw

Htw, what I'm seeing is with typeorder set to Class|Archetype, it will buy everything it can in Class for the level, then will not spend any more points even though there are purchasable abilities in Archetype for the level. It will ignore them and get up to 30 AAs.

Seems to me it should purchase all the ones in class first then purchase the ones in archetype before building up to 30 AAs. I don't think it should simply skip them if it doesn't have enough AAs, only should skip if it doesn't have the requirements to purchase it.

If it knew to go back and purchase ones after getting the required abilities that would be helpful as well. Curious how it would handle that currently? If it was in brute and couldn't purchase something in class because it required a archetype ability and later moved to archetype and purchased it, would it just ignore it since it was already past that tab in the order?
 
There is no way for it to know, currently, that you don't meet pre-reqs. Skipping one is easy in various cases (level req not met, already at max rank, etc.), but let me put out an example here:

Say you put Class first, Arch second, General third.

Now it starts looking, and is going through the class entries. Let's focus on only one of them, for a monk: Critical Mend

You are at rank 0 of Critical Mend (never purchased any points).
You DO have enough AA points to purchase it.
You DO meet the minimum level requirement.
You HAVE NOT purchased the pre-req: First Aid Rank 3

There is also no feedback after spending, btw - just wanted to point that out (i.e., there is no success/fail indication, unless I were to write some code that would check for an incremented rank after the fact, with keeping in mind timing issues between client and server).

What is going to happen here, if you don't allow it to pass through to continue on, is it's going to get stuck on Critical Mend, if you are doing brute mode in type order, and have not purchased the pre-req already.

Instead of digging around in stuff, it would honestly be better to have a separate config, that has each classes pre-reqs. There are really not a huge amount of them, ever since they combined all those sub-entries into single categories.

Before:
A = 5 ranks
B = 5 ranks (pre-req = A at rank 5)
C = 5 ranks (pre-req = B at rank 5)

Now:
A = 15 ranks (no pre-req)

So for the ones that still have some pre-req (e.g., Critical Mend), then I could configure it to know & check that, so it would indeed skip it, just as if you didn't meet the level requirement.

That's the only way we can keep it like it is, but allow you full automation. If I do it this way, then in the example I posed, it would skip Critical Mend, and continue on to any other class abilities, once all are purchased that CAN be purchased (level, pre-req), then it would move to your next type order, and continue there.

Keep in mind that cycle happens every time it checks to spend. So in the above example, if it kept falling through on Critical Mend due to FA3 not being there, eventually as it goes thru arch and/or general & purchases them, it would notice it could buy CM, and do so first. In other words, just because all class are purchased, or cannot be purchased, it will not keep skipping them. It rechecks the same order every time.

If I added pre-reqs, it's going to take a bit of work, but mainly because I'll have to manually attempt to purchase a pre-req continually in a different (lower priority) type order, to meet that pre-req for the current order - unless I just say screw it, and if you don't set up pre-reqs first, it may be a while before that type order ability gets purchased. Like this:

order: class, arch, general

Keeps skipping CM, as FA3 has not been purchased.
Finishes other class abilities, and moves on to arch
Keeps buying arch, finishes there
Gets into general, starts buying there
At some point in general, it purchases the 3 ranks of FA
Notices this, and purchases CM under class type
Nothing else in class
Nothing else in arch
Keeps spending in general

Thanks for the discussion & opinions btw, if we keep up the dialog, we'll get to the point where we can make everyone (or almost everyone LOL) happy with how you can configure and operate it.

htw
 
Since I had a monk on, here are the only pre-reqs::

Class:

Critical Mend: First Aid 3
Fundament: First Spire of the Sensei : Fundament of Combat 3
Fundament: Second Spire of the Sensei : Fundament of Combat 6
Fundament: Third Spire of the Sensei : Fundament of Combat 9
Hastened Death: Imitate Death 1
Hastened Destructive Force: Destructive Force 3
Hastened Grappling Strike: Grappling Strike 1
Hastened Purification of the Body: Purify Body 1
Sinister Strikes: Ambidexterity 1
Weightless Steps: Innate Run Speed 5

Arch:

Empowered Ingenuity: Ingenuity 1
Veteran's Wrath: Combat Fury 6
 
Since I had a monk on, here are the only pre-reqs::

Class:

Critical Mend: First Aid 3
Fundament: First Spire of the Sensei : Fundament of Combat 3
Fundament: Second Spire of the Sensei : Fundament of Combat 6
Fundament: Third Spire of the Sensei : Fundament of Combat 9
Hastened Death: Imitate Death 1
Hastened Destructive Force: Destructive Force 3
Hastened Grappling Strike: Grappling Strike 1
Hastened Purification of the Body: Purify Body 1
Sinister Strikes: Ambidexterity 1
Weightless Steps: Innate Run Speed 5

Arch:

Empowered Ingenuity: Ingenuity 1
Veteran's Wrath: Combat Fury 6

Also keep in mind for the spires, First Spire is required to purchase ranks 4-6 of Fundament of combat, and Second Spire is required to purchase ranks 7-9 of Fundament of Combat.
 
you can parse the AA description to see what AA is required if there is one. maybe use that to your advantage? it says required level, and required AA if any besides the description.
 
you can parse the AA description to see what AA is required if there is one. maybe use that to your advantage? it says required level, and required AA if any besides the description.
Yeah, I thought about doing that - but dunno. The AA struct has required level, so would only need grab the req (although it's already there, so doesn't matter if grab level, or just use what's in struct).

I'll keep it in mind.

htw
 
Also keep in mind for the spires, First Spire is required to purchase ranks 4-6 of Fundament of combat, and Second Spire is required to purchase ranks 7-9 of Fundament of Combat.
Thanks man, good reminder that!

htw
 
I've decided (at least for now), to go the route of sections in MQ2AASpend.ini. Here is an example section for wizard:

Code:
[Pre_Wizard]
Acute Focus of Arcanum=Focus of Arcanum|1
Arcane Whisper=Spell Casting Subtlety|3
Atol's Unresistable Shackles=Atol's Shackles|1
Dimensional Shield=Dimensional Instability|1
Druzzil's Mystical Blessing=Druzzil's Mystical Familiar|5
E'ci's Icy Blessing=E'ci's Icy Familiar|5
Fortified Entanglement=Hastened Root|4
Frenzied Devastation=Spell Casting Fury|1
Fundament: First Spire of Arcanum=Fundament of Intellect|3
Fundament: Second Spire of Arcanum=Fundament of Intellect|6
Fundament: Third Spire of Arcanum=Fundament of Intellect|9
Group Perfect Invisibility=Perfected Invisibility|1
Hastened Call of Xuzl=Call of Xuzl|1
Hastened Exodus=Exodus|1
Hastened Force of Will=Force of Will|1
Hastened Harvest of Druzzil=Harvest of Druzzil|1
Hastened Manaburn=Mana Burn|1
Hastened Mind Crash=Mind Crash|1
Hastened Prolonged Destruction=Prolonged Destruction|3
Hastened Root=Strong Root|1
Improved Sustained Destruction=Sustained Destruction|6
Kerafyrm's Favor=E'ci's Icy Blessing|1
Kerafyrm's Prismatic Familiar=Kerafyrm's Favor|3
Mana Blast=Mana Burn|1
Mana Blaze=Mana Blast|1
Mana Burn=Mental Clarity|3
Prolonged Destruction=Frenzied Devastation|3
Quick Damage=Spell Casting Fury|3
Quickened Harvest of Druzzil=Harvest of Druzzil|1
Ro's Fiery Blessing=Ro's Flaming Familiar|5
Spell Casting Fury Mastery=Spell Casting Fury|3
Sustained Destruction=Frenzied Devastation|3
Volatile Mana Blaze=Mana Blaze|1
Destructive Fury=Spell Casting Fury Mastery|6
Gift of Amazing Exquisite Radiant Mana=Gift of Exquisite Radiant Mana|1
Gift of Dreamlike Exquisite Radiant Mana=Gift of Amazing Exquisite Radiant Mana|1
Gift of Exquisite Radiant Mana=Gift of Radiant Mana|1
Gift of Mana=Spell Casting Mastery|3
Gift of Radiant Mana=Gift of Mana|3
Group Perfected Levitation=Perfected Levitation|1
Hastened Forceful Rejuvenation=Forceful Rejuvenation|1
Hastened Silent Casting=Silent Casting|3
Mastery of the Past=Spell Casting Expertise|3
Quickened Silent Casting=Silent Casting|1
Silent Casting=Spell Casting Subtlety|3
Bandage Wounds=First Aid|3
Combat Medic=Bandage Wounds|5
Dreamlike Cunning=Earthen Artistry|5
Dreamlike Fortitude=Earthen Stability|5
Dreamlike Intellect=Earthen Brilliance|5
Dreamlike Magnetism=Earthen Allure|5
Dreamlike Might=Earthen Brawn|5
Dreamlike Sapience=Earthen Sagacity|5
Dreamlike Swiftness=Earthen Alacrity|5
Earthen Alacrity=Planar Power|20
Earthen Allure=Planar Power|20
Earthen Artistry=Planar Power|20
Earthen Brawn=Planar Power|20
Earthen Brilliance=Planar Power|20
Earthen Sagacity=Planar Power|20
Earthen Stability=Planar Power|20
Hastened Origin=Origin|1
I've mostly implemented it, and should have it up today sometime.

Couple of caps from command options (prelist, need):

red = you don't have the pre-req AA, or the AA.
yellow = you have the pre-req AA, but not the AA.
green = you have that particular AA (whether pre-req and/or actual)

aaspend_prereq.png


This one just shows the needed pre-reqs, for any entries in the pre-req array (the ini file). It does not look at what you might WANT, i.e., if you use an auto array. It is only showing you all the ones you WOULD have to get, before you could purchase all AA's for the class.

aaspend_need.png
 
Last edited:
Yeah, I know there are some eye bleeding colors! I like my shit to stand out. ;)

*snicker*

htw
 
LOL, hell yeah. Well, then to the doc after that for sure...

I have it check your auto entries, if you use the check command option. It will go through your auto entries, looking for missing pre-requisites (recursively.. i.e., if it finds a missing pre-req, it checks for a missing pre-req to the pre-req, etc.).

Here is a simple example:

aaspend_missing.png
 
I think I'm done for now, other than fixing whatever the hell bugs I introduced. :D :D

Should I upload it?

htw
 
There is an example MQ2AASpend.ini with some entries on patch server.

Summary of where config info is read from (or written to):

MQ2AASpend.ini: All that's in here are the pre-reqs.
Format:
[Pre_Class]
AA_Name=Req_AA_Name|Req_Rank
or
AA_Name|Rank=Req_AA_Name|Req_Rank

See a couple posts back for example.

MQ2AASpend_Default.ini: Has any entries you want a new toon (with no personal INI entries) to get copied over from. The entries will be saved to their personal INI, so any further changes happen to that toon only.
Format:
[MQ2AASpend]
UseTypeOrder=0
MinAutoStart=5
[Class]
Priority=AA_Name
...
or
Priority=AA_Name|Rank
...

server_toon.ini: Your toons personal settings. Same format as global ini, except all settings (options & auto entries) are under the [MQ2AASpend] section.

There are 2 options you cannot manipulate from in game. The ability to start brute or auto mode automatically after you log in. They go under the [MQ2AASpend] section.

AutoStartAuto=0
AutoStartBrute=0

Set either one to 1 to have it do it. If you set both to 1, the plugin will change brute to 0, and leave auto on.

htw
 
Load

ok gave this a whirl is working great ..only question is does it have to be loaded everytime cause i had it loaded yesterday and when i started up today it wasnt doing anything until i typed /aaspend brute
 
ok gave this a whirl is working great ..only question is does it have to be loaded everytime cause i had it loaded yesterday and when i started up today it wasnt doing anything until i typed /aaspend brute
Yes, it has to be started each time for auto or brute. That's answered a few posts back. Right above your post, I also mentioned a way to make it autostart, without using a .cfg file. hehe.

htw
 
blah blah blah all that reading makes my eyes bleed...lol well i have it set to auto and it still made me start it manually...does it reset when you push an update?
 
Last edited:
blah blah blah all that reading makes my eyes bleed...lol well i have it set to auto and it still made me start it manually...does it reset when you push an update?
When you say you have it set to auto, what do you mean?

htw
 
i have it set like such in my ini:

AutoStartAuto=0
AutoStartBrute=1


I thought that would cause it to start itself when i load character..is that not correct?
 
Status
Not open for further replies.