Feature - Rejected Track Mafia Thumb Ring valid combat adventures worn for

taltamir

Member
http://kol.coldfront.net/thekolwiki/index.php/Mafia_thumb_ring
Occasionally gives an adventure after combat. Does not apply for free combats, nor can it trigger after V for Vivala mask triggered.

KoLmafia currently tracks how many times a day the mafia thumb ring triggered. Which is neat to know, however for the purpose of spading the exact % chance of "occasionally" it would be great if it also tracked how many valid combat adventures you wore it for.

That way I you could see that I had 230 adventures, of which 193 were valid for mafia ring, and it triggered 11 times today. By keeping track of this every day a % could be deduced for its chance of triggering.
 

lostcalpolydude

Developer
Staff member
Figuring out if a combat was free is hard. So hard that I haven't even tried tracking BoomBox progress, which I consider important enough to track. (Unlike thumb ring triggers, which I rejected before someone else implemented.)

So I'm going to reject this on the grounds that it isn't feasible to implement, and if someone figures out a sane way of handling it then that would be great for tracking something more important.
 

fronobulax

Developer
Staff member
(Unlike thumb ring triggers, which I rejected before someone else implemented.)

*snicker* I don't recall that it was actually marked as rejected but veracity's comments seemingly in favor carried a fair amount of weight for me. However given that I botched the implementation and it took several check ins and help from Darzil to get right, hindsight suggests it was not the trivial change I imagined ;-)

Could a dedicated spader derive the number of free fights by looking at the adventure number in the session long and observing when it doesn't increment or are there logged actions that look like adventures but are not free fights? Just curiosity since I am not going to even think about this too much.
 

heeheehee

Developer
Staff member
Could a dedicated spader derive the number of free fights by looking at the adventure number in the session long and observing when it doesn't increment or are there logged actions that look like adventures but are not free fights? Just curiosity since I am not going to even think about this too much.

(I dislike the term "spader". You wouldn't refer to a Heart as a "hearter", now would you?)

IMO, the "correct" approach would be to denote monsters as "free" (e.g. have a new property in monsters.txt), look for events that modify this state (e.g. OCRS's optimal), and also check for combat actions that can trigger free kills (e.g. Shattering Punch, power pill). I say this is "correct" because it emulates what KoL itself does.

The simpler approach is to look at the combat text for "<!-- WINWINWIN -->" (or whatever the string is), then check the charpane refresh that KoL initiates via the browser to see if adventures remaining went down.

Merely relying on the log text seems very fragile, given that I'm sure there are actions that can take an ambiguous number of turns (crafting beyond free crafting limits via relay browser, perhaps?), not to mention turn-taking actions that aren't logged as such.
 

Darzil

Developer
The simpler approach is to look at the combat text for "<!-- WINWINWIN -->" (or whatever the string is), then check the charpane refresh that KoL initiates via the browser to see if adventures remaining went down.
Compare two unsynchronised panels that load separately? Sometimes I've fought multiple monsters between charpane refreshes (and not sure we do them at all when automating?).
 

lostcalpolydude

Developer
Staff member
During automation, all charpane.php calls are changed to api.php?what=status. That means the response time differs between manual and automated adventuring. Since it's an unknown response time and we check turnsPlayed as whatever it is while parsing fight.php, and not generating a completely new charpane/api call just to parse after combat ends, there's some uncertainty.
 

fronobulax

Developer
Staff member
(I dislike the term "spader". You wouldn't refer to a Heart as a "hearter", now would you?)

<veer>
*snicker*

I don't object to hearter although I am not sure when I would use the term. Clubber already seems to be in common use. I agree that diamonder is nonsensical. spader does have a dictionary definition "one who spades" but I can also see that in the absence of a clear context, "spade" or "spader" or even "to spade" could be offensive. I will try and consider different phrasing next time.

</veer>
 

Veracity

Developer
Staff member
"spade" is offensive only if you reject the whole "suits" model. Which is valid, I guess.

A "spade" is somebody who wants deep understanding of the game for reasons other than personal gain. Which is to say, a "spade" will publicly share what they know, whereas a "diamond" or "club" will hoard that knowledge lest other people be able to beat them as a result of having that knowledge.

I'm a "spade". I don't give a fuck if you are better than me at "diamond" or "club" activities - although I actually have "competed" as a club. Never as a diamond. Although I accidentally did get a "diamond" award, while I was completely ignoring the "competition" I was engaging in. :)
 

heeheehee

Developer
Staff member
During automation, all charpane.php calls are changed to api.php?what=status. That means the response time differs between manual and automated adventuring. Since it's an unknown response time and we check turnsPlayed as whatever it is while parsing fight.php, and not generating a completely new charpane/api call just to parse after combat ends, there's some uncertainty.
Agreed that there is some ambiguity when manually running turns, without modifying the turn-spending model. I'd like to point out that you could theoretically force that api.php hit upon parsing WINWINWIN, before serving the proxied fight.php results to the user, if you really cared enough about this enough to force the additional server hits.

Not to mention that you'd have to then account for adventures gained during combat, e.g. via riftlet, V mask, or thumb ring.

<veer>
*snicker*

I don't object to hearter although I am not sure when I would use the term. Clubber already seems to be in common use. I agree that diamonder is nonsensical. spader does have a dictionary definition "one who spades" but I can also see that in the absence of a clear context, "spade" or "spader" or even "to spade" could be offensive. I will try and consider different phrasing next time.

</veer>

Clubber is also obviously the class.

Diamonder is just silly, as you point out.
 

Darzil

Developer
You’d also have the slow down processing by waiting for that extra api hit to return before submitting anything else that might use an adventure.
 

heeheehee

Developer
Staff member
Not to mention the possibility for data races if you're also doing things on the side in the relay browser.
 
Top