Feature - Implemented Tracking Combat Monster Level

Theraze

Active member
Well, I was talking about ones that are actually listed. :D But yeah, like you said, funkslinging means that you can definitely get 2 easily.
 

Winterbay

Active member
It does work with DB skills:

Code:
You follow up your old-school disco dancing with an adept boogaloo, dealing 10 damage to your opponent.
Disco Nirvana	You acquire an effect: Disco Nirvana
(duration: 1 Adventure)
Monster Attack	Monster attack power reduced by 7
Monster Defense	Monster defense reduced by 7
 

zarqon

Well-known member
Yeah -- while (find) rather than if (find) ought to do it, at least for the special messages. The rest would still need to be detection strings. Whee!

I only tested Wing Buffet since I'm in a Llama run and didn't have any other deleveling skills handy, but there was definitely no message, even in the source.

Perhaps TPTB knew that you were almost finished with this and starting to look for your next project -- the Forbidden Project that they don't want you to code.
 

Fluxxdog

Active member
And lo! there was trembling in the bitstreams as... Seriously, as soon as I noticed this on Twitter, I thought "Dang. He's gonna be a bit ticked." Jut a bit though.
 

Theraze

Active member
Hmm... so we have major inconsistencies in the messages, from what it sounds like... they may show delevel stats, they may not. It may (usually) be before the main message, it may (in the case of plot holes) be after.

Personally, I'm more amused than annoyed. I just wish there was consistency. :)
 

lostcalpolydude

Developer
Staff member
I tried a bunch of familiars in the CoT that the wiki lists as deleveling, and none of them list how much they delevel by. I also tried a barrrnacle as my familiar and it didn't list the amount.
 

Theraze

Active member
So, I think we can probably make a generalization that weapons, familiars, and CoT don't display, (most) skills and items do? Bandersnatch is an exception, since it converts non-delevelling skills into delevellers... psalm of pointiness and chefstaff are still unknowns. Also, pasta guardians and insulting pirates. And multi-function items, like the spectre scepter.

So, if most skills are now displayed, which (besides Wing Buffet) aren't? I'll tweak the combat delevelling bits to only apply to unknown ones, like WB. Also, base KoLmafia will need the detection changes, as it has expectations and internal tracking for DB skills doing delevelling and the like.

Least this does simplify some of the mess... heh. While simultaneously making it so much more complicated. :)
 

Theraze

Active member
Joys... if we have hipster and mimic, cocoabo and those are probably... can we confirm that barrrnacle is still not displaying when it latches on? *mutters* My guess is that random missed segments are having it added, though they may leave a few undone just to screw with us.
 

StDoodle

Minion
For reference, I tested plain Cocoabo & its deleveling showed up per the update. Also, I tested things that normally work in the haiku dungeon; no dice (no message displayed).

But relax! Seriously, buggy implementations are nothing new in KoL. I'd give it a few days before worrying at all, as many if not all of these issues will likely be resolved. :)
 

Theraze

Active member
*grins* I know, I know... And I'll keep my 'legacy' patch around as well, because it makes me happy. But I'd like to move onwards as soon as we think it's moderately stabilized... at the very least, I'll probably toss together the regexp checker in the next day or two.

Edit: So, here's a question... we have monster_level_adjustment that returns the monster level +- currently... I've overloaded it to allow giving it a true boolean to return combat level information... the question is, do we want to handle the separate attack/defence information? How? What I was thinking of possibly doing is ((monster attack modifier + monster defence modifier) / 2) as an additional bit to the monster level return... does that work? It makes the return possibly get confused if one happens to be wildly different than the other, but otherwise none of the new split will be considered at all...
 
Last edited:

StDoodle

Minion
Since we have monster_attack() and monster_defense(), what's the problem? monster_level_adjustment() should only consider ML modifiers that take place automatically when a fight starts, right? And the two sep. functions should be fine, as you can only access this info in a way that's updated in-combat with a consult script anyway, right? Or am I missing something?
 

Theraze

Active member
True... problem is that we have, at least currently, unknown monster delevelling bits. If we want to change all of the combat-ml-adjustments to specifics (combat-attack, combat-defence), we can. If everything gets made displayed, we definitely want to just do that... if anything (even if it's just weakening weapons) stays unknown, the decision remains...
 

StDoodle

Minion
Again, I don't see it as being necessary, but I'm not trying to pretend I know every situation that could come up. If you want to know what a monster's attack & defense would be, theoretically, if you were to fight one, use monster_attack() and monster_defense(), supplying a monster as a parameter. This would only tell you what the two stats would be at the start of combat, but you can't exactly divine what items, skills, etc would be used anyway. If you want to know what they're currently adjusted to in-combat, use the two functions parameterless in a consult script (again, they aren't meaningful anywhere else). If you want to know the sum total of all +ML you're running, use monster_level_adjustment(). To the best of my knowledge, no one ever thought that monster_level_adjustment() should some how account for anything beyond current +ML effects.

If anything, a base_monster_attack() and base_monster_defense() function would be about all I could see that might possibly be useful in addition to the current setup. (Well, current setup once the rest of KoL-deleveling is fixed and reasonably parseable, anyway.)
 

Theraze

Active member
No one? :D I overloaded monster_level_adjustment to allow you to see the current results during battle if you wanted to, because otherwise there wasn't a good way to know what it is.

Regarding wanting base information, just call it against the monster... that'll give you the base. If you parse encounter information to give you the monster name, and give that back to the monster_attack/defence functions, you can compare current against base. If you really wanted to. No need for more functions there.

The issue I'm trying to deal with is, what about non-descriptive delevellings that may remain, such as currently the llama spit? Do we want unknown items to affect attack/defence individually and scrap the current KoLmafia delevelling variables entirely, or do we want to leave the current entry in and just use it for the unknown bits?

Edit: So http://forums.kingdomofloathing.com/vb/showthread.php?t=184639 is the game-forum thread on this. Apparently the official answer on llama spit is that they're differentiating between monster level and monster attack/defence. Not sure which side is officially being tracked yet... guessing it's the individual attack/defence tracked since the numbers aren't linked, but it could be either way. So whenever that finishes up, that'll likely finish barrrnacles and the other ones that aren't tracked yet. Not sure if it'll make it track ML+/MA+/MD+ events though... will have to see.
 
Last edited:

zarqon

Well-known member
I'm a fan of separating them, personally. It's much easier to average the two in a script than it is to magically separate a single variable into two. Considering that the more detailed information is known, it would be a shame for that information to be unavailable in ASH.

I recommend adding monster_attack_adjustment() and monster_defense_adjustment(), which would clearly apply only in combat (they would not take the optional monster parameter that the monster stat functions have). Then you don't need to overload monster_level_adjustment() -- that would go on working as it always had and would not be altered by in-combat monster deleveling.

This would also make base_xxx() needless, since we could simply subtract the adjustment from the current stat to arrive at the base value.
 
Last edited:

StDoodle

Minion
Ok, I think I need some clarification, because I might be making some incorrect assumptions. If I call monster_attack(), will that give me the base attack of a monster inside of a consult script, or the adjusted attack, accounting for known +ML & deleveling? I don't propose to speak for all scripters here, but the only information I'd ever see needing are the base attack & defense of a monster, adjusted for +ML, outside of a consult script; and the current adjusted stats (attack, defense & hp) inside of a consult script. Whether these are accessible straight from ash functions, or easily computed based on other functions, is no big deal to me either way, as long as I know which way to go about it.
 
Top