CanAdv -- check whether you can adventure at a given location

fronobulax

Developer
Staff member
We should probably add the rowboat check back in. For characters who haven't ascended since the advent of the S.O.C.K., the entire castle will be reported as unavailable.

Your call, although if the Garbage quest is finished, doesn't that mean that the Castle floors have to be available?
 

zarqon

Well-known member
All of those checks fall through to the S.O.C.K. check. (There's no "break;")

Changing the line to:
PHP:
   case $location[The Castle in the Clouds in the Sky \(Basement\)]: return itemcheck($item[S.O.C.K.]) || itemcheck($item[intragalactic rowboat]);
ought to fix this for the sockless people of the world.
 
Last edited:

Theraze

Active member
Committed. I was questioning through the decision of working based on mafia's understanding of the quest or the item, since you can elect to not get the item in current state if you somehow hovered between the revamp and never ascended, but the chance of someone who purposefully avoided unlocking the sky for years while remaining in aftercore actually wanting to run any kind of automation is... low.
 

Theraze

Active member
Oh, I don't doubt that SOMEone out there qualifies, but most people that committed wouldn't want to risk some malicious coder causing them to unlock the sky in a vindictive, but petty, move to remove their distinctiveness. :)

Whenever we hit someone with that combination of dedication, determination, frustration, and unwillingness to self-modify a script file for their own purposes, I don't doubt that they'll note my failings though. And then we'll see which direction the solution runs. :p
 

Theraze

Active member
Not sure what your 'The' is, but...
> ashq import <canadv.ash> foreach it in $locations[] can_adv(it);

Unknown location: Super Villain's Lair (zone: Town)
Please report this missing location here: http://kolmafia.us/showthread.php?t=2027

Checking resistance to stench...
You can already resist stench.
Internal checkpoint created.
Putting on pirate fledges...
Equipment changed.
Putting on Official Council Aide Pin...
Equipment changed.
Unknown location: Through the Spacegate (zone: The Spacegate)
Please report this missing location here: http://kolmafia.us/showthread.php?t=2027
So, two unknown zones. If someone wants to pass along their unlock conditions, great. :)
 

fronobulax

Developer
Staff member
Unknown location: Duke Vampire's Chateau (zone: FantasyRealm)

Unknown location: The Master Thief's Chalet (zone: FantasyRealm)

Unknown location: The Dragon's Moor (zone: FantasyRealm)

I suppose if it matters to me or anyone else the first step is to articulate the unlock conditions... But then I would hope cango and canadv might be reconciled?
 

zarqon

Well-known member
I spent some time working on this today.

  • Added all the FantasyRealm locations (mafia's built-in tracking made this way easier than I'd expected it to be).
  • Made sure it has handling for all locations.
  • Revamped the pirate locations to check the pirate quest property (could get rid of piratecheck() that way, which speeds those checks up considerably).
  • Also, in an effort to remove even more server hits, I added much more quest-specific handling to guildcheck() so it will only check each guild NPC when there's quest progress to be made. I only did that for two of the three quest-givers at the moment, though; the Nemesis quest was too daunting for today.
  • Some useful changes to make things more robust: equipcheck() now checks be_good(), and outfitcheck() now checks equipcheck() for each piece of the outfit.
  • A few other small changes here and there, too, probably.
Yay!
 

Attachments

  • cango.ash
    51.6 KB · Views: 38

zarqon

Well-known member
Believe this is right:

PHP:
   case $location[The Neverending Party]: return qprop("_questPartyFair < finished") && (get_property("neverendingPartyAlways").to_boolean() || get_property("_neverendingPartyToday").to_boolean());
 

Theraze

Active member
I'm [literally] about 11 months behind on email and tracking on mafia, but I'll see if I can get CanAdv to note the missing areas based on CanGo. Soon. Ish.
 

Theraze

Active member
There. CanAdv should be in sync with cango now. Thanks zarqon for all of the improvements in ordering and logic.
 

zarqon

Well-known member
Thanks Theraze! Glad to see you post again. After Bale stopped posting I'm getting nervous for all the other relative old-timers. :)

Did a quick diff and looks like the only real difference is still that guild unlock setting. I think I could be willing to compromise on this issue in order to merge our fork. Aside from my philosophical objection that adventuring should be outside the scope of this script, I do suggest though that you make the adventuring part sensitive to prep. It could be an unpleasant surprise if someone ran a relay script which imports CanAdv (such as Factroid! for instance) only to tab over to the CLI and see the script had started adventuring to unlock the guild! Just have to pass the prep parameter along to checkguild(). If you did this I could see fit to finally merge the tines of our fork. In my current daydream you also make the setting a hardcoded boolean instead... but like I said I'm willing to compromise for the sake of centrality. Whaddya say?


EDIT: What?? I was under the impression I couldn't commit changes to this project, but I suddenly saw it listed in my projects on SourceForge so on a lark I just tried and succeeded in committing a revision. I made adventuring contingent on prep as mentioned above, and also raised the default verbosity so my scripts that use this repeatedly won't spam my CLI. If this is overstepping my bounds in some way, you can revert the changes but I think that makes both our lives a bit easier going forward, yes?
 
Last edited:

Theraze

Active member
Nope, that's good. :) I gave you and Bale and some others commit access WAY back in the day, but SourceForge was being a jerk about allowing people to do things without giving full access to everything. Glad they finally got that sorted out and semi-granular permissions are possible.
 

soolar

Member
CanAdv seems to think you can adventure at the Wartime Hippy Camp (and presumably wartime frat house) when you actually cannot. Which... well, it used to be right, because KoL was bugged, but that's fixed now, so CanAdv probably needs to be fixed too?
 

zarqon

Well-known member
I guess you mean before the war starts? I only have postwar characters at the moment and they show the wartime locations as being correctly unavailable.
 

soolar

Member
It's either because the war isn't started or because the island isn't accessible. Both are the case in the situation I'm running in to it.
 

zarqon

Well-known member
Ok, I believe this should be fixed with today's update. Also took advantage of mafia's shiny new handling_choice() to help you get clear of your guild if you get stuck in that choiceadv after turning in your meatcar.
 

zarqon

Well-known member
It's currently just checking that the questL11Desert property is started. When is it correctly available in Exploathing?
 
Top