Feature Daily Activities

Veracity

Developer
Staff member
Not Daily Deeds - although they are connected.

The Wiki has a page of Daily Activities: things that you can do a limited number of times per day, reset at rollover or ascension. KoLmafia tracks many of these. To support them, we need:

- a property to track usage. Preferably starting with a "_", since those automatically get reset at rollover or ascension.
- for items, detection of the usage in UseItemRequest.parseConsumption and checking the property in UseItemRequest.maximumUses.
- for skills, similar detection and limiting in UseSkillRequest

Given the above, it is easy to craft a Daily Deed - either built-in or custom - to track an activity and enable or disable it based on the property. And scripts can look at the property and make decisions based on what KoLmafia has tracked.

On our own Wiki, do we have a list of such Daily Activities and the corresponding property that tracks it? That would be nice!

I looked at the Wiki page and found a whole bunch of things that we don't track. I also see things that we do track that the Wiki doesn't know about, yet: all-year sucker, heart of dark chocolate, Summon "Boner Battalion", for example. Here's what I figured out:

Things we don't track yet. Some of these are automatically used in breakfast, but, since we don't track them, we'll try doing them every time you run breakfast.

clovers retrieved from hermit - *** no property ***
fighting 5, 10, or 15 ducks in postwar farm - *** no property ***
vamp out 3 times - *** no property ***
get elite guard wages in treasury - *** no property *** added
get harem girl wages in treasury - *** no property *** added
white rice from Whitey's Grove 3 or 5 times - *** no property *** added
beer lenses from A Barroom Brawl 3 times - *** no property *** added
free healing candy from Cotton Candy Carnie 10 times - *** no property *** added
bouquet of flowers from Mayflower bouquet 5 times - *** no property *** added
arse-shooting crossbow - *** no property ***
Managerial Manipulation once per day - *** no property ***
ballast turtle once per day - *** no property *** added
hyperinflated seal lung once per day - *** no property *** added
pressurized potion of pneumaticity once per day - *** no property *** added
tempura air once per day - *** no property *** added
essential tofu once per day - *** no property *** added
eat chocolate 3 per day - *** no property *** added
use box of hammers once per day - *** no property *** added
Emblem of Ak'gyxoth/Idol of Ak'gyxoth - *** no property *** added
Creepy Grin - *** no property *** added
Summon hobo underling 5 per day - *** no property *** added
software glitch - *** no property *** added
clan soda machine - *** no property ***
clan jukebox - *** no property ***
clan radio - *** no property ***
Nash Crosby's Still - *** no property ***
farm garden - *** no property ***
Unaccompanied Miner - *** no property ***
Wizard of Ego book - *** no property *** added
free Meat from The Organic Produce Stand during and after war - *** no property *** added
bombs at The Lighthouse Keeper during war - *** no property ***
free cooking ingredients at McMillicancuddy's Farmhouse during war - *** no property ***
free fisherman's sack at Fishing Village - *** no property ***
vial of slime at A Boat 10 times per day - *** no property ***
creepy voodoo doll - *** no property *** added
handmade hobby horse - *** no property *** added
ball-in-a-cup - *** no property *** added
set of jacks - *** no property *** added
glass gnoll eye - *** no property *** added
stuffed pocketwatch - *** no property *** added
STYX deodorant body spray - *** no property *** added
Stabonic scroll - *** no property *** added
coal paperweight - *** no property *** added
jingle bell - *** no property *** added

Things we currently track and the associated property:

free rests (Disco Nap, Disco Power Nap, Executive Narcolepsy) - timesrested
Daily Dungeon - dailyDungeonDone
change gender in the Sleazy Back Alley -_sexChanged
bubbling tempura batter - tempuraSummons
seaode - seaodesFound
astral mushroom - _astralDrops
tiny bottle of absinthe - _absintheDrops
agua de vida - _aguaDrops
llama lama gong - _gongDrops
Game Grid token - _tokenDrops
transporter transponder - _transponderDrops
familiar feast - _feastUsed
Styx Pixie - styxPixieVisited
outrageous sombrero - outrageousSombreroUsed
The Ballad of Richie Thingfinder - _thingfinderCasts
Benetton's Medley of Diversity - _benettonsCasts
Elron's Explosive Etude - _elronsCasts
Chorale of Companionship - _companionshipCasts
Donho's Bubbly Ballad - _donhosCasts
Inigo's Incantation of Inspiration - _inigosCasts
Vent Rage Gland - rageGlandVented
The Mad Tea Party - _madTeaParty
borrowed time - _borrowedTimeUsed
distention pill - _distentionPillUsed
resolution: be more adventurous - _resolutionAdv
spice melange - spiceMelangeUsed
mojo filter - currentMojoFilters
synthetic dog hair pill_syntheticDogHairPillUsed
free runaways - _banderRunaways, _navelRunaways, parasolUsed
Mini-Hipster - _hipsterAdv
use depleted uranium infernal seal figurine - _sealFigurineUses
use any infernal seal figurine (including depleted uranium) - _sealsSummoned
shaking 4-d camera - camerasUsed
photocopied monster - _photocopyUsed
Spooky Putty sheet - spookyPuttyCopiesMade
BRICKO beasts - _brickoFights
mayfly bait necklace - _mayflySummons
Fire a badly romantic arrow - _badlyRomanticArrows
Release the Boots - _bootStomps
Consume Burrowgrub - burrowgrubSummonsRemaining
Summon Pasta Guardians - pastamancerGhostSummons
Frosty's iceball - _iceballUses
4-d camera - camerasUsed
Bag o' Tricks - _bagOTricksUsed
play Mr. Klaw "Skill" Crane Game - _klawSummons
get snacks - _chipBags
Having a Ball! - _ballpit
play Deluxe Mr. Klaw "Skill" Crane Game - _deluxeKlawSummons
soak in hot tub - _hotTubSoaks
play pool - _poolGames
"DRINK ME" potion - _lookingGlass
take shower - _aprilShower
Look high through telescope - telescopeLookedHigh
Copse of the Deep Fat Friars - friarsBlessingReceived
buff at Mysterious Island Arena - concertVisited
massage or healed at Our Lady of Perpetual Indecision - nunsVisits
Summon a Demon - demonSummoned
Summon "Boner Battalion" - _bonersSummoned
Finstrong buff - _skateBuff1
Fishy buff -_skateBuff2
Busker Do buff -_skateBuff3
Swimming Head buff -_skateBuff4
Familial Ties buff -_skateBuff5
Squeeze Stress Ball - _stressBallSqueezes
heart of dark chocolate - _darkChocolateHeart
all year sucker - _allYearSucker
Oscus's neverending soda - oscusSodaUsed
Chester's bag of candy _bagOfCandy
cheap toaster - _toastSummons
burrowgrub hive - burrowgrubHiveUsed
Platinum Yendorian Express Card - expressCardUsed
The Legendary Beat - _legendaryBeat
Jackass Plumber home game - _jackassePlumberGame
Trivial Avocations board game - _trivialAvocationsGame
library card - libraryCardUsed
Pastamastery - noodleSummons
Advanced Saucecrafting - reagentSummons
Advanced Cocktailcrafting - cocktailSummons
Rainbow Gravitation - prismaticSummons
Lunch Break - _lunchBreak
Summon Snowcones, Summon Stickers, Summon Sugar Sheets, Summon Clip Art - tomeSummons
libram items - libramSummons
Summon Hilarious Objects - grimoire1Summons
Summon "Tasteful" Gifts - grimoire2Summons
Summon Alice's Army Cards - grimoire3Summons
zap an item - _zapCount
Golden Mr. Accessory five per golden Mr A - _smilesOfMrA
 
Last edited by a moderator:

AlbinoRhino

Active member
Yesterday I was looking for a property that tracked the number of seal figurines which had dropped which (according to the wiki) is limited to 5 total per day (except for the one from Sonofa Beach). I wanted to know if I had found 5 & could stop looking for the day. I found the 2 seal-related properties mentioned, but not one for the figurine drops.

Perhaps you could add this to your list ?
 

StDoodle

Minion
I know this would be a bit more work, but with the way things have been moving in KoL, I wonder if it might be a bit easier to follow in the long run if an entirely new settings file were added specifically for "resets daily" preferences. There's just such an ungodly number of things of that type now compared to a couple of years ago.
 

Veracity

Developer
Staff member
The problem is, each such daily activity needs special code to detect when it happens (item is used, skill is cast, item is found during adventuring, whatever) and (in the case of items and skills) special code to detect when the user wants to exceed the daily usage of the item or skill. It's not just declaring a property.

I imagine that putting all the "_" preferences in a separate file would make it easier for the user to read the files and comprehend, but the extra complexity of maintaining multiple settings files does not, in my (HUMBLE :)) opinion, make that worth doing.
 

Veracity

Developer
Staff member
Yesterday I was looking for a property that tracked the number of seal figurines which had dropped which (according to the wiki) is limited to 5 total per day (except for the one from Sonofa Beach). I wanted to know if I had found 5 & could stop looking for the day. I found the 2 seal-related properties mentioned, but not one for the figurine drops.

Perhaps you could add this to your list ?
Sounds reasonable. We track other item drops from adventures. Seaodes, for example.

The two seal variables are:

use depleted uranium seal figurine - _sealFigurineUses
use any infernal seal figurine (including the depleted uranium figurine) (5 per day) - _sealsSummoned

I'm not sure why we track depleted uranium usages; as far as I know, you are not limited in using it beyond the limit on summoning ANY infernal seal.

Also: revision 10468 now tracks casting of The Smile of Mr. A:

Golden Mr. Accessory five per golden Mr A - _smilesOfMrA
 

AlbinoRhino

Active member
Sounds reasonable. We track other item drops from adventures. Seaodes, for example.

The two seal variables are:

use depleted uranium seal figurine - _sealFigurineUses
use any infernal seal figurine (including the depleted uranium figurine) (5 per day) - _sealsSummoned

I'm not sure why we track depleted uranium usages; as far as I know, you are not limited in using it beyond the limit on summoning ANY infernal seal.

Also: revision 10468 now tracks casting of The Smile of Mr. A:

Golden Mr. Accessory five per golden Mr A - _smilesOfMrA

Interesting. I was assuming that _sealFigurineUses was a multiplier for the nemesis accessory which allows 10 summons instead of 5. When I looked at it, it was set to 2 and that was the only thing I could think of to explain it. I see no reason to track uranium figurine uses either.
 

fronobulax

Developer
Staff member
Clover Tracking

My characters will run breakfast every time they log in. (My deliberate choice). Each time, however, they buy a hermit permit and attempt to get clovers. After all the clovers are obtained that doesn't need to happen, right?

My FR would be for a daily preference, say _cloversToGet. It has three states. If it is negative then KoLmafia has no clue about how may clovers are available and so when necessary it does what it does now and updates the preference with whatever it learns. If it is zero then KoLmafia is certain that there are no more clovers available and so Breakfast (and smart scripts) does not need to check. If it is positive then KoLmafia believes that many clovers are available and will try and get them all when asked. The success or failure of the attempt should also update the preference. Preference reset to -1 at rollover. (If a different reset is the standard then the meanings can be adjusted. Significant point is three states - don't know, know there are none left, know there are X left with "know" being defined in a reasonable way in case folks do things outside of mafia).

I have looked at doing this myself and quite frankly ran out of time before I understood the pieces involved. There may be code that attempts to do this, in which case this is either a Bug Report or another opportunity for someone to explain to me what I am not seeing or not understanding ;-)

It may also be that this is being tracked and the FR is that Breakfast not try and get clovers if KoLmafia believes there are none to get.

Thanks.
 

roippi

Developer
Nash Crosby's Still - *** no property ***

Huh. I had to look at this one. After spending probably 20-30 mins on it, I can't actually tell you how we know how many stills are available when we login.

-KoLCharacter.stillsAvailable() looks at the field stillsAvailable, which is initialized to 0.
-stillsAvailable is set by KoLCharacter.setStillsAvailable()
-..which is called any time we look at guild.php by GuildRequest.parseResponse.

So by induction, I assume that we hit guild.php somewhere on login, but I can't actually find where this happens. Maybe somewhere in NPCStoreDatabase?
 

lostcalpolydude

Developer
Staff member
ConcoctionDatabase.refreshConcoctions() calls ConcoctionDatabase.cachePermitted() which calls KoLCharacter.getStillsAvailable(), which leads to a GuildRequest if the value isn't already set. refreshConcoctions is called from a bunch of stuff.
 

Veracity

Developer
Staff member
I believe we defer the refresh to the end of logging in, since it IS a lot of crunching and is called in a lot of places. But, yes - it will execute at the end of login and will go look at the still, if appropriate.
 

roippi

Developer
Cool, thanks.

Sounds like we can save a server hit there on logins that aren't the first one of the day.
 

lostcalpolydude

Developer
Staff member
essential tofu once per day
eat chocolate 3 per day
Emblem of Ak'gyxoth/Idol of Ak'gyxoth
creepy voodoo doll
handmade hobby horse
ball-in-a-cup
set of jacks
glass gnoll eye

I added those things in 10977, plus a few toys used during breakfast.
 
Top