Page 1 of 4 1 2 3 ... LastLast
Results 1 to 10 of 35

Thread: Veracity's Gingerbread City.ash

  1. #1
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,131

    Default Veracity's Gingerbread City.ash

    Here is my script to automate the Gingerbread City. It is fully configurable as documented by the following from the code:

    Code:
    // ****** Configuration ******
    
    // If you want to advance the clock and spend 5 fewer turns in The
    // Gingerbread City, you can do that.
    
    boolean vgc_advance_clock = define_property( "VGC.AdvanceClock", "boolean", "false" ).to_boolean();
    
    // The following are valid adventuring locations in the Gingerbread
    // City. Specifying any other location results in an invalid plan
    //
    // Gingerbread Civic Center
    // Gingerbread Industrial Zone
    // Gingerbread Upscale Retail District
    // Gingerbread Sewers
    // Gingerbread Train Station
    //
    // If any of the following are "none", adventuring ceases in Gingerbread City at that phase
    
    location vgc_morning = define_property( "VGC.Morning", "location", "none" ).to_location();
    location vgc_afternoon = define_property( "VGC.Afternoon", "location", "none" ).to_location();
    location vgc_night = define_property( "VGC.Night", "location", "none" ).to_location();
    
    // You have a wide variety of options for Noon:
    //
    // "candy"				collect candy in Train Station 
    // "lever"				enlarge alligators in sewers
    // "schedule"				study the train schedule
    // "fancy marzipan briefcase"		off-hand item that decreases combat frequency and lasts until rollover
    // "column"				allows a fight with Judge Fudge at midnight
    // "briefcase full of sprinkles"	turn in blackmail photos
    // "creme brulee torch"			buy for 25 sprinkles; opens civic center midnight choice
    // "candy crowbar"			buy for 50 sprinkles; opens unsupported train station midnight choice
    // "candy screwdriver"			buy for 100 sprinkles; opens train station midnight choice
    // "teethpick"				buy for 1000 sprinkles; opens train station midnight choice
    // "robbery"				requires robbery outfit; activates vigilantes
    // "gingerbread dog treat"		buy for 200 sprinkles; opens civic center midnight choice
    // "pumpkin spice candle"		buy for 140 sprinkles; opens train station midnight choice
    // "gingerbread spice latte"		buy for 50 sprinkles; +10 Familiar Weight potion
    // "gingerbread trousers"		buy for 500 sprinkles; part of Gingerbread Best outfit
    // "gingerbread waistcoat"		buy for 500 sprinkles; part of Gingerbread Best outfit
    // "gingerbread tophat"			buy for 500 sprinkles; part of Gingerbread Best outfit
    //
    // An invalid choice will be treated as "candy"
    
    string vgc_noon = define_property( "VGC.Noon", "string", "candy" );
    
    // You have a wide variety of options for Midnight:
    //
    // "mainstat"				gain muscle, mysticality, or moxie, depending on your class
    // "Judge Fudge"			fight Judge Fudge: activated by "column" at noon
    // "Muscle"				gain muscle stats; eventually activates a train station midnight choice
    // "Mysticality"			gain mysticality stats; eventually allows purchase of teethpick
    // "Moxie"				gain moxie stats
    // "broken chocolate pocketwatch"	part of Gingerbread Best outfit; requires "pumpkin spice candle" at noon
    // "meat"				5,000 Meat; requires "candy crowbar" at noon
    // "fat loot token"			requires "candy crowbar" at noon
    // "sprinkles"				250 sprinkles; requires "candy crowbar" at noon
    // "priceless diamond"			requires "candy crowbar" at noon
    // "pristine fish scales"		5 pristine fish scales; requires "candy crowbar" at noon
    // "dig"				gain items; requires teethpick in inventory; becomes unavailable after sugar raygun
    // "counterfeit city"			buy for 300 sprinkles
    // "gingerbread moneybag"		requires creme brulee torch in inventory
    // "gingerbread cigarettes"		buy for 5 sprinkles
    // "chocolate puppy"			requires gingerbread dog treat in inventory
    // "gingerbread pistol"			buy for 300 sprinkles
    // "ginger beer"			requires gingerbread mug in inventory
    // "spare chocolate parts"		required to convert broken chocolate pocketwatch to chocolate pocketwatch
    // "GNG-3-R"				fight GNG-3-R; requires (and consumes) gingerservo
    // "tattoo"				buy for 100,000 sprinkles
    // "fake cocktail"			potion: MP +50, MP Regen 20-30
    // "high-end ginger wine"		requires Gingerbread Best outfit; EPIC booze
    // "fancy chocolate sculpture"		buy for 300 sprinkles; chocolate
    // "Pop Art: a Guide"			buy for 1,000 sprinkles; grants skill: Fifteen Minutes of Flame
    // "No Hats as Art"			buy for 1,000 sprinkles; grants skill: Ceci N'Est Pas Un Chapeau
    //
    // An invalid choice will be treated as "mainstat"
    
    string vgc_midnight = define_property( "VGC.Midnight", "string", "mainstat" );
    
    // You can specify monsters to banish if you are looking for particular drops
    
    boolean [monster] vgc_banish = define_property( "VGC.Banishes", "monster", "none" ).to_set_of_monster();
    
    // The preconfigured outfit to wear while adventuring in The Gingerbread City
    
    string vgc_outfit = define_property( "VGC.Outfit", "string", "Gingerbread City" );
    
    // The familiar to take adventuring in The Gingerbread City
    
    familiar vgc_familiar = define_property( "VGC.Familiar", "familiar", "Chocolate Lab" ).to_familiar();
    Note that it assumes by default that you have a Chocolate Lab. If you don't have one, you must set VGC.Familiar to the familiar you want to use and equip it with the familiar item you want it to wear (unless you have a candy dog collar, which it will use in its place, since that gives +Sprinkle Drop).

    Here is the current To Do list:

    Code:
    // ****** To Do **************
    //
    // Test setting clock ahead
    // Implement VGC.Banishes
    // Use tracking settings, as appropriate
    //	gingerDigCount
    //	gingerLawChoice
    //	gingerMuscleChoice
    //	gingerNegativesDropped
    //	gingerSubwayLineUnlocked
    // Configure remaining Noon options:
    //      "bribery" : new GingerChoice( GINGERBREAD_CIVIC_CENTER, 1000, $item[ none ], 1202, 3 ),
    //           Leads to another choice to buy a city upgrade
    //      "photo counter" : new GingerChoice( GINGERBREAD_RETAIL_DISTRICT, 500, $item[ none ], 1208, 8 ),
    //           Drop off negatives (one day) pick up photos (next day)
    // Configure remaining Midnight options:
    //      "fruit leather negatives" : new GingerChoice( GINGERBREAD_TRAIN_STATION, 0, $item[ none ], 1205, 4 ),
    //           Once only, must be unlocked
    // Make Mood configurable
    I'll get to these, by and by. The "banish" list - which will use Licorice Leash, if possible - comes first. I expect I will eventually also use Gingerbread Mob Hit, but that will depend on me being able to get the skill book for a price I am willing to pay. Which, using Spelunky's model, will probably be a year from now.

    Code:
    svn checkout https://svn.code.sf.net/p/veracity0/code/gingerbread
    Ph'nglui mglw'nafh Cthulhu
    R'lyeh wgah-nagl fhtagn.

  2. #2
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,131

    Default

    Here is JSON to add it to the Script Registry:

    Code:
    {
      "repo": "https://svn.code.sf.net/p/veracity0/code/gingerbread/", 
      "author": "Veracity", 
      "name": "Veracity's Gingerbread City Script", 
      "forumThread": "http://kolmafia.us/showthread.php?21609", 
      "shortDesc": "Automate the Gingerbread City", 
      "category": "adventure", 
      "longDesc": "Highly configurable script to allow automation of turns in the Gingerbread City, specifying the morning, afternoon, and night adventuring locations and the noon and midnight non-combats."
     }
    I am amused that I couldn't include that in the initial announcement since I could not give a link to the forum thread until I'd actually created the thread.

    And, I could swear I saw somebody asking how to tell how many turns you spent in the Gingerbread City today - and I could certainly use something like that to determine whether it makes sense to run this script today. I may have to resort to an _ setting so you can only run it once...
    Ph'nglui mglw'nafh Cthulhu
    R'lyeh wgah-nagl fhtagn.

  3. #3
    Senior Member
    Join Date
    Dec 2008
    Posts
    514

    Default

    I did ask about that in the new content thread for the gingerbread city. I won't need that now that I can use your script instead of writing my own though

    Thanks for making this!

  4. #4
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,131

    Default

    Here is configureVGC.ash. It's a little utility for configuring a variety of gingerbread plans by name.
    These may or may not be what you want. Heck, they may or may not be what _I_ want.
    I'm thinking of including it in the Veracity's Gingerbread City script package.
    If so, everybody can edit it to their taste.

    Code:
    import <Gingerbread City.ash>;
    
    void main( string plan )
    {
        void print()
        {
    	print( "" );
        }
    
        void usage()
        {
    	print( "Available plans:" );
    	print();
    	print( "alligators - bigger alligators, adventure in sewer" );
    	print( "gingerbeard - adventure in retail district, banish tech bros" );
    	print( "gingerservo - adventure in industrial zone, banish mutants" );
    	print( "robbery - activate vigilantes" );
        }
    
        void log_property( string name )
        {
    	print( name + "=" + get_property( name ) );
        }
    
        void log_set_property( string name, string value )
        {
    	set_property( name, value );
    	log_property( name );
        }
    
        switch ( plan ) {
        case "alligators":
    	log_set_property( "VGC.AdvanceClock", "false" );
    	log_set_property( "VGC.Morning", "Gingerbread Upscale Retail District" );
    	log_set_property( "VGC.Noon", "lever" );
    	log_set_property( "VGC.Afternoon", "Gingerbread Sewers" );
    	log_set_property( "VGC.Midnight", "high-end ginger wine" );
    	log_set_property( "VGC.Night", "Gingerbread Sewers" );
    	log_set_property( "VGC.Banishes", "" );
    	break;
        case "gingerbeard":
    	log_set_property( "VGC.AdvanceClock", "false" );
    	log_set_property( "VGC.Morning", "Gingerbread Upscale Retail District" );
    	log_set_property( "VGC.Noon", "column" );
    	log_set_property( "VGC.Afternoon", "Gingerbread Upscale Retail District" );
    	log_set_property( "VGC.Midnight", "Judge Fudge" );
    	log_set_property( "VGC.Night", "Gingerbread Upscale Retail District" );
    	log_set_property( "VGC.Banishes", "gingerbread tech bro" );
    	break;
        case "gingerservo":
    	log_set_property( "VGC.AdvanceClock", "false" );
    	log_set_property( "VGC.Morning", "Gingerbread Industrial District" );
    	log_set_property( "VGC.Noon", "column" );
    	log_set_property( "VGC.Afternoon", "Gingerbread Industrial District" );
    	log_set_property( "VGC.Midnight", "Judge Fudge" );
    	log_set_property( "VGC.Night", "Gingerbread Industrial District" );
    	log_set_property( "VGC.Banishes", "gingerbread mutant" );
    	break;
        case "robbery":
    	log_set_property( "VGC.AdvanceClock", "false" );
    	log_set_property( "VGC.Morning", "Gingerbread Upscale Retail District" );
    	log_set_property( "VGC.Noon", "robbery" );
    	log_set_property( "VGC.Afternoon", "Gingerbread Upscale Retail District" );
    	log_set_property( "VGC.Midnight", "high-end ginger wine" );
    	log_set_property( "VGC.Night", "Gingerbread Upscale Retail District" );
    	log_set_property( "VGC.Banishes", "" );
    	break;
        default:
    	usage();
    	print();
    	log_property( "VGC.AdvanceClock" );
    	log_property( "VGC.Morning" );
    	log_property( "VGC.Noon" );
    	log_property( "VGC.Afternoon" );
    	log_property( "VGC.Midnight" );
    	log_property( "VGC.Night" );
    	log_property( "VGC.Banishes" );
    	break;
        }
    
        log_set_property( "VGC.Outfit", "Gingerbread City" );
        log_set_property( "VGC.Familiar", "Chocolate Lab" );
    
        print();
        print( "Validating current plan:" );
        print();
    
        validate_gingerbread_plan();
    }
    These are plans for use after you have done all the one-time things. Obviously, you'd want sequences of plans that change each day, while you are still unlocking things.

    If you have any suggested plans, I'd be interested in seeing them. I'm open to augmenting this script before publishing it as part of this package.

    Edit: I updated this to always print out the current (or newly changed) value of all properties and to call the validate_gingerbread_plan() function so you can see how the script will handle them.
    Last edited by Veracity; 03-19-2017 at 06:12 PM. Reason: Updated script
    Ph'nglui mglw'nafh Cthulhu
    R'lyeh wgah-nagl fhtagn.

  5. #5
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,131

    Default

    Revision 20 does this:

    Provides configureVGC.ash, as above, with a few additional tweaks and fixes.
    Lets you configure monsters to banish with Licorice Rope in VGC.Banishes
    Lets you use "retail", "sewers", "turns" and "clock" as VGC.Noon options for buying city upgrades in the Civic Center
    Looks at _gingerbreadCityTurns property to see whether you have already adventured in the Gingerbread City.
    If you have, it punts, for now. Eventually, I'll make it able to continue with a plan after the already used adventures.

    I haven't committed _gingerbreadCityTurns yet since it is not quite right; it says how many times we have entered the Gingerbread City, but it doesn't know that the choice options don't actually consume a turn. I may commit it and fix it tomorrow...
    Ph'nglui mglw'nafh Cthulhu
    R'lyeh wgah-nagl fhtagn.

  6. #6
    Junior Member
    Join Date
    Feb 2017
    Posts
    3

    Default

    I think most people only care about the NC (or will once they get the tattoo), and use free run away to avoid the fights.

  7. #7
    Developer Veracity's Avatar
    Join Date
    Mar 2006
    Location
    The Unseelie Court
    Posts
    11,131

    Default

    Who are "most people"?

    Those who are selling gingerbeards for 600,000+ Meat or gingerservos for 300,000+ Meat want fights.
    Those attempting to dominate the sprinkles leaderboards want fights.

    In-run, I only care about candy at (time-advanced) noon.
    In aftercore, I want sprinkles - until I get the Tattoo - and then probably don't want to spend turns here at all.

    What NCs do "most people" want after they get the Tattoo?
    Ph'nglui mglw'nafh Cthulhu
    R'lyeh wgah-nagl fhtagn.

  8. #8
    Senior Member
    Join Date
    Feb 2010
    Posts
    872

    Default

    What NCs do "most people" want after they get the Tattoo?
    Originally Posted by Veracity View Post
    I have the tattoo but I'm still hunting a last vigilante factoid and, as a result, I'm spending a lot of turns in the sewers. After robbing someone at least twice in an ascension: I find myself making larger alligators at noon and a getting ginger beer at midnight.

    Extra sprinkles and a decent consumable never hurt.
    Last edited by Magus_Prime; 03-23-2017 at 11:25 AM.

  9. #9
    Senior Member
    Join Date
    Apr 2009
    Posts
    1,721

    Default

    I get the high-end ginger wine. (Which I should probably drink some of and post the results somewhere? I want mafia to know how many advs it gives, so it gets listed at an appropriate place in booze lists ...)

  10. #10
    Senior Member VladYvhuce's Avatar
    Join Date
    Feb 2016
    Location
    Kansas
    Posts
    215

    Default

    I just used to adventure there to get my chocolate lab. But now, it looks like I've got some farming options.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •