New Content - Implemented Naughty Sorceress' Tower has been revamped!

heeheehee

Developer
Staff member
If you get Beat Up by a combat or a test, does it start you again in the same room, or do you get to start all over?
If the latter, seems like you could win combats more than once in the same run.

I got beaten up by the third test and only had to pass through one test to complete the maze.
 

Veracity

Developer
Staff member
Revision 15165 updates the "telescope" command to decode what it sees and print useful spoilers.
 

Crowther

Active member
I can confirm both that losing to the kiwi starts you again in the same room. You do not start over.

I can also confirm that beating the kiwi advances you two rooms to The Last Temptation (1012) as Veracity speculated.
 

Bale

Minion
Revision 15165 updates the "telescope" command to decode what it sees and print useful spoilers.

Could you also add a string [int] telescope() command which provides the same information? While it is trivial to add this for a script, it seems unnecessary when mafia already has the information:

Right now, I'm using this map since the ash command doesn't exist:

Code:
string [string] telescope;
	telescope["standing around flexing their muscles and using grip exercisers"] = "Muscle";
	telescope["sitting around playing chess and solving complicated-looking logic puzzles"] = "Mysticality";
	telescope["all wearing sunglasses and dancing"] = "Moxie";
	telescope["people, all of whom appear to be on fire"] = "Hot";
	telescope["people, surrounded by a cloud of eldritch mist"] = "Spooky";
	telescope["greasy-looking people furtively skulking around"] = "Sleaze";
	telescope["people, surrounded by garbage and clouds of flies"] = "Stench";
	telescope["people, clustered around a group of igloos"] = "Cold";
	telescope["smoldering bushes on the outskirts of a hedge maze"] = "Hot";
	telescope["creepy-looking black bushes on the outskirts of a hedge maze"] = "Spooky";
	telescope["purplish, greasy-looking hedges"] = "Sleaze";
	telescope["nasty-looking, dripping green bushes on the outskirts of a hedge maze"] = "Stench";
	telescope["frost-rimed bushes on the outskirts of a hedge maze"] = "Cold";
	telescope["smoke rising from deeper within the maze"] = "Hot";
	telescope["a miasma of eldritch vapors rising from deeper within the maze"] = "Spooky";
	telescope["a greasy purple cloud hanging over the center of the maze"] = "Sleaze";
	telescope["a cloud of green gas hovering over the maze"] = "Stench";
	telescope["wintry mists rising from deeper within the maze"] = "Cold";
	telescope["with lava slowly oozing out of it"] = "Hot";
	telescope["surrounded by creepy black mist"] = "Spooky";
	telescope["that occasionally vomits out a greasy ball of hair"] = "Sleaze";
	telescope["disgorging a really surprising amount of sewage"] = "Stench";
	telescope["occasionally disgorging a bunch of ice cubes"] = "Cold";

If the telescope() command merely returned the element or stat required for maximization I'd be happy to let my script interpret the meaning of that stat. Honestly, it would be easiest if it only returned the stat so that it could be used more easily by a variety of scripts for maximization string or informational purposes.
 

Veracity

Developer
Staff member
Revision 15167 adds some preliminary monster data. I've only seen the Fastest, Smoothest, and Sleaziest Adventurers and the last Spookiest Adventurer so far.. The Wiki has all of the others except for one Hottest Adventurer and all of the Spookiest Adventurer.

Monster Manuel tells me that the Fastest, (stat), and (element) Adventurers all have Atk Def and HP of 0 - which means that they scale. I have no data on the scaling factors, yet.

No combats.txt data yet. Aside from the fact that crowd #1, #2, and #3 are not yet adventuring locations, #2 and #3 are problematic. They are like the Hole in the Sky, which has "odd ascension" and "even ascension" monsters. These have "4 monsters from (stat)" or "4 monsters from (element)".
 

Veracity

Developer
Staff member
Just looking at the stat & elemental adventurers, in each group of 4:

#1 is a fighter - Cheetahman, Macho Man, Accountant Barbarian, Savage Beatnik, Fire Fighter, Snowbrawler, Granola Barbarian, (spooky), Grease Trapper
#2 is a mage - Microwave Magus, Iron Chef, Metaphysical Gastronomist, Creamweaver, (hot), Ice Cream Conjurer, Cheese Wizard, (spooky), Ham Shaman
#3 is a thief - Kung-Fu Hustler, Entire Shoplifter, Kleptobraniac, smooth criminal, Burnglar, Iceberglar, Assassin, (spooky), Porkpocket
$4 is the "boss"

Clever.
 

Veracity

Developer
Staff member
Could you also add a string [int] telescope() command which provides the same information? While it is trivial to add this for a script, it seems unnecessary when mafia already has the information
Well, I decided to add some per-ascension settings. Do "telescope low" (or the equivalent: ASH, Relay Browser, ...) and we will set five settings

nsChallenge1 = "none", "Muscle", "Mysticality", "Moxie"
nsChallenge2 = "none", "hot", "cold", "stench", "spooky", "sleaze"
nsChallenge3 = "none", "hot", "cold", "stench", "spooky", "sleaze"
nsChallenge4 = "none", "hot", "cold", "stench", "spooky", "sleaze"
nsChallenge5 = "none", "hot", "cold", "stench", "spooky", "sleaze"

Those correspond to adventurer crowd 2, adventurer crowd3, maze trap 1, maze trap 2, maze trap 3
They happen to be the exact string values needed to coerce in ASH via to_stat() and to_element().

"none" means Unknown - you have not looked through your telescope, or it is not upgraded enough to see that challenge.

I assume that will do it for you?
 

Veracity

Developer
Staff member
When we look at through the telescope, we parse the response and save each of the 5 observations in telescope1 through telescope5. The "telescope" command then took those observations and decoded them. If I had done a function, it, presumably, would also take those 5 observations and decode them - every time it is called.

It seemed like the decoding would best be done exactly once - when we parse the response to looking through the telescope. If I save that parsing in settings, they are available to the "telescope" command and also to ASH scripts. Yes, I could write an ASH function which would get those 5 settings and put them in to an array. But so can you.
 

Bale

Minion
Gotcha! As I said, that was perfect for my needs. I was just curious as to the reasons. Thanks for teaching me.
 

Veracity

Developer
Staff member
Revision 15172 makes all of the locations in the lair that you can encounter monsters adventure locations. They log reasonably. You can probably even select them in the GUI and tell it to adventure there. I didn't test that, since I did everything in the Relay Browser, but I expect it will work.

We also remove keys from inventory as you use them to open locks on the tower door.
 

Bale

Minion
1 = Allo' (1005) right (test 1) -> 1008
2 = One Small Step For Adventurer (1006) right (gopher) -> 1008
3 = Twisty Little Passages, All Hedge (1007) right (chihuahua herd) -> 1009
4 = Pooling Your Resources (1008) right (test 2) -> 1011
5 = Good Ol' 44% (1009) right (duck) -> 1013
6 = Another Day, Another Fork (1010) right (kiwi) -> 1012
7 = Of Mouseholes and Manholes (1011) right (test 3) -> 1013
8 = The Last Temptation (1012) left or right (pointless damage) -> 1013
9 = Mazel Tov! (1013)

I'll put in choice adventure spoilers based on that.

Veracity you made an error there. If you go right from choice 1009 it should take you to 1011 after beating the duck.
 

Veracity

Developer
Staff member
Considering that I also said "I can confirm that the chihuahuas and duck advance you 2 if you win.", I think it's clear that was a typo, not an error in my knowledge. ;)

Fortunately, I did not make a similar typo when I installed the choice adventure spoilers for that room.
 

Veracity

Developer
Staff member
I've been thinking about the first three adventure areas. Right now, I have them registered like this:

Code:
Sorceress	place=ns_01_crowd1	Env: none Stat: 0	A Crowd of (Fast) Adventurers
Sorceress	place=ns_01_crowd2	Env: none Stat: 0	A Crowd of (Stat) Adventurers
Sorceress	place=ns_01_crowd3	Env: none Stat: 0	A Crowd of (Element) Adventurers

I'm thinking they should be this:

Code:
Sorceress	place=ns_01_crowd1	Env: none Stat: 0	Fastest Adventurer Contest
Sorceress	place=ns_01_crowd2	Env: none Stat: 0	Strongest Adventurer Contest
Sorceress	place=ns_01_crowd2	Env: none Stat: 0	Smartest Adventurer Contest
Sorceress	place=ns_01_crowd2	Env: none Stat: 0	Smoothest Adventurer Contest
Sorceress	place=ns_01_crowd3	Env: none Stat: 0	Hottest Adventurer Contest
Sorceress	place=ns_01_crowd3	Env: none Stat: 0	Coldest Adventurer Contest
Sorceress	place=ns_01_crowd3	Env: none Stat: 0	Spookiest Adventurer Contest
Sorceress	place=ns_01_crowd3	Env: none Stat: 0	Stinkiest Adventurer Contest
Sorceress	place=ns_01_crowd3	Env: none Stat: 0	Sleaziest Adventurer Contest
That will allow us to attach exactly the correct monsters to each adventure.

The question is, how can you disambiguate? Well, you can't just from the URL, but if you have a telescope, you know what to expect - but even without one, when you visit the registration booth:

place.php?whichplace=nstower&action=ns_01_contestbooth
Encounter: Test Your Might And Also Test Other Things

it tells you what the three contests are. We can parse what we see there and set the nsChallenge1 and nsChallenge2 settings to the appropriate stat or element.

Then we have the "simple matter of coding" to automatically recognize the correct adventure given the URL and the setting. How hard can it be? ;)
 

Veracity

Developer
Staff member
Revision 15176 does all of that. We figure out Crowd #2 and Crowd #3 either via the telescope or by looking at the text when you visit the Contest Booth. Subsequently, visiting a crowd will log as the appropriate adventure. I added "test adventure URL" to see how we map a URL to an adventure. Here is what I have this run:

> test adventure place.php?whichplace=nstower&action=ns_01_crowd1

returned Sorceress: Fastest Adventurer Contest

> test adventure place.php?whichplace=nstower&action=ns_01_crowd2

returned Sorceress: Smartest Adventurer Contest

> test adventure place.php?whichplace=nstower&action=ns_01_crowd3

returned Sorceress: Spookiest Adventurer Contest
If you do not have a (good enough) telescope and have not visited the booth, you will get "Sorceress: A Crowd of (Stat) Adventurers" and "Sorceress: A Crowd of (Element) Adventurers".

I added the various monsters to the various locations. We don't have the fighter, mage, or thief for the Spooky adventurers, or the mage for the Hot adventurers, yet. I expect to get the Spooky ones on Thursday (as you can see from my results above) if we don't get them sooner elsewhere.

Currently, the 4 stat adventure entries and the 6 element adventure entries are just sets of synonyms - with the generic (unidentified) version appearing last in the file and therefore the default. I expect that you can try adventuring in any of the synonyms and they will go to the same place - but we will log the correct adventure name, assuming we've seen the booth. I don't know if we care about that and want to say "You can't go to the Spookiest Adventurer Contest since you are registered in the Stinkiest Adventurer Contest". Seems unnecessary, to me - but what are he odds that somebody will bug report it if we don't? ;)
 

Veracity

Developer
Staff member
Here is my assessment of what's left to do here:

1) The Registration booth:

place.php?whichplace=nstower&action=ns_01_contestbooth
Encounter: Test Your Might And Also Test Other Things

We need to log this better. It's not an adventuring location - it does not take a turn to go there and there is no reason somebody would expect to select it in the GUI and say "spend X turns adventuring". I expect people will either manipulate this in the Relay Browser or via a script. In both cases, logging the visit is all we need to do.

Took choice 1003/1: unknown
Took choice 1003/2: unknown
Took choice 1003/3: unknown

The above are registering for the three contests.

Took choice 1003/4: unknown
You acquire an item: World's Best Adventurer sash

Collecting your reward

Took choice 1003/6: unknown

Leaving without doing anything.

2) The Crowds of Adventurers

We need the spooky fighter, mage, and thief, and the hot mage.
For all monsters, we need Atk/Def/HP

Other than that, I think this is done: you can select a Contest to adventure in, we go to the right URL, and we log it nicely.

3) The Closing Ceremony

place.php?whichplace=nstower&action=ns_02_coronation
Encounter: Closing Ceremony
Took choice 1020/1: unknown
Encounter: Meet Frank
Took choice 1021/1: unknown
Encounter: Meet Frank
Took choice 1022/1: unknown

This is a simple chain of three single-option choices. All we need to do is log it nicely.

4) The Hedge Maze

I think this is done. We have configurable choice spoilers for all rooms, a default for the last single-option room, the monsters, complete with stats, and the adventuring area. You can set up your choices, and say "adventure in The Hedge Maze" and it should treat it as a multi choice/multi-fight and take you all the way through.

5) The Tower Door

place.php?whichplace=nstower_door&action=ns_lock1
place.php?whichplace=nstower_door&action=ns_lock2
place.php?whichplace=nstower_door&action=ns_lock3
place.php?whichplace=nstower_door&action=ns_lock4
place.php?whichplace=nstower_door&action=ns_lock5
place.php?whichplace=nstower_door&action=ns_lock6
place.php?whichplace=nstower_door&action=ns_doorknob

We correctly remove the appropriate key when you use it in a lock. All we need to do is log each of the above actions nicely.

6) The Tower Monsters

place.php?whichplace=nstower&action=ns_08_monster4
Encounter: The Mirror in the Tower has the View that is True
Took choice 1015/1: unknown
You acquire an intrinsic: Confidence!

All 5 levels are adventuring locations. The three walls and Your Shadow are appropriately placed. The Mirror (above) will correctly log as Tower Level 4.

The only thing we need is configuration & spoilers for the choice adventure.

7) The Naughty Sorceress

place.php?whichplace=nstower&action=ns_10_sorcfight
Encounter: The Naughty Sorceress

This should be done. I added the above URL as an adventuring location.

> test adventure place.php?whichplace=nstower&action=ns_10_sorcfight

returned Sorceress: The Naughty Sorceress' Chamber
It should log nicely.

So, basically, just monster data and a bit of logging. I don't think we need to provide any "scripts" to do any of the above. Everything except the Tower Door is either straight adventuring with monsters and/or choices, or is something best handled by a user script (the registration booth, for example.)

Given the above, there is quite a bit of dead code left that should be removed.

Comments?
 

Veracity

Developer
Staff member
Also Quest Logging. Anybody want to do the heavy lifting for that? Council text and Quest Log text at every stage...
 

Theraze

Active member
For 5 (the door), can we possibly have something which tells us the keys we've used so far? It would help save server hits when a user doesn't have all of the keys and needs to backfarm some. For BCA purposes, it should now try to farm 3 DD keys... but it would be good to have it not try to farm keys when the user has already used them already, since those are just wasted server hits and frustrating for the player.
 

Veracity

Developer
Staff member
For 5 (the door), can we possibly have something which tells us the keys we've used so far?
Seems easy enough. A per-ascension setting which is just a comma separated list of item names:

Boris's key,Jarlsberg's key,Sneaky Pete's key,Richard's star key,skeleton key,digital key

And another thing: update our wand warning to take effect before any of the following:

place.php?whichplace=nstower&action=ns_08_monster4

The mirror, since we've been told that you lose Confidence! if you leave the tower

place.php?whichplace=nstower&action=ns_10_sorcfight

The Sorceress, for obvious reasons.
 

Theraze

Active member
Might it be worth the warning if you're going to visit the mirror without the wand (or its components) or the requisite 4-6 healing items, since those would be the only reasons to leave the tower? Or should we leave that bit of planning on the player? We seem to have many other "things you might have forgotten" warnings, so...
 
Top