Manual and Fax

fronobulax

Developer
Staff member
Has anyone written a script that checks the Monster Manual for a list of monsters that have not been completely researched and then gets one of those from the fax network and fights it? Or is that easier than I think it is? It can be stupid in picking which monster. If it matters to me then I could insert something that made a more nuanced choice.

Thanks.
 

ckb

Minion
Staff member
This is easier than you think it is.
I wrote a simple script that will output a list of monsters that is in the Fax network for which you do not have complete factoids. From this list, you can setup an auto-fax and hunt if you want. Or just copy-and-paste and do it manually once a day.

PHP:
void MMFaxlist() {
	print("Fax monsters for which you do not have all factoids:","olive");
	foreach mm in $monsters[] {
		if (can_faxbot(mm) && monster_factoids_available(mm,true)!=3) {
			print(mm,"purple");
		}
	}
}
 

Crowther

Active member
Wow. That's a whole lot simpler than the code I wrote ages ago. One thing to consider is you really only need to fax a monster and get one factoid after that you can ascend heavy rains and use rainman to finish them off. So instead of "!= 3" I'd do "== 0".

EDIT:

I ended up with this:
Code:
boolean main() {
    print("Fax monsters for which you have no factoids.");
    foreach mm in $monsters[] {
        if (can_faxbot(mm) && monster_factoids_available(mm,true)==0) {
            return faxbot(mm);
        }
    }
    print("Fax monsters for which you are missing factoids.");
    foreach mm in $monsters[] {
        if (can_faxbot(mm) && monster_factoids_available(mm,true)!=3) {
            return faxbot(mm);
        }
    }
    print("You're done!");
    return true;
}
 
Last edited:

Bale

Minion
That doesn't quite work. You're missing something very important.

KoLmafia does not begin the session with a full list of everything in Manuel. It learns that if you visit each and every page of Manuel and then retains that information for the rest of the session. If that code has worked for you, then you have already done that this session. To make KoLmafia do that for you, you need to add one line to your scripts, before you check for factoids:


cli_execute("checkmanuel");
 
Last edited:

Bale

Minion
This does make for an amusing alias:

Code:
alias faxtoid => checkmanuel; ash monster fax_mon() { foreach mm in $monsters[] if (can_faxbot(mm) && monster_factoids_available(mm,true)==0) return mm; foreach mm in $monsters[] if (can_faxbot(mm) && monster_factoids_available(mm,true)<3) return mm; return $monster[none];} faxbot(fax_mon());
 

fronobulax

Developer
Staff member
I'm expanding this so I have something that will find, fax and fight. Hopefully I will get something polished enough to share.

I note that every time I use the fax network KoLmafia says it didn't work but the monster is in the fax anyway. I have a vague recollection that the fax providers need to be on the Clan's whitelist and I am not sure that is true. Is there any other "setting" I should check or do I just start gathering data for a Bug Report?

Thanks again.
 

zarqon

Well-known member
Would also like to mention that you can do this quite conveniently in the relay browser using Factroid. For any monster still visible (i.e. not fully researched), click the monster image for more options -- if it's faxable, there will be a link to fax in the monster. Clicking that link will request the fax, and after the fax arrives the "fax" link will turn into a "fight" link (note: chat must be open for the success to register). I do this for my daily faxputtying whenever I'm in aftercore. Though it's not fully automated, I quite like the visual, at-a-glance method of choosing the monster I wish to faxputty.
 

lostcalpolydude

Developer
Staff member
My solution was to copy/paste the output from missingManuel and then just copy a monster name from that each day. As long as I have a long list of monsters to catch up on (roughly another month of faxing left, I think), I can skip checking Manuel regularly.
 

Bale

Minion
My solution was to copy/paste the output from missingManuel and then just copy a monster name from that each day. As long as I have a long list of monsters to catch up on (roughly another month of faxing left, I think), I can skip checking Manuel regularly.

That is what I did also. Now though, thanks to this thread, I have a handy alias so I can stop checking my text file. I just type "faxtoid" and start copying. I should probably make a script to do that for me. :) Maybe as part of my loginScript if can_interact().
 

Veracity

Developer
Staff member
I just made a list in a text file and did one (or two, if the Deck gave me one I needed) a day until I was done.
Still waiting for Jick to respond to the friendly note I sent him about the last 9 monsters.
Not holding my breath.
 

fronobulax

Developer
Staff member
OK.

I now have a script that iterates across all locations, passes them through canadv, gets the Manuel count for monsters in the location and lists the ones I need. The use case is to figure out where I might want to burn some turns when there is nothing else I desire to accomplish.

There are several monsters that are ultra-rare or require some preparation prior to encounter (bag Lot's wife, for example). Is there a monster property I could check that would let me distinguish between monsters that will just appear ("normal") and those that require some special handling?

I have also seen several cases where I fight a monster but Manuel seems to ignore it. For example, the Quest log and my script both say I need one more fact for the clan of cave bars. Yet I have fought several today and I still need one more. is there something about the Manuel mechanics that I obviously do not know that would change my expectations (and hence my strategy)?

Thanks.
 

Crowther

Active member
There are several monsters that are ultra-rare or require some preparation prior to encounter (bag Lot's wife, for example). Is there a monster property I could check that would let me distinguish between monsters that will just appear ("normal") and those that require some special handling?

The file combats.txt contains that information (sorta). I've no idea how go access it in ash.

I have also seen several cases where I fight a monster but Manuel seems to ignore it. For example, the Quest log and my script both say I need one more fact for the clan of cave bars. Yet I have fought several today and I still need one more. is there something about the Manuel mechanics that I obviously do not know that would change my expectations (and hence my strategy)?
When factoids aren't guaranteed, getting the third factoid can be a bear.
 
Last edited by a moderator:

fronobulax

Developer
Staff member
The file combats.txt contains that information (sorta). I've no idea how go access it in ash.

When factoids aren't guaranteed, getting the third factoid can be a bear.

Pun noted :)

I'll ponder combats.txt and adjust my expectation that one encounter generates one factoid is true. Thanks.
 

lostcalpolydude

Developer
Staff member
> ash appearance_rates( $location[the spooky forest] )

Returned: aggregate float [monster]
Baiowulf => -1.0
none => 45.0
spooky vampire => 9.166666666666666
warwelf => 9.166666666666666
wolfman => 9.166666666666666
spooky mummy => 9.166666666666666
bar => 9.166666666666666
triffid => 9.166666666666666
Notice the -1 for Baiowulf. "none" refers to the noncombat rate, affected by your combat rate modifiers. It looks like -3 indicates a banished monster.
 
Top