Feature - Rejected Modifier Maximizer oversights

Turtle

New member
There are a number of modifiers that the Modifier Maximizer does not currently include, and I would like to request that they be:
  1. Crimbo Candy [Fudge, Pecan, Bark] - Currently, the MM will only include these items if you have already summoned them. As it is a once a day, 3mp cost, I feel that the moxie/muscle/myst/initiative modifiers should include the creation of these items in their Maximization. At the very least, since no one stat is guaranteed (except the initiative), the Moxie and Muscle should still be included for the Sugar Rush effect that it gives.
  2. Mad Tea Party hat buffs - Less of an issue now that the Daily Deeds panel includes the hat buff, but the option of equipping an item should be included in the Maximizer. The +10 moxie/myst hat buff from snorkel/ravioli hat is huge for bedroom access.
  3. Crown of Thrones - Personally, I have no experience with this, but I have been told that the Maximizer does not include the CoT in its maximization.
  4. GAP - Same as above.
 

roippi

Developer
In order:

1) Rejected. Casting the skill and receiving the item is non-deterministic, so won't happen. Cast beforehand, and if you get the appropriate candy maximizer will handle it.
2) Already implemented.
3) Rejected. CoT support is in theory a good idea but far too involved for non-Jason developers to tackle. Since Jason is no longer actively developing, that rather puts a kibosh on that.
4) Already implemented.

So, rejected/implemented, take your pick. I pick rejected!
 

Fluxxdog

Active member
3) Rejected. CoT support is in theory a good idea but far too involved for non-Jason developers to tackle. Since Jason is no longer actively developing, that rather puts a kibosh on that.
Question: What files would need to be worked with/created to get CoT support? I'd like to research in to it. Heck, maybe even contribute something. Don't hold your breath, but since nobody plans to work on it, I'd like to see what could be done.

Yeah, I understand it'd be jumping in to the middle of a pack of wolves, but I had plenty of coffee ^^
 

Theraze

Active member
Well, the other (easier?) similar section that's been missing from the maximizer even though it's listed is folding support. Though it says that you can fold stuff, it [always] warns you that it isn't checking for folded combinations yet...
 

lostcalpolydude

Developer
Staff member
I believe item folding is unsupported for performance reasons, among other things. At least that's what I remember jasonharper saying.
 

roippi

Developer
Question: What files would need to be worked with/created to get CoT support? I'd like to research in to it. Heck, maybe even contribute something. Don't hold your breath, but since nobody plans to work on it, I'd like to see what could be done.

Yeah, I understand it'd be jumping in to the middle of a pack of wolves, but I had plenty of coffee ^^

Well it's like... I don't know how I can answer that, because someone who can add CoT support by needs must have a good working knowledge of how the maximizer works, and so would already know the answer to that question. So really you're asking "tell me how the maximizer works," which is an involved answer.

What I'll do is tell you how to learn how the maximizer works, and along the way you'll hopefully see the parts where you need to add things for CoT support.

Before anything: use an IDE. Use the "open declaration" and "find references" commands liberally. See my eclipse tutorial if you need more info.

First the good news: the maximizer is actually quite linear in operation. You can see that it does operation a, then b, then c quite explicitly. It is also static, meaning you can't make a bunch of new Maximizer() objects - there's just the one. So start with Maximizer.java. The whole scale of one maximize() operation is there, so try and understand what is going on in blocks. "Oh, this block is enumerating my equipment options. Oh that block is working on my effect options." Etc. You don't need fine-grained detail yet, just the broad strokes.

Once you have all that down, notice line 161 in maximizer, and how it is asking the Evaluator to do things. Step into the enumerateEquipment method and repeat the above learning process. In terms of blocks, things are grouped into for-loops already, so pay attention to those. Specifically understand what the loop at line 874 is doing and what the loop at 1114 is doing.

Lastly, step down into MaximizerSpeculation (and Speculation). This is the most difficult part, as there is a lot going on here. There are two logical groups basically. The first group is the combinatorics, all the methods that start with "try." Learning these is cool, but not necessary. The other group is the score system - getScore(), getTiebreaker(), and compareTo(). These are very complex, but integral to understanding how score is calculated, tiebreaker is applied, and so on.

---------

AFTER all that, CoT support is.. hard. The easy part is programmatically determining the score of the "best" CoT in the enumerateEquipment step. Then you have to somehow bundle the familiar information into its MaximizerSpeculation. Then you have to add support for executing the enthrone command along with the equip command. Then you have to find a way to usefully display the information in emitSlot.

Good luck!
 

Fluxxdog

Active member
Well it's like... I don't know how I can answer that, because someone who can add CoT support by needs must have a good working knowledge of how the maximizer works, and so would already know the answer to that question. So really you're asking "tell me how the maximizer works," which is an involved answer.
Fair enough. Thank you for what you've given me. I'll see what I can do with it. BTW, can you shoot me a link to your tutorial? I'm familiar with Eclipse, in fact my Java professor insists we use it, but learning more is always useful.
(snip lovely explanation)

AFTER all that, CoT support is.. hard. The easy part is programmatically determining the score of the "best" CoT in the enumerateEquipment step. Then you have to somehow bundle the familiar information into its MaximizerSpeculation. Then you have to add support for executing the enthrone command along with the equip command. Then you have to find a way to usefully display the information in emitSlot.

Good luck!
Luck? LUCK?!? How dare you! ... Yeah, I'll need it in spades ^^ Thanks again.
 

roippi

Developer
BTW, can you shoot me a link to your tutorial?

Over here, stickied in the community support forum.

I'm familiar with Eclipse, in fact my Java professor insists we use it, but learning more is always useful.

I approve, not necessarily because Eclipse is superior to any other tool like Netbeans, but because learning the tool really does accelerate learning the language.
 
Top