loathers / TourGuide

Relay script for KoLmafia, for the web game Kingdom of Loathing. Gives advice on how to play.
The Unlicense
14 stars 17 forks source link

olfaction tile revamp via backend logic #112

Open docrostov opened 1 year ago

docrostov commented 1 year ago

okay! so, i discovered while finishing up my version push to catch up to TES' personal tourguide that TES added a new olfaction/turtlesex tile that is technically superior to what ezan has in recent runs, but i like the way ezan made her more large-scale logic, and i want to figure out a way to get to TES' tile by using the olfaction task generator that ezan already made. the tile TES has is:

//Olfaction
RegisterResourceGenerationFunction("OlfactionGenerateResource");
void OlfactionGenerateResource(ChecklistEntry [int] resource_entries)
{
    if (!lookupSkill("Transcendent Olfaction").have_skill()) return;    
    // Title
        string main_title = "Olfaction sniffing";
        string [int] description;

        // Entries
        int olfactionSniffs = clampi(3 - get_property_int("_olfactionsUsed"), 0, 3);
        monster olfactionMonster = get_property_monster("olfactedMonster");
        monster turtleSexMonster = get_property_monster("_gallapagosMonster");

        description.listAppend(HTMLGenerateSpanFont("oh yes my dear....sssnnnnnnnnnnnniiiiiiiiffffffff....quite pungent indeed...", "green"));
        description.listAppend("Day 1: Writing desk, dirty old lihc, smut orc screwer?");
        description.listAppend("Day 2: Bob, grop, idk something else.");
        description.listAppend(HTMLGenerateSpanFont(olfactionMonster, "green") + " is currently being tracked.");
        if (turtleSexMonster != $monster[none]) {
            description.listAppend(HTMLGenerateSpanFont(turtleSexMonster, "purple") + " is currently being turtlesexed.");
        }
        resource_entries.listAppend(ChecklistEntryMake("__skill Transcendent Olfaction", "", ChecklistSubentryMake(olfactionSniffs + " Olfaction sniffs available", "", description)).ChecklistEntrySetCombinationTag("olfaction").ChecklistEntrySetIDTag("Olfaction queue manipulation"));
}

whereas the ezandora olfaction task generator that includes lots of good logic (that we can add to!) is within sets, in Olfaction.ash (located here). this is really just used to remind users to use sgeeas if on the trail is active, which obviously is useless now, but i think the overarching targeted monster structure can be implemented into a tile like TES built. any thoughts fellow devfolks?

docrostov commented 1 year ago

tes has added a great list of queue manip sources to the wiki. we can use this to help guide tile dev here

https://kol.coldfront.net/thekolwiki/index.php/Adventure_Queue#Queue_Manipulation_sources