New Content - Implemented Spookyraven Revamp

ckb

Minion
Staff member
In The Haunted Bedroom, after every combat there is a choiceadv. This seems to break my afterAdventureScript with an error (depending on what it is trying to do).
afterAdventureScript should not trigger until AFTER the follow-on choiceadv.
 

Terion

Member
I'm not sure how to check what Mafia believes to be the enchantments on items, so I'm not sure if it is Mafia or the Enhanced Inventory Spoilers that needs to get updated.

The various pool balls (except the UR 17-ball)have been upgraded, at around the time of the revamp:
The Autosell of the 1-ball through the 8-ball was increased from 35 to 65, and the 9-ball was increased from 55 to 85.
The offhand balls (1-7 and 9) gained a stat requirement of 15 Myst.
The 1-ball's enchantment was increased from +5% to +10% init.
The magnitude of the damage enchantments on the 2-ball through 6-ball, and 9-ball, were increased from 5 to 8.
(The 7-ball's +Meat enchantment was not changed.)

And, just thought to check the Maximizer; for cold damage, it's suggesting the 2-ball for +5, so it is Mafia with the old numbers.

Edit: This is in r14010. And I just noticed that the notes for r14011 says it has updates, so I'm going to go get the current build as I should have. *blush* Is there a handy command to get Mafia to tell you what it "knows" about an item?
 
Last edited:

Terion

Member
I just updated to r14014, and the Maximizer still seems to be considering them to be +5, when they are now +8. (For example, when setting the Maximizer to "sleaze damage", it is suggesting the orcish stud-finder for +5; cold suggests the 2-ball, but marks it as (+5).)

So the autosell and stat req may be updated (can't see those from the Maximizer,) but it appears to me that the enchantment increases I listed above may still need to be added.
 

lostcalpolydude

Developer
Staff member
I just updated to r14014, and the Maximizer still seems to be considering them to be +5, when they are now +8. (For example, when setting the Maximizer to "sleaze damage", it is suggesting the orcish stud-finder for +5; cold suggests the 2-ball, but marks it as (+5).)

So the autosell and stat req may be updated (can't see those from the Maximizer,) but it appears to me that the enchantment increases I listed above may still need to be added.

14018.

Those changes didn't show up in checkitems (what I used to find the other changes), or checkmodifiers, I thought there was already a convenient automated way of finding those things but apparently there isn't.
 

Veracity

Developer
Staff member
It looks like checkmodifiers just checks to make sure that there are no completely unknown modifiers in various modifier strings. I am sure it was useful once.

checkitems compares the item desc vs. internal data as seen in items.txt and equipment.txt, but does not compare vs. modifiers.txt; it simply generates the equivalent of modifiers.txt from the item descs.

It doesn't actually compare the modifiers for several reasons:
- some modifiers in modifiers.txt are manually added - familiar effects for hats and pants, for example
- lots and lots of modifiers have an expression, since their effects vary depending on character level, say.

I think I wrote some code to evaluate all the modifiers in a string, for use in a cli command. Yes - PastaThrallsCommand uses Modifiers.evaluateModifiers. It's not completely generic since it breaks apart the modifier string by simply splitting at commas, and some modifiers (like Familiar Effect) can include commas. The code in checkmodifiers is more robust.

Seems to me we could do the following for each item:

- Generate a modifier string (and list of unknown modifiers) from the item desc and make a Modifiers structure for it
- get the Modifiers structure that already exists for the item
- compare the fields in the two structures. If there is an expression, evaluate it and compare to the "current" value from the desc.
- list all differences with a ***, as we do for the items.txt and equipment.txt checks.
- output the "correct" modifier string - including expressions.

Note that we can't intuit expressions for new items, but this would let us do a better job of detecting changed modifiers.

That's not a trivial function, but it's probably not more than an afternoon's work.
 

Bale

Minion
I would appreciate if questM21Dance was set to "finished" when I dance with Lady Spookyraven in the Ballroom. Here's the text of that adventure.

HTML:
<body><img src='/images/itemimages/blank.gif' id='dragged'><div id='debug'></div><div class=contextmenu id='skillmenu'></div><div class=contextmenu id='itemsmenu'></div><div id=topbar><center><table class=actionbar cellpadding=0 cellspacing=1><tbody><tr class=label><td> </td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr class=blueback><td><a href='adventure.php?snarfblat=395'><img src='/images/itemimages/plexpock.gif'></td><td class=spacer></td><td><img src='/images/itemimages/blank.gif' id='skills'></td><td class=spacer></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td><img src='/images/itemimages/blank.gif'></td><td class=spacer></td><td class=spacer></td><td><img src='/images/itemimages/blank.gif'></td></tr><tr class=label><td>again</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table></center></div><div class='content' id='content_'><div id='effdiv' style='display: none;'></div><div style='overflow: auto;'>
<centeR><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Adventure Results:</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><center><b>Having a Ball in the Ballroom</b><br><img src="/images/adventureimages/organ.gif" width=100 height=100></center><p><blockquote>Ghostly strains of organ music (or perhaps strains of ghostly organ music) gently and creepily caress your ears as you walk into the ballroom. You see rotting streamers festooning the walls, and a table with an empty, dusty punch bowl, rotting hors d'oeuvres, and a giant cake that would make Miss Havisham turn green with envy.<p>There are couples in various stages of decay, from "fresh zombie" to "ancient ghost," and they're all waltzing the night away.<p>You feel a cold hand on your shoulder and a voice says, "may I have this dance?" You turn and see Lady Spookyraven herself, or the ghost thereof, hovering beside you.<p>"Uh, sure," you say, "but I kind of have two left feet. I don't mean that metaphorically, either; it's a pretty serious deformity."<p>Lady Spookyraven laughs softly. "I think I'm beyond worrying about someone stepping on my toes," she says.<p>You go out onto the dance floor with Lady Spookyraven and waltz, foxtrot, and box-step until you're just about worn out. dancing with a ghost is kind of a workout, both physically and mentally; you have to make sure not to commit the faux pas of accidentally stepping through your dance partner. But when you step off the dance floor as the song ends, all the spectres and various dead and undead partygoers applaud.</blockquote><p><center><table><tr><td>You gain 110 Strengthliness.<br><b>You gain a Muscle point!</b></td></tr></table></center><center><table><tr><td>You gain 100 Magicalness.<br><b>You gain some Mysticality points!</b></td></tr></table></center><center><Table><tr><td>You gain 100 Roguishness.<br><b>You gain some Moxie points!</b></td></tr></table></center><Center><p><a href="adventure.php?snarfblat=395">Adventure Again (The Haunted Ballroom)</a><p><a href="place.php?whichplace=manor2">Go back to Spookyraven Manor Second Floor</a></center></center></td></tr></table></center></td></tr><tr><td height=4></td></tr></table></centeR></div></div></body

Alternately (in case that adventure is not seen by mafia), it should be set to finished when manor2 has a link to place.php?whichplace=manor3 or mafia otherwise sees manor3.

Edit: Quest Parsing: If questM17Babies is ever set above unstarted, then questM21Dance should be set to finished.
 
Last edited:

Bale

Minion
Mafia should set questM17Babies to "started" when it sees the following...

HTML:
<body>
<centeR><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Results:</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td>Lady Spookyraven looks even paler and more disheveled than usual.<p>"Bale!  I'm so grateful you came.  My babies!  I nearly forgot them!  I...  what kind of mother am I?  The three of them are running around like mad, and of course they are -- they miss their mother!"<p>"Wait...  I thought you only had two children," you reply.<p>"No!  After Steven and Elizabeth turned out to be so... disappointing, Maurice and I decided to try one last time."<P>"Ha ha ha, Maurice?"<p>She ignores you and continues: "But instead of one bundle of joy, we received three!  Triplets!  And oh, I loved them so dearly.  I couldn't possibly leave without saying goodbye.  Please, gather them together and bring them to me."<p>"Okay.  Any advice on how?  Live kids are hard enough to herd, and they can't even fly or pass through walls."<p>"Here are a few of their favorite things," she says, handing you some dusty old toys.  "Surely they'll remember."<center><table class="item" style="float: none" rel="id=7314&s=0&q=1&d=0&g=0&t=0&n=1&m=0&p=0&u=."><tr><td><img src="/images/itemimages/poppet.gif" alt="dusty poppet" title="dusty poppet" class=hand onClick='descitem(580089747)'></td><td valign=center class=effect>You acquire an item: <b>dusty poppet</b></td></tr></table></center><center><table class="item" style="float: none" rel="id=7315&s=0&q=1&d=0&g=0&t=0&n=1&m=0&p=0&u=."><tr><td><img src="/images/itemimages/horsehead.gif" alt="rickety rocking horse" title="rickety rocking horse" class=hand onClick='descitem(882398650)'></td><td valign=center class=effect>You acquire an item: <b>rickety rocking horse</b></td></tr></table></center><center><table class="item" style="float: none" rel="id=7316&s=0&q=1&d=0&g=0&t=0&n=1&m=0&p=0&u=."><tr><td><img src="/images/itemimages/jackinthebox.gif" alt="antique jack-in-the-box" title="antique jack-in-the-box" class=hand onClick='descitem(671902661)'></td><td valign=center class=effect>You acquire an item: <b>antique jack-in-the-box</b></td></tr></table></center></td></tr></table></center></td></tr><tr><td height=4></td></tr></table><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Spookyraven Manor Third Floor</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><center><div id=background style='position:relative;'><img src="/images/otherimages/spookyraven/sr_back3.gif" width=400 height=450 border=0><div id=manor3_ladys style=' position: absolute; top: 135; left: 268; height: 65; width: 65;'><a  href=place.php?whichplace=manor3&action=manor3_ladys><img src="/images/otherimages/spookyraven/sr_ladys.gif" width=65 height=65 border=0 alt="Lady Spookyraven" title="Lady Spookyraven"></a></div><div id=manor3_stairsdown style=' position: absolute; top: 68; left: 273; height: 60; width: 60;'><a  href=place.php?whichplace=manor2><img src="/images/otherimages/1x1trans.gif" width=60 height=60 border=0 alt="Stairs Down" title="Stairs Down"></a></div><div id=manor3_lab style=' position: absolute; top: 250; left: 209; height: 130; width: 130;'><a  href=adventure.php?snarfblat=396><img src="/images/otherimages/1x1trans.gif" width=130 height=130 border=0 alt="The Haunted Laboratory (1)" title="The Haunted Laboratory (1)"></a></div><div id=manor3_nursery style=' position: absolute; top: 249; left: 63; height: 130; width: 140;'><a  href=adventure.php?snarfblat=397><img src="/images/otherimages/1x1trans.gif" width=140 height=130 border=0 alt="The Haunted Nursery (1)" title="The Haunted Nursery (1)"></a></div><div id=manor3_storage style=' position: absolute; top: 12; left: 65; height: 115; width: 185;'><a  href=adventure.php?snarfblat=398><img src="/images/otherimages/1x1trans.gif" width=185 height=115 border=0 alt="The Haunted Storage Room (1)" title="The Haunted Storage Room (1)"></a></div></div><p><a href=place.php?whichplace=manor2>Back to the Second Floor</a></center></td></tr></table></center></td></tr><tr><td height=4></td></tr></table></center></body>
 

lostcalpolydude

Developer
Staff member
In The Haunted Bedroom, after every combat there is a choiceadv. This seems to break my afterAdventureScript with an error (depending on what it is trying to do).
afterAdventureScript should not trigger until AFTER the follow-on choiceadv.

It turns out this is harder to fix than I expected. I thought it would be as simple as setting FightRequest.inMultiFight if there's a link to choice.php at the end of the fight. That works, but then it isn't unset at the end of the following noncombat.
 

Veracity

Developer
Staff member
Note that we can't intuit expressions for new items, but this would let us do a better job of detecting changed modifiers.
That's not a trivial function, but it's probably not more than an afternoon's work.
It really would be nice if "checkitems" would report when KoLmafia's modifiers are inconsistent with KoL's. So, I'll be working on this soon.
 

Darzil

Developer
Looks like Skeletal Sommelier's can now drop a dusty wine of a random type, and Wine Racks can now drop up to two dusty wines of a random type. I'd prefer to be able to include things like "dusty wine" in monsters.txt (and paper strip for Nemesis cave), but I guess we can't set up and use such pseudo items easily?
 

lostcalpolydude

Developer
Staff member
In The Haunted Bedroom, after every combat there is a choiceadv. This seems to break my afterAdventureScript with an error (depending on what it is trying to do).
afterAdventureScript should not trigger until AFTER the follow-on choiceadv.

14048
 
r14004 should fix that.

It doesn't. I have r14052 and still see KoLMafia aborting on library noncombats.

It just isn't bothering many people since it's easy enough to fix. Copy/paste the following two lines into CLI and you'll automatically skip those noncoms.

Code:
set choiceAdventure888 = 4
set choiceAdventure889 = 4

That seems to work, but is highly non-obvious. Perhaps the unrecognized choice adventure text should be expanded to say how to add an auto-resolve option for those of us who aren't familiar with all the arcane incantations of KoLMafia?
 

lostcalpolydude

Developer
Staff member
Just go into the Choice Advs section of the GUI like you do for every other choice adventure in the game and change the setting there. Bale's post was from before that was available, I assume.
 
Just go into the Choice Advs section of the GUI like you do for every other choice adventure in the game and change the setting there. Bale's post was from before that was available, I assume.

I've checked the Choice Advs section of the GUI nearly every day since the update and it hasn't changed. The only entry I see for the Haunted Library already is set to skip adventure. See for yourself:
Mafia is book intolerant.png

And I continued to get messages about 'Unrecognized noncombats', which I would not expect if KoLMafia actually knew about the adventures.
 
Top