New Content - Implemented Reanimated Reanimator

Bale

Minion
Sadly this will not be simple to add to KoLmafia so that we can get on with the important business of a new point release.

1. Enable a wander monster for it, just like with the obtuse angel. Do we want to call it "romantic monster" like with the angel or give it a new name like, "reanimated monster." since we can only have one or the other, not both, we cannot have a conflict so I'd prefer the second choice.

2. Keep track of body parts collected. Oy, Vey! Do we need an api.php for this or what?

3. Have mafia track item drop bonus and meat drop bonus for the familiar based on legs and skulls collected.

4. Mafia does track the other bonuses for this familiar, but certain scripts, like BatBrain will still need a way to access numbers of arms, wings and weirds.
 

Darzil

Developer
r12759 recognises familiar, items, equipment and throne effect.

The exact effects of body part collection aren't clear from wiki yet. Am on a 100% familiar run, so can't check yet if they are directly shown in the character pane, if they are, we'd need to parse and request adding to api.php. Haven't yet added reanimated monster check. I understand you always get 3 returners, not sure if it's still 15-25. Still need arena data.
 

lostcalpolydude

Developer
Staff member
1. Enable a wander monster for it, just like with the obtuse angel. Do we want to call it "romantic monster" like with the angel or give it a new name like, "reanimated monster." since we can only have one or the other, not both, we cannot have a conflict so I'd prefer the second choice.

Using a new name means slightly more complicated code both in mafia and in any scripts for the sake of better flavor. I'm not sure what I think about that.

Edit: And now I realize that after fighting the first wandering monster, mafia would still need to remember which counter to create again. I'm liking that idea even less.
 
Last edited:

lostcalpolydude

Developer
Staff member
Since tracking body parts isn't hard enough, this post says the familiar loses parts when not in use.

Also, someone reported 3 wandering monsters without having to do anything special.
 

Darzil

Developer
Well, I guess it starts as standard volleyball, or at least volleyball, according to after combat messages in Dis. Wiki doesn't yet confirm.

Non-combat 801 shows the parts collected (and allows choosing which parts to collect) : (You don't have to hit exit, you can just adventure somewhere and you'll not be stuck in the non-combat - Friar now appears to be the same - Mafia thinks you are in a non-combat though)
Code:
<centeR><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>A Reanimated Conversation</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><center><img src="/images/adventureimages/bigreanimator.gif" width=100 height=100></center><p>You tap on one of the Reanimator's glowing green jars, making a delicate little <i>ding</i>.<p>"Don't interrupt a genius while he's at work!" he snarls, but then softens. "Oh, it's you. The work proceeds apace. I am currently collecting skulls, arms, legs, wings and weird parts.<p>"Will that serve our scientific ends, or shall we adjust the sample set?"<p>He is surrounded by a scuttling swarm of reanimated body parts, including:<br><b>7 arms<br>2 legs<br>6 skulls<br>7 weird random parts<br></b><center><form name=choiceform1 action=choice.php method=post><input type=hidden name=pwd value='14230992481707d186a5bfb885e724ee'><input type=hidden name=whichchoice value=801><input type=hidden name=option value=1><input class=button type=submit value="Stop collecting skulls"></form><form name=choiceform2 action=choice.php method=post><input type=hidden name=pwd value='14230992481707d186a5bfb885e724ee'><input type=hidden name=whichchoice value=801><input type=hidden name=option value=2><input class=button type=submit value="Stop collecting arms"></form><form name=choiceform3 action=choice.php method=post><input type=hidden name=pwd value='14230992481707d186a5bfb885e724ee'><input type=hidden name=whichchoice value=801><input type=hidden name=option value=3><input class=button type=submit value="Stop collecting legs"></form><form name=choiceform4 action=choice.php method=post><input type=hidden name=pwd value='14230992481707d186a5bfb885e724ee'><input type=hidden name=whichchoice value=801><input type=hidden name=option value=4><input class=button type=submit value="Stop collecting wings"></form><form name=choiceform5 action=choice.php method=post><input type=hidden name=pwd value='14230992481707d186a5bfb885e724ee'><input type=hidden name=whichchoice value=801><input type=hidden name=option value=5><input class=button type=submit value="Stop collecting weird parts"></form><form name=choiceform6 action=choice.php method=post onsubmit='return confirm("Really have the Reanimator dismiss his entire swarm of parts?")' ><input type=hidden name=pwd value='14230992481707d186a5bfb885e724ee'><input type=hidden name=whichchoice value=801><input type=hidden name=option value=6><input class=button type=submit value="Ditch the whole swarm"></form><form name=choiceform7 action=choice.php method=post><input type=hidden name=pwd value='14230992481707d186a5bfb885e724ee'><input type=hidden name=whichchoice value=801><input type=hidden name=option value=7><input class=button type=submit value="See ya later, Reanimator!"></form></center></td></tr></table></center></td></tr><tr><td height=4></td></tr></table></center>

Link to this non-combat is in the chatpane, <a target=mainpane href="main.php?talktoreanimator=1">.

Loads of different messages for getting arms, legs, etc. Wiki looks incomplete on that.
Seem to lose 1 item each combat turn that you aren't running him (free runaways do not lose an item), which goes from the item you have least of (but non zero), haven't worked out yet if tiebreaker is random or not. If not, we have a chance here. Could be just earliest in the list, but low number of datapoints so far. Edit - Bah, it looks random unless I made an error.
 
Last edited:

Darzil

Developer
I guess to support calculations based on parts we'd need to visit the talktoreanimator page when we equip the familiar, and otherwise track additions. Not ideal, but at least we'd not need to track the removals which we cannot 100% determine.

Ideally there would be an api.php and a hidden field in charpane giving the numbers I guess, then we'd skip those server hits entirely and make tracking much easier.

The only thing that wouldn't really allow is predicting what the affect of equipping the familiar would be without equipping it. Does that matter at all ?
 

Winterbay

Active member
Well, it would be a potential problem for the switch-command for the maximizer, but I'm not sure if that's a real real problem or just a problem :)
 
Also when running a "whatif" (not sure if that uses the same method as the maximizer switch command). But yeah, I wouldn't say it's a problem problem in either case :)

You could track the adventure that the Reanimator was last used, so you don't unnecessarily hit the chat page if no adventures have been spent since he was last active.
 

Darzil

Developer
Free runaway doesn't lose an item, as per post 5. Haven't yet tested losing or winning free fight, but as you can't predict which of two even stacks will decrement, it means we can't be accurate anyway, so stopped caring.

Edit - wiki info on item limits (x1.5 weight without it's equipment, x2 with) may be incorrect. I hit limit at 32 with 16 lbs with das boot (11 lbs base + 5 buffs -10 lbs boot). There is no limit message, but you don't get an acquire message.
Edit again - very wrong, still at 16 lbs, but got a drop the next adventure, looks like acquisition rate only slows!
 
Last edited:

Darzil

Developer
If anyone wants support for this soon and wishes to help I'd recommend adding the gaining parts messages to the wiki. There appear to be many missing at present.
 

Bale

Minion
wrldwzrd89 has just done something to help contribute. He's donated a Reanimator to me so that I can post messages to the wiki as I see them. Thanks wrldwzrd89!

Reanimated Wrldwzrd says, "Without arms, my swarm would just be a 'sw!'" You gag on that pun as he reanimates an arm and adds it to his swarm.
Reanimated Wrldwzrd says, "My creations are far from harmless, especially without one arm less!" You ignore the attempt at humor and watch him reanimate an arm to add to his swarm.
Reanimated Wrldwzrd says, "Ah, finally! A metric arm, instead of those imperial ones we've encountered thus far!" You're not sure whether he's joking or not, but he grabs the arm and reanimates it.

Reanimated Wrldwzrd says, "My calculations indicate that this wing would be a perfect addition to the swarm!" He reanimates it and it flits off to join the rest of the undead body parts.
Reanimated Wrldwzrd reanimates a wing from your fallen opponent, rubbing his hands together with glee as it joins the swarm.
Reanimated Wrldwzrd consults his notes. "A wing! I need another wing!" he shouts, and reanimates one of your opponent's wings.
Reanimated Wrldwzrd says, "Time for our creation to take WING!" and takes one of your opponent's wings to add to the swarm.
Reanimated Wrldwzrd says, "This wing is aerodynamically perfect for an addition to the swarm!" He reanimates it with his glow-juice and it flutters off to join the swarm.
 

Darzil

Developer
Hopefully am getting there with a basic patch. Still needs some messages, probably, as well as visiting and parsing the chat page, and testing. Am waiting for a server to test it on, and to finish testing my Hacienda patch (which is very close I think). Just saying this in case others are thinking of looking at it.
 

Veracity

Developer
Staff member
Are you parsing "parts" from the charpane? If so, we presumably need to ask for them to go into api.php.
What's the list?
 

Darzil

Developer
Parts aren't in the charpane, they are on a separate page accessed by the chat link. If they were in charpane/api we'd clearly save a fair bit of code/parsing.

Plan is to add 6 preferences, 5 to track each part, 1 to track last adventure familiar was used.
FightRequest checks for part messages, and increments appropriate part preference. Also sets last turn used to current turn.
FamiliarRequest visits the chat link when familiar is equipped, if current turn isn't last turn used.
When chat link is visited, current number of parts is updated from the parsed page.
This added to modifiers.txt:
Code:
Fam:Reanimated Reanimator	Volleyball: 1, Meat Drop: [sqrt(220*pref(reanimatorSkulls))+2*pref(reanimatorSkulls)-6], Item Drop: [sqrt(55*pref(reanimatorLegs))+pref(reanimatorLegs)-3]

Reason for doing that is we cannot accurately tell which parts are lost when the familiar isn't used.

KoL being down is stopping testing, but also is giving me time to look at code instead. You win some, you lose some.
 

Darzil

Developer
Looking pretty good, but where is the best place to put code to parse a Choice Adventure, prior to taking any choices, given that it may be in relay browser or fired off by automation? (Will be looking at choice 801 to get current list of parts found)
 

Veracity

Developer
Staff member
All the methods in ChoiceManager are called for choices from both the Relay Browser and automation, except processChoiceAdventure, which actually automates a chain of choices.

ChoiceManager.visitChoice is called before you take an option.
 

Darzil

Developer
r12826.

Updates part count when familiar is equipped, and at the end of combats when it is equipped. Accounts for meat drop and item drop in modifiers. Resets part count if you ditch them. Adds preferences reanimatorArms, reanimatorLegs, reanimatorSkulls, reanimatorWeirdParts, reanimatorWings to hold the count of parts.

I decided it wasn't worth trying to account for the reduction of parts over time, as they aren't 100% predicable, and it'd require accounting for how fights with other familiars turn out.

After discussion I also decided it wasn't worth trying to check for whether a fight had finished without it to flag whether familiar needs an update or not. There are two many niche free fights, free wins in hidden city with certain items, free runaways etc that make that trickier, and having to spade all of them and spade them each time things change seemed a lot more effort (and code) than just checking each time the familiar is equipped, especially as most people will only be using it once per day (or in a 100% run). One server hit is a price worth paying for accuracy. If any dev disagrees they are welcome to change it.
 
Top