Bug - Fixed Ice house banish parsing

Ezandora

Member
Tested on r16573.

Steps:
1. Adventure in one of several areas where banishing is impossible. (secret government lab, toxic teacups, seconds diner, etc)
2. Visit ice house in the museum.

Results:
"Banish ice house failed." in the GCLI

Code:
> ash $monster[a.m.c. gremlin].is_banished()

Returned: false

Cause:
A switch statement in banishMonster() in BanishManager.java is responsible. It could be changed to testing if the monster is from one of those areas, as that will also take into account if you ice housed a secret government scientist and visited it in the museum.

Full monster listing, based off of the areas currently in BanishManager.java:

Code:
beefy bodyguard bat
Boss Bat
hellseal pup
mother hellseal
guard turtle
evil spaghetti cult middle-manager
evil spaghetti cult neophyte
evil spaghetti cult technician
booth slime
fan slime
vendor slime
breakdancing raver
pop-and-lock raver
running man
sleepy mariachi
surprised mariachi
alert mariachi
Sloppy Seconds Sundae
Sloppy Seconds Burger
Sloppy Seconds Cocktail
lab monkey
government scientist
creepy little girl
super-sized Cola Wars soldier
E.V.E., the robot zombie
angry tourist
garbage tourist
horrible tourist family
filthy pirate
fishy pirate
funky pirate
flashy pirate
toxic beastie
C<i>bzzt</i>er the Grisly Bear
Gurgle the Turgle
Skeezy the Jug Rat
nasty bear
 

Darzil

Developer
So if you ice house something in a zone where banish fails, the ice house contains them in the museum but they aren't banished? Or does the ice house fail ?

If the former, then I guess we are looking at doing it by monster, if the latter, then I'd just add a version of banishMonster that doesn't check for area for use by checking with ice house in Museum.
 

Bale

Minion
I think that he's saying something else.

He's saying he had an AMC Gremlin Ice Housed, visited a no banish zone and then checked his Ice House.

The result is that KoLmafia forgot that the AMC Gremlin was Ice Housed.
 

lostcalpolydude

Developer
Staff member
Visiting the ice house after adventuring in a no-banish area doesn't clear mafia's idea of what was banished. It just prevents the banished monster from being set if you clear it or set it outside of mafia, for whatever reason.
 

Darzil

Developer
There are other bugs here, too.

Banishing with ice house in a no-banish zone does put that monster in the ice house, but they aren't actually banished, so it should clear the monster in the ice house.

So does look like we should allow these attempted banishes to 'work', and let them push other things out of the queue, then not store the monster and report that they can't be banished. (Snokebomb use in Government Lab allowed a banish in another area to return)

Am tempted to add a NOBANISH flag to the monsters and check that.
 

Darzil

Developer
So if we set up a returning monster from somewhere else to appear in a nobanish location, the banish fails and they aren't banished in their regular location ?
If we set up a returning monster from Government Lab to appear in a location where you can banish them, the banish succeeds and they are banished in Government Lab ?
 

heeheehee

Developer
Staff member
Wandering monsters aren't affected by the queue (which is what banishes apply to). I'm not sure what you're asking.
 

Bale

Minion
The question is if the monster is unbanishable, or the location is unbanishable. If the former, then the monster can be banished by such a circumlocution. It's an interesting idea to spade. Has nobody ever spaded that?
 

heeheehee

Developer
Staff member
So, there are two things that can be checked. One is using a banish on a monster from a nobanish zone (I think the internal term is "nopopper"). The other is using a banish on a monster that's been arrowed into a nopopper zone.

[11175] The Secret Government Laboratory
Encounter: oil slick
Round 0: heeheehee wins initiative!
Round 1: heeheehee uses the Louder Than Bomb and uses the tattered scrap of paper!
Banish louder than bomb failed.

[11175] The Secret Government Laboratory
Encounter: super-sized Cola Wars soldier
Round 0: heeheehee wins initiative!
Round 1: heeheehee uses the unfinished ice sculpture and uses the tattered scrap of paper!
You acquire an item: ice sculpture

[11175] Oil Peak
Encounter: tumbleweed
Round 0: heeheehee wins initiative!
Round 1: heeheehee uses the tattered scrap of paper and uses the tattered scrap of paper!
Round 2: tumbleweed takes 13 damage.
Using 1 ice sculpture.

[11175] ice sculpture
Encounter: super-sized Cola Wars soldier
Round 0: heeheehee wins initiative!
Round 1: heeheehee uses the Louder Than Bomb and uses the tattered scrap of paper!
super-sized Cola Wars soldier banished by louder than bomb.
Sending you to Conspiracy Island.


[11175] The Secret Government Laboratory
Encounter: government scientist
Round 0: heeheehee wins initiative!
Round 1: heeheehee uses the tattered scrap of paper and uses the tattered scrap of paper!

[11175] The Secret Government Laboratory
Encounter: creepy little girl
Round 0: heeheehee wins initiative!
Round 1: heeheehee uses the tattered scrap of paper and uses the tattered scrap of paper!

[11175] The Secret Government Laboratory
Encounter: creepy little girl
Round 0: heeheehee wins initiative!
Round 1: heeheehee uses the tattered scrap of paper and uses the tattered scrap of paper!

[11175] The Secret Government Laboratory
Encounter: lab monkey
Round 0: heeheehee wins initiative!
Round 1: heeheehee uses the tattered scrap of paper and uses the tattered scrap of paper!
Round 2: lab monkey takes 27 damage.
Round 2: heeheehee uses the tattered scrap of paper and uses the tattered scrap of paper!

[11175] The Secret Government Laboratory
Encounter: super-sized Cola Wars soldier
Round 0: heeheehee wins initiative!
KoLmafia thinks it is round 2 but KoL thinks it is round 1
KoLmafia thinks it is round 3 but KoL thinks it is round 1
Round 3: heeheehee uses the tattered scrap of paper and uses the tattered scrap of paper!
KoLmafia thinks it is round 4 but KoL thinks it is round 2

[11175] Oil Peak
Encounter: oil slick
Round 0: heeheehee wins initiative!

Both banishes looked like they went through just fine according to KoL (no in-game message indicating the banish failed). The oil slick was indeed banished from oil peak (as evidenced by the presence of a tumbleweed), but the cola soldier was not actually banished from the lab (although it did unbanish the oil slick).

It might be sensible to just add monsters to BanishManager unconditionally, then apply banishes only if the location hasn't been blacklisted.

I'm not sure if bosses are susceptible to banishing (at one point they were, not sure if that still holds or if it would even affect anything -- are there still bosses that show up as a result of the adventure queue in a zone that allows for banishes?).
 

heeheehee

Developer
Staff member
I'm not sure if bosses are susceptible to banishing (at one point they were, not sure if that still holds or if it would even affect anything -- are there still bosses that show up as a result of the adventure queue in a zone that allows for banishes?).

Hm, I guess the last part of the nemesis quest where you have to get past the bodyguards to fight your nemesis qualifies for this. I don't think I have a multi at this stage.
 

Darzil

Developer
All suggests to me that whilst the flavour is you can't banish in the area, the mechanism is you can't banish the monster.
 

Darzil

Developer
Try r16605 (implemented using monster flag, as what seems to matter is the monster not where it was when it was banished).
 
Top