Manuel Progress (the relay version)

matt.chugg

Moderator
What is it?

This relay script provides a visual representation of KoLmafia's knowledge of your Monster Manuel Factoids.

Features

It will provide a list of zones, locations and monsters, and indicate whether you have none, some or all of the relevant factoids.
Allow you to refresh a single location, single zone, or all (hit only the relevant pages of the Manuel to update)

Notes
Mafia tracks your factoids, but doesn't ever visit the Manuel, so if you haven't visited that section of the quest log, Mafia will report (and therefore the script will also report) zero factiods. Clicking refresh all will cause the script to hit every page, and therefore the internal data to update and therefore the script.

The above may sound clumsy, but consider you have already run and been working on your Manuel progress, this allows to re-open the script/tab without causing server hits.

When choosing what pages to hit on a zone/location refresh, this will ignore complete monsters, even if the page is relevant to other zones you haven't yet refreshed.

Mafia will display in the CLI what pages are being hit.

There may be bugs, it is a first release, i'll add features based on requests.

Ignores UR monsters as they do not have factoids

Ignores removed areas, if you fax/photocopy you can bring back removed areas by setting
Code:
set mskc_mp_show_removed_areas = true
Installation and Usage

In the CLI :

Code:
git checkout https://github.com/matt-chugg/manuel_progress.git

In the relay dropdown choose Manuel Progress. (there's a button to have the script pop out into a new tab too!)

Requires Form of HTML..

Screenies

1.png

SETTINGS

Show removed/old areas, hidden by default


Code:
set mskc_mp_show_removed_areas = true

hide areas with no more factoids to find (100% complete)

Code:
set mskc_mp_hide_completed_areas = true

Hide areas that are nearly completed (apart from one-time/boss monsters/semi-rare)

Code:
set mskc_mp_hide_nearly_completed_areas = true
 
Last edited:

fronobulax

Developer
Staff member
Nice. Thank you.

For me it supplements a version of Missing Manuel with local edits. To replace it (hint, hint) I would want:

  • The frequency of appearance of each monster (for the zone it is being displayed in) displayed with the monster name.
  • The ability to not display a zone if all monsters in it have been dealt with
  • An indication of the availability of the area.

For the first just appending the value of appearance_rates would suffice. For the latter just appending Available or Unavailable according to canadv would be fine. Sometimes I would want to suppress unavailable areas but sometimes not.

Thanks again.
 

matt.chugg

Moderator
All of those are useful suggestions, 2 of those three are in the TODO list, which may also be in SVN so might be visible, Will add the appearance rate as it is pure data and good suggestion

I plan to add filters as I did with crimbo15 but with further ajax to save filter selection filter choice between loads

Glad you like it, rest assured, your suggestions are in hand!
 

Erich

Member
Thanks for the script! I always appreciate a good relay script.

Suggestion: If you look at Turing's MissingManuel script, it has a nice list of blocked monsters, extra monsters, and extra areas. Incorporating those would get rid of things like Ultra Rares, old uncopyable monsters with no factoids (like most of Crimbo10), and one offs like the Spirit Bell. It'll also add monsters like the Trophy Fish, Lynyrd, Tomb Rat King, and areas like Bugbear Invasion and Heavy Rains that have a bunch of monsters.

Cheers!
 

Bale

Minion
I'm not so sure that never checking Manuel is a good idea. I approve of not needing to check it every single time, but those are not the only two options. You could change it so that it checks Manuel once when first used by a given character, then never again. Or once per ascension. Or once per day.
 

matt.chugg

Moderator
Or even have that be a configurable variable.

I think what I need is a mafia setting that says whether the specific page of the Manuel has been viewed at any point during the session. then I can add a config setting to the relay script to hit up any unviewed pages for that session.

I'll take a look at the internals of all the quest tracker stuff, and see if theres scope for a feature request to be added
 

matt.chugg

Moderator
Thanks for the script! I always appreciate a good relay script.

Suggestion: If you look at Turing's MissingManuel script, it has a nice list of blocked monsters, extra monsters, and extra areas. Incorporating those would get rid of things like Ultra Rares, old uncopyable monsters with no factoids (like most of Crimbo10), and one offs like the Spirit Bell. It'll also add monsters like the Trophy Fish, Lynyrd, Tomb Rat King, and areas like Bugbear Invasion and Heavy Rains that have a bunch of monsters.

Cheers!

Good idea, i'll take a look, got some of this figured out from the the crimbo15 script, will look for the next release
 

fronobulax

Developer
Staff member
I think what I need is a mafia setting that says whether the specific page of the Manuel has been viewed at any point during the session. then I can add a config setting to the relay script to hit up any unviewed pages for that session.


I'm a little confused. If mafia looks at a manual page, I adventure in an area associated with that page and find a factoid, isn't it true that mafia will not know about that the page has a new factoid until I look at the manual page again? So the view status of a page is no guarantee that the information is accurate. Correct?
 

matt.chugg

Moderator
I'm a little confused. If mafia looks at a manual page, I adventure in an area associated with that page and find a factoid, isn't it true that mafia will not know about that the page has a new factoid until I look at the manual page again? So the view status of a page is no guarantee that the information is accurate. Correct?

I actually dont know, does AdventureResult increment the factoid count? Or does mafia rely on a visit to the quest log?

I think the best all round solution is to have annoptions screen, and allow people the option to force a refresh when run every time, for the first time a day, or only manual refresh? From what is said above tracing whether a page has been hit in a session isn't actually useful information
 

Erich

Member
Good idea, i'll take a look, got some of this figured out from the the crimbo15 script, will look for the next release

Ah ok, cause the crimbo '15 quest conflicts a bit with manuel lists. For example, I got a +1 from a X-32-F Combat Training Snowman, but it has no factoids (as of yet). Also, certain monsters have factoids, but you couldn't get them for crimbo, like anything in Spelunky, the DB and AT final nemesis form, and Wu-Tang.
 

matt.chugg

Moderator
Ah ok, cause the crimbo '15 quest conflicts a bit with manuel lists. For example, I got a +1 from a X-32-F Combat Training Snowman, but it has no factoids (as of yet). Also, certain monsters have factoids, but you couldn't get them for crimbo, like anything in Spelunky, the DB and AT final nemesis form, and Wu-Tang.

Fair enough,will make sure I investigate the other scripts too
 

matt.chugg

Moderator
Frequency rates added. SVN update.

2.png


Now that I have this added i'll start on the configuration ability.

I think to start with there should be the following options:

Automatically refresh all manuel pages: dropdown("On first run per day","On first run per session","always","never"); (default, never)
Don't show 100% completed zones/locations
Ignore UR monsters when determining completness of a zone/location

i'll also look at the other scripts for monsters that should be always ignored because they are impossible to get, or becuase they just don't have factoids.
 

fronobulax

Developer
Staff member
I like the text added to the frequency ('normal", "one time/boss", etc.) Thank you.

I am not sure just how much efficiency is possible for manual hits. If I had to work with the current state I would refresh all pages at the start of a session and then use mafia's knowledge of what just happened to decide whether it effected Manual status or not. I think I would need an after adventure/battle script to do that in coordination with the main script. That approach might not pass my personal cost/benefit analysis.

If I were going to do it right I would probably let mafia manage things. That means mafia would have to have an internal model of the state of the Manual and then update that state in response to events. That might be worth doing, especially if there was some evidence that mafia caused hits on the Manual were significant or noticeable.

In the short term, as a player I want the ability to refresh everything, so I can decide correct information is more valuable than saving server hits and the ability to refresh a single zone. Based on my use of similar scripts I would refresh all and then enter a loop. The loop manually picks an area that is promising for factoids and adventures there. If the adventures were manually done and I was paying attention I can decide to pick the next area without any kind of refresh. Otherwise I would manually refresh that area and then start the loop again, by picking an area.

I'm sure I could automate that process but I am not sure how I would detect a factoid was obtained without parsing results myself and not sure it is worth doing when factoids are a tertiary goal and thus only get a handfull of adventures per day, if at all.
 

matt.chugg

Moderator
I like the text added to the frequency ('normal", "one time/boss", etc.) Thank you.

Welcome!

I am not sure just how much efficiency is possible for manual hits. If I had to work with the current state I would refresh all pages at the start of a session and then use mafia's knowledge of what just happened to decide whether it effected Manual status or not. I think I would need an after adventure/battle script to do that in coordination with the main script. That approach might not pass my personal cost/benefit analysis.

Perhaps you are right, and i'm being too picky, but one of the issues I had with the CLI version was the constand need to re-run the script becaus it got pushed off as the CLI, then I took to copying and pasting the cli out and working from notepad. hence the relay script, was supposed to be purly informational, but I can see the scope for automated adventuring.

If I were going to do it right I would probably let mafia manage things. That means mafia would have to have an internal model of the state of the Manual and then update that state in response to events. That might be worth doing, especially if there was some evidence that mafia caused hits on the Manual were significant or noticeable.

I suppose the only accurate way to get factoids is to hit the pages, but what if mafia had 2 proxy values one for monster.manuel_factoids (the value detected by hitting the questlog) AND monster.session_factoids (for when mafia sees a factoid in adventure result) I think mafia would only have to look for the manuel image, and increment this value, since you can only see a factoid if you havn't got all three, they are never re-shown.

Then the script could hit the manuel on all pages on first run per session, and then wouldn't need to again for the duration of the session. it's also possible, that since you can't lose a factoid, that assuming everything is done in mafia this data could be maintained through sessions.

In the short term, as a player I want the ability to refresh everything, so I can decide correct information is more valuable than saving server hits and the ability to refresh a single zone. Based on my use of similar scripts I would refresh all and then enter a loop. The loop manually picks an area that is promising for factoids and adventures there. If the adventures were manually done and I was paying attention I can decide to pick the next area without any kind of refresh. Otherwise I would manually refresh that area and then start the loop again, by picking an area.

Once I add can_adv and some hide show options, having an option to refresh all on load or not, would suit your requirments? this setting would be maintained so you'd only need to set it once to work how you would like it.

I'm sure I could automate that process but I am not sure how I would detect a factoid was obtained without parsing results myself and not sure it is worth doing when factoids are a tertiary goal and thus only get a handfull of adventures per day, if at all.

As above, I think you only need to see the image, but also as above, detecting in AdventureResult in mafia might be better
 

fronobulax

Developer
Staff member
"having an option to refresh all on load or not" would work AFAIK.

My workaround for the scrolling problem is

Code:
cli_execute("mirror start");
print(my_name() + " at " + today_to_string() + " " + time_to_string());
cli_execute("call missingManuel.ash");
print("* * * * *");
cli_execute("mirror stop");

The results are appended to a file, start.txt in my mafia directory and I drag it to a browser window because that is marginally more convenient than a text editor during run for me. I put the character name, time and asterisks because the file appends and sometimes I want that and the values help me compare if I want to. missingManuel hits every page, every time.

You can see why your script is such a convenient replacement.
 

matt.chugg

Moderator
Had a look at other scripts and the wiki,

I've removed UR monsters, they never have factoids, so totally irelevant to this.

I've also hidden all removed areas. For the completioinist who wants to see these areas included in the list, set mskc_mp_show_removed_areas = false (i'll build a config page for settings later, lets get the functionailty right!)


SVN update
 

matt.chugg

Moderator
"having an option to refresh all on load or not" would work AFAIK.

My workaround for the scrolling problem is

Code:
cli_execute("mirror start");
print(my_name() + " at " + today_to_string() + " " + time_to_string());
cli_execute("call missingManuel.ash");
print("* * * * *");
cli_execute("mirror stop");

The results are appended to a file, start.txt in my mafia directory and I drag it to a browser window because that is marginally more convenient than a text editor during run for me. I put the character name, time and asterisks because the file appends and sometimes I want that and the values help me compare if I want to. missingManuel hits every page, every time.

You can see why your script is such a convenient replacement.

have you clicked on the arrow in the little box in the top right of the header, perhaps i'll change that, but it opens it in a new tab for you so you can carry on adverntuing in the kol frame, but view the list outside :)
 

heeheehee

Developer
Staff member
I suppose the only accurate way to get factoids is to hit the pages, but what if mafia had 2 proxy values one for monster.manuel_factoids (the value detected by hitting the questlog) AND monster.session_factoids (for when mafia sees a factoid in adventure result) I think mafia would only have to look for the manuel image, and increment this value, since you can only see a factoid if you havn't got all three, they are never re-shown.

Then the script could hit the manuel on all pages on first run per session, and then wouldn't need to again for the duration of the session. it's also possible, that since you can't lose a factoid, that assuming everything is done in mafia this data could be maintained through sessions.



Once I add can_adv and some hide show options, having an option to refresh all on load or not, would suit your requirments? this setting would be maintained so you'd only need to set it once to work how you would like it.



As above, I think you only need to see the image, but also as above, detecting in AdventureResult in mafia might be better

From FightRequest.java:
Code:
			if ( responseText.contains( "monstermanuel.gif" ) )
			{
				GoalManager.updateProgress( GoalManager.GOAL_FACTOID );
				MonsterManuelManager.reset( monster );
			}
where MMM.reset(monster) removes the cache entry. My concern with changing this to increment the number of known factoids for the monster is that it might either lead to unnecessary server hits (from checking Manuel after each new factoid), or incorrect tracking (if invoked before fetching the corresponding Manuel page).
 

matt.chugg

Moderator
hmm, I didn't realise that would reset the cache, I'll do some more thorough testing of that tomorrow.

in the mean time, I've added 2 more settings, manually control for now in the CLI but should be useful.

Hide completed areas, eg no more factoids to find (locations and zones)
Code:
set mskc_mp_hide_completed_areas = true

Hide areas that are nearly completed (eg 100% apart from one-time/boss monsters)
Code:
set mskc_mp_hide_nearly_completed_areas = true
 
Last edited:
Top