daily pastebin goal
74%
SHARE
TWEET

Untitled

a guest Feb 13th, 2018 72 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import "tf_lib.ash"
  2. string scriptname = "tf_cs";
  3. string scriptversion = "1.0";
  4.  
  5. boolean use_borrowed = true;
  6. boolean do_pvp = true;
  7.  
  8. // Well apparently there's no better way to do this, so screw it
  9. string cs_all_macro = "scrollwhendone; sub weak_stag; if beenhit 1 || beenhit 2 || beenhit 3 || beenhit 4 || beenhit 5; # reset beenhit counter (is there a better way to do this?); endif; if hasskill curse of weaksauce; skill curse of weaksauce; endif; if beenhit 1; # Monster not staggered, kill it!; skill saucegeyser; repeat; endif; if hasskill micrometeorite; skill micrometeorite; endif; if hascombatitem Time-Spinner; use Time-Spinner; endif; if hasskill entangling noodles; skill entangling noodles; endif; if hasskill cowboy kick; skill cowboy kick; endif; if hasskill compress; skill compress; endif; endsub; ; sub try_banish1; if hasskill Asdon Martin: Spring-Loaded Front Bumper; skill asdon martin: spring-loaded front bumper; endif; if hasskill Snokebomb; skill snokebomb; endif; if hasskill KGB tranquilizer dart; skill kgb tranquilizer dart; endif; endsub; ; sub try_banish2; if hasskill Asdon Martin: Spring-Loaded Front Bumper; skill asdon martin: spring-loaded front bumper; endif; if hasskill KGB tranquilizer dart; skill kgb tranquilizer dart; endif;  if hasskill Snokebomb; skill snokebomb; endif; endsub; ; if monstername The Icewoman || monstername The ghost of Lord Montague Spookyraven || monstername the ghost of Monsieur Baguelle || monstername The Headless Horseman; skill extract; skill shoot ghost; skill shoot ghost; skill shoot ghost; skill trap ghost; endif; ; abort hppercentbelow 20; ; if monstername spooky gravy fairy ninja; if hasskill shattering punch; skill shattering punch; endif; runaway; endif; ; if monstername novelty tropical skeleton || monstername amateur ninja || monstername sk8 gnome; if hasskill extract; skill extract; endif; skill shattering punch; endif; ; if monstername ancient insane monk || monstername Ferocious bugbear || monstername spooky gravy fairy guard; call try_banish1; runaway; endif; ; if monstername gelatinous cube || monstername Knob Goblin poseur || monstername spooky gravy fairy warlock; call try_banish2; runaway; endif; ; if monstername remaindered skeleton || match Fratskirt.gif; call try_banish1; call weak_stag; skill saucegeyser; endif; ; if monstername Orcish Frat Boy; skill toss; if match \"He whips out a frat-paddle and hits you\" || match \"He hands you a feather duster\" || match \"He pulls out a bra\" || match \"He beans you in the\" || match \"He swings his frat-paddle\" || match \"He winds up and smacks you\" || match \"He tries to get you\" || match \"He throws a can of Sir Schlitz\" || match \"He whips out his frat-paddle and prepares\"; skill asdon martin: missile launcher; endif; call try_banish2; endif; ; if monstername factory-irregular skeleton || monstername swarm of skulls; call try_banish2; call weak_stag; skill saucegeyser; endif; ; if monstername Eldritch Tentacle; skill Stuffed Mortar Shell ; skill Saucegeyser; repeat; endif; ; if monstername knob goblin embezzler; if hasskill Fire a badly romantic arrow; skill Fire a badly romantic arrow; endif; if hasskill digitize; skill digitize; endif; call weak_stag; skill Extract; if hasskill meteor shower; skill meteor shower; endif; skill Saucegeyser; repeat; endif; ; if monstername LOV Enforcer; if !mpbelow 40; call weak_stag; endif; skill Stuffed Mortar Shell ; skill Extract; if hasskill saucegeyser; skill Saucegeyser; endif; if hasskill compress; skill compress; endif; if hasskill cannelloni cannon; skill cannelloni cannon; endif; endif; ; if monstername LOV Engineer ; call weak_stag; skill Extract; use exploding cigar, exploding cigar; attack; repeat; endif; ; call weak_stag; if !match \"Cattle Prod\" && hasskill Stuffed Mortar Shell; skill Stuffed Mortar Shell; endif; if !match \"Cattle Prod\" && hasskill extract; skill extract; endif; skill Saucegeyser; repeat;";
  10.  
  11. void use_hipster(){
  12.     if(my_daycount() == 2){
  13.         // TODO: hipster equipment?
  14.         if(get_property("_hipsterAdv").to_int() < 5){
  15.             use_familiar($familiar[Mini-Hipster]);
  16.         } else {
  17.             use_familiar($familiar[Baby Sandworm]);
  18.         }
  19.     }
  20. }
  21.  
  22. void heal(){
  23.     if(my_hp() < my_maxhp()){
  24.         if(get_property("_hotTubSoaks").to_int() < 5){
  25.             cli_execute("soak");
  26.         } else {
  27.             use_skill(1, $skill[Cannelloni Cocoon]);
  28.         }
  29.     }
  30. }
  31.  
  32. void heal_threshold(int threshold, boolean use_tub){
  33.     if(my_hp() < threshold){
  34.         if(use_tub && get_property("_hotTubSoaks").to_int() < 5){
  35.             cli_execute("soak");
  36.         } else {
  37.             use_skill(1, $skill[Cannelloni Cocoon]);
  38.         }
  39.     }
  40. }
  41.  
  42. void get_potion(effect eff, item potion){
  43.     if(have_effect(eff) < 1){
  44.         if(item_amount(potion) < 1){
  45.             cli_execute("make "+potion);
  46.         }
  47.         use(1, potion);
  48.     }
  49. }
  50. // TODO: improve this
  51. void get_potion_ingr(effect eff, item potion, item ingredient){
  52.     if(have_effect(eff) < 1){
  53.         if(item_amount(potion) < 1){
  54.             if(item_amount(ingredient) < 1) return;
  55.             cli_execute("make "+potion);
  56.         }
  57.         use(1, potion);
  58.     }
  59. }
  60.  
  61. // Make sugar item if we don't already have one
  62. void create_sugar_item(string it_string){
  63.     item it;
  64.    
  65.     if(contains_text(it_string, "sugar")){
  66.         it = it_string.to_item();
  67.         if(available_amount(it) > 0){
  68.             // Make sure the item isn't equiped
  69.             if(item_amount(it) < 1 && have_equipped(it)){
  70.                 cli_execute("unequip "+it_string);
  71.             }
  72.         } else {
  73.             cli_execute("make "+it_string);
  74.         }
  75.     }
  76. }
  77.  
  78. void do_synthesis(effect eff){
  79.     item it1, it2;
  80.    
  81.     if(have_effect(eff) < 1){
  82.         if(eff == $effect[Synthesis: Collection]){
  83.             // Check that we did this right
  84.             if(sweet_synthesis_result(get_property("_candy1_for_item").to_item(), get_property("_candy2_for_item").to_item()) != $effect[Synthesis: Collection]){
  85.                 abort("Problem with synthesizing Collection! Check preferences to see what's wrong");
  86.             }
  87.             create_sugar_item(get_property("_candy2_for_item"));
  88.             sweet_synthesis(get_property("_candy1_for_item").to_item(), get_property("_candy2_for_item").to_item());
  89.         } else if(eff == $effect[Synthesis: Learning]){
  90.             // Check that we did this right
  91.             if(sweet_synthesis_result(get_property("_candy1_for_mystg").to_item(), get_property("_candy2_for_mystg").to_item()) != $effect[Synthesis: Learning]){
  92.                 abort("Problem with synthesizing Learning! Check preferences to see what's wrong");
  93.             }
  94.             create_sugar_item(get_property("_candy2_for_mystg"));
  95.             sweet_synthesis(get_property("_candy1_for_mystg").to_item(), get_property("_candy2_for_mystg").to_item());
  96.         } else if(eff == $effect[Synthesis: Smart]){
  97.             // No sugar sheet, hope we have the right candy heart
  98.             if(get_property("_candy_for_myst") == "none"){
  99.                 cli_execute("synthesize "+eff);
  100.             } else {
  101.                 // Create the right sugar item depending on what we need
  102.                 if(item_amount($item[white candy heart]) > 0){
  103.                     create_sugar_item("sugar shorts");
  104.                     it1 = $item[white candy heart];
  105.                     it2 = $item[sugar shorts];
  106.                 } else if(item_amount($item[green candy heart]) > 0){
  107.                     create_sugar_item("sugar shorts");
  108.                     it1 = $item[green candy heart];
  109.                     it2 = $item[sugar shorts];
  110.                 } else if(item_amount($item[pink candy heart]) > 0){
  111.                     it1 = $item[pink candy heart];
  112.                     it2 = $item[sugar sheet];
  113.                 } else if(item_amount($item[orange candy heart]) > 0){
  114.                     create_sugar_item("sugar shank");
  115.                     it1 = $item[orange candy heart];
  116.                     it2 = $item[sugar shank];
  117.                 } else if(item_amount($item[lavender candy heart]) > 0){
  118.                     create_sugar_item("sugar shillelagh");
  119.                     it1 = $item[lavender candy heart];
  120.                     it2 = $item[sugar shillelagh];
  121.                 } else if(item_amount($item[yellow candy heart]) > 0){
  122.                     create_sugar_item("sugar shotgun");
  123.                     it1 = $item[yellow candy heart];
  124.                     it2 = $item[sugar shotgun];
  125.                 }
  126.                 if(sweet_synthesis_result(it1, it2) != $effect[Synthesis: Smart]){
  127.                     abort("Problem with synthesizing Smart! Items are "+it1+" and "+it2);
  128.                 }
  129.                 sweet_synthesis(it1, it2);
  130.             }
  131.         } else {
  132.             // TODO : do day 2 checks
  133.             cli_execute("synthesize "+eff);
  134.         }
  135.     }
  136.     if(have_effect(eff) < 1){
  137.         abort("Sweet synthesis didn't work! :(");
  138.     }
  139. }
  140.  
  141. void equip_garbage_item(item it){
  142.     if(have_equipped($item[makeshift garbage shirt])){
  143.         equip($slot[shirt], $item[none]);
  144.     } else if(have_equipped($item[broken champagne bottle])){
  145.         equip($slot[weapon], $item[none]);
  146.     } else if(have_equipped($item[wad of used tape])){
  147.         equip($slot[hat], $item[none]);
  148.     }
  149.    
  150.     if(item_amount($item[makeshift garbage shirt]) > 0 || item_amount($item[broken champagne bottle]) > 0 || item_amount($item[wad of used tape]) > 0){
  151.         cli_execute("fold "+it);
  152.     }
  153.     if(item_amount(it) > 0){
  154.         equip(it);
  155.     }
  156. }
  157.  
  158. // TODO: use buff potions that may have randomly dropped from the snowglobe
  159. void buff_all(){
  160.     // Bee's knees
  161.     if(have_effect($effect[On the Trolley]) < 1 && inebriety_limit() - my_inebriety() >= 2){
  162.         if(have_effect($effect[Ode to booze]) < 2){
  163.             cli_execute("cast ode");
  164.         }
  165.         cli_execute("drink 1 Bee's Knees");
  166.     }
  167.    
  168.     // Songs   
  169.     if(have_effect($effect[Ode to booze]) > 0){
  170.         cli_execute("shrug Ode to booze");
  171.     }
  172.     get_buff($effect[Stevedave's Shanty of Superiority], $skill[Stevedave's Shanty of Superiority]);
  173.    
  174.     // Sauce potions
  175.     get_potion($effect[Tomato Power], $item[tomato juice of powerful power]);
  176.     get_potion_ingr($effect[Gr8tness], $item[potion of temporary gr8tness], $item[gr8ps]);
  177.    
  178.     // Scope and protonic pack
  179.     if(have_effect($effect[Total Protonic Reversal]) < 1 && !get_property("_streamsCrossed").to_boolean()){
  180.         cli_execute("crossstreams");
  181.     }
  182.     if(have_effect($effect[Starry-Eyed]) < 1 && !get_property("telescopeLookedHigh").to_boolean()){
  183.         cli_execute("telescope high");
  184.     }
  185.    
  186.     // Spacegate vaccine
  187.     if(have_effect($effect[Broad-Spectrum Vaccine]) < 1 && !get_property("_spacegateVaccine").to_boolean() && get_property("spacegateVaccine2").to_boolean()){
  188.         cli_execute("Spacegate vaccine 2");
  189.     }
  190. }
  191.  
  192. void buff_myst(){
  193.     // Sweet synthesis
  194.     do_synthesis($effect[Synthesis: Smart]);
  195.    
  196.     buff_all();
  197.    
  198.     get_buff($effect[The Magical Mojomuscular Melody], $skill[The Magical Mojomuscular Melody]);
  199.     get_buff($effect[Quiet Judgement], $skill[Quiet Judgement]);
  200.    
  201.     // Sauce potions
  202.     get_potion($effect[Mystically Oiled], $item[ointment of the occult]);
  203.  
  204.     // Mascara
  205.     if(have_effect($effect[Glittering Eyelashes]) < 1){
  206.         cli_execute("use 1 glittery mascara");
  207.     }
  208.    
  209.     // Semi-rare
  210.     if(item_amount($item[teeny-tiny magic scroll]) > 0 && have_effect($effect[Happy Trails]) < 1){
  211.         use(1, $item[teeny-tiny magic scroll]);
  212.     }
  213. }
  214.  
  215. void buff_moxie(){
  216.     buff_all();
  217.    
  218.     // Buffs
  219.     get_buff($effect[The Moxious Madrigal], $skill[The Moxious Madrigal]);
  220.     get_buff($effect[Quiet Desperation], $skill[Quiet Desperation]);
  221.    
  222.     // Sauce potions
  223.     get_potion($effect[Superhuman Sarcasm], $item[serum of sarcasm]);
  224.     get_potion($effect[Expert Oiliness], $item[oil of expertise]);
  225.    
  226.     // Sometimes you get lucky
  227.     if(item_amount($item[pressurized potion of pulchritude]) > 0 && have_effect($effect[Pulchritudinous Pressure]) < 1){
  228.         use(1, $item[pressurized potion of pulchritude]);
  229.     }
  230.    
  231.     // Hair spray
  232.     if(have_effect($effect[Butt-Rock Hair]) < 1){
  233.         cli_execute("use 1 hair spray");
  234.     }
  235.    
  236.     // Sweet synthesis
  237.     do_synthesis($effect[Synthesis: Cool]);
  238.    
  239.     // Myst quest reward
  240.     if(item_amount($item[pocket maze]) > 0 && have_effect($effect[Amazing]) < 1){
  241.         use(1, $item[pocket maze]);
  242.     }
  243. }
  244.  
  245. void buff_muscle(){
  246.     buff_all();
  247.    
  248.     // Buffs
  249.     get_buff($effect[Rage of the Reindeer], $skill[Rage of the Reindeer]);
  250.     get_buff($effect[Power Ballad of the Arrowsmith], $skill[The Power Ballad of the Arrowsmith]);
  251.     get_buff($effect[Quiet Determination], $skill[Quiet Determination]);
  252.    
  253.     // Sauce potions
  254.     get_potion($effect[Phorcefullness], $item[philter of phorce]);
  255.     get_potion($effect[Expert Oiliness], $item[oil of expertise]);
  256.        
  257.     // Bengal
  258.     if(have_effect($effect[Go Get 'Em, Tiger!]) < 1){
  259.         cli_execute("use 1 Ben-Gal Balm");
  260.     }
  261.    
  262.     // Semi-rare
  263.     if(item_amount($item[bottle of rhinoceros hormones]) > 0 && have_effect($effect['Roids of the Rhinoceros]) < 1){
  264.         use(1, $item[bottle of rhinoceros hormones]);
  265.     }
  266.    
  267.     // Sweet synthesis
  268.     do_synthesis($effect[Synthesis: Strong]);
  269.    
  270.     // Moxie quest reward
  271.     if(item_amount($item[shady shades]) > 0 && have_effect($effect[Throwing Some Shade]) < 1){
  272.         use(1, $item[shady shades]);
  273.     }
  274. }
  275.  
  276. void buff_hp(){
  277.     // Sweet synthesis
  278.     do_synthesis($effect[Synthesis: Hardy]);
  279.    
  280.     // Oil of expertise
  281.     get_potion($effect[Expert Oiliness], $item[oil of expertise]);
  282.    
  283.     // Buffs
  284.     get_buff($effect[Reptilian Fortitude], $skill[Reptilian Fortitude]);
  285.     get_buff($effect[A Few Extra Pounds], $skill[Holiday Weight Gain]);
  286.     get_buff($effect[Rage of the Reindeer], $skill[Rage of the Reindeer]);
  287.     get_buff($effect[Power Ballad of the Arrowsmith], $skill[The Power Ballad of the Arrowsmith]);
  288.    
  289.     // Bengal
  290.     if(have_effect($effect[Go Get 'Em, Tiger!]) < 1){
  291.         cli_execute("use 1 Ben-Gal Balm");
  292.     }
  293. }
  294.  
  295. void buff_spell(){
  296.     // Buy and cast simmer
  297.     if(!have_skill($skill[simmer])){
  298.         visit_url("guild.php?place=trainer");
  299.         visit_url("guild.php?action=buyskill&skillid=25", true);
  300.     }
  301.     if(have_effect($effect[Simmering]) < 1){
  302.         use_skill(1, $skill[simmer]);
  303.     }
  304.    
  305.     // Buffs
  306.     get_buff($effect[Jackasses' Symphony of Destruction], $skill[Jackasses' Symphony of Destruction]);
  307.    
  308.     // Marble soda
  309.     if(item_amount($item[tobiko marble soda]) > 0 || item_amount($item[Ye Wizard's Shack snack voucher]) > 0 && have_effect($effect[Pisces in the Skyces]) < 1){
  310.         cli_execute("use 1 tobiko marble soda");
  311.     }
  312.    
  313.     // Sugar chapeau
  314.     if(item_amount($item[sugar sheet]) > 0 && available_amount($item[sugar chapeau]) < 1){
  315.         cli_execute("make sugar chapeau");
  316.     }
  317.    
  318.     // Affirmation
  319.     if(item_amount($item[Daily affirmation: Be a Mind Master]) > 0){
  320.         use(1, $item[Daily affirmation: Be a Mind Master]);
  321.     }
  322.    
  323.     // Pool
  324.     if(get_property("_poolGames").to_int() < 3 && have_effect($effect[Mental A-cue-ity]) < 1){
  325.         cli_execute("pool 2");
  326.     }
  327. }
  328.  
  329. void buff_meat(){
  330.     // Hobo monkey
  331.     use_familiar($familiar[hobo monkey]);
  332.    
  333.     // Buffs
  334.     get_buff($effect[Leash of linguini], $skill[Leash of linguini]);
  335.     get_buff($effect[Empathy], $skill[Empathy of the Newt]);
  336.     get_buff($effect[Polka of Plenty], $skill[The Polka of Plenty]);
  337.    
  338.     cli_execute("maximize meat");
  339.     // Garbage hat
  340.     equip_garbage_item($item[wad of used tape]);
  341. }
  342.  
  343. void fuel_asdon(int fuel_level){
  344.     int bread_needed;
  345.    
  346.     while(get_fuel() < fuel_level){
  347.         // Calculate how many loaves of bread are needed
  348.         bread_needed = (fuel_level - get_fuel()) / 5;
  349.         if(bread_needed == 0) bread_needed = 1;
  350.        
  351.         // Make them, minus the number we may already have
  352.         cli_execute("make "+to_int(bread_needed - item_amount($item[loaf of soda bread]))+" loaf of soda bread");
  353.         // Fuel the car
  354.         cli_execute("asdonmartin fuel "+to_int(bread_needed)+" loaf of soda bread");
  355.     }
  356. }
  357.  
  358. void buff_weight(){
  359.     // Buffs
  360.     get_buff($effect[Leash of linguini], $skill[Leash of linguini]);
  361.     get_buff($effect[Empathy], $skill[Empathy of the Newt]);
  362.    
  363.     // Play pool (+weight)
  364.     if(get_property("_poolGames").to_int() < 3 && have_effect($effect[Billiards Belligerence]) < 1){
  365.         cli_execute("pool 1");
  366.     }
  367.    
  368.     // Use candy heart if we have more than 1
  369.     cli_execute("cast * candy heart");
  370.     if(item_amount($item[green candy heart]) > 1 && have_effect($effect[Heart of Green]) < 1){
  371.         use(1, $item[green candy heart]);
  372.     }
  373.        
  374.     // Use sandworm, equip pet sweater
  375.     use_familiar($familiar[baby sandworm]);
  376. }
  377.  
  378. void buff_noncom_quest(){
  379.     // Buffs
  380.     if(have_effect($effect[Carlweather's cantata of confrontation]) > 0){
  381.         cli_execute("shrug Carlweather's cantata of confrontation");
  382.     }
  383.     get_buff($effect[the sonata of sneakiness], $skill[the sonata of sneakiness]);
  384.     get_buff($effect[Smooth Movements], $skill[Smooth Movement]);
  385.    
  386.     // Asdon
  387.     if(have_effect($effect[Driving Stealthily]) < 1){
  388.         fuel_asdon(37);
  389.         cli_execute("asdonmartin drive Stealthily");
  390.     }
  391.    
  392.     // Swim sprints
  393.     if(have_effect($effect[Silent Running]) < 1){
  394.         cli_execute("swim sprints");
  395.     }
  396.    
  397.     // KGB
  398.     cli_execute("briefcase e spell hot -combat");
  399.    
  400.     // Horse
  401.     if(!contains_text(get_property("_horsery"), "Combat Rate")){
  402.         visit_url("place.php?whichplace=town_right&action=town_horsery");
  403.         visit_url("choice.php?pwd=&whichchoice=1266&option=2", true);
  404.     }
  405.    
  406.     // Quest reward
  407.     if(have_effect($effect[A Rose by Any Other Material]) < 1 && item_amount($item[squeaky toy rose]) > 0){
  408.         use(1, $item[squeaky toy rose]);
  409.     }
  410.    
  411.     // Genie wish
  412.     if(get_property("_genieWishesUsed").to_int() < 3 && have_effect($effect[disquiet riot]) < 1){
  413.         cli_execute("genie effect disquiet riot");
  414.     }
  415.    
  416.     // Deodorant
  417.     if(have_effect($effect[Fresh Scent]) < 1 && item_amount($item[deodorant]) > 0){
  418.         use(1, $item[deodorant]);
  419.     }
  420. }
  421.  
  422. void buff_melee_dmg(){
  423.     // Buffs
  424.     get_buff($effect[Jackasses' Symphony of Destruction], $skill[Jackasses' Symphony of Destruction]);
  425.     get_buff($effect[Rage of the Reindeer], $skill[Rage of the Reindeer]);
  426.    
  427.     // Marble soda
  428.     if((item_amount($item[wasabi marble soda]) > 0 || item_amount($item[Ye Wizard's Shack snack voucher]) > 0) && have_effect($effect[Wasabi With You]) < 1){
  429.         cli_execute("use 1 wasabi marble soda");
  430.     }
  431.    
  432.     // Play pool (+weight)
  433.     if(get_property("_poolGames").to_int() < 3 && have_effect($effect[Billiards Belligerence]) < 1){
  434.         cli_execute("pool 1");
  435.     }
  436. }
  437.  
  438. void buff_hot_res(){
  439.     // Sweet synthesis
  440.     do_synthesis($effect[Synthesis: Hot]);
  441.    
  442.     // Buffs
  443.     get_buff($effect[Astral Shell], $skill[Astral Shell]);
  444.     get_buff($effect[Elemental Saucesphere], $skill[Elemental Saucesphere]);
  445.    
  446.     // Asdon
  447.     if(have_effect($effect[Driving Safely]) < 1){
  448.         fuel_asdon(37);
  449.         cli_execute("asdonmartin drive safely");
  450.     }
  451.    
  452.     // Ish kabibble
  453.     if(my_inebriety() <= 12 && have_effect($effect[Feeling No Pain]) < 1){
  454.         get_buff($effect[Ode to Booze], $skill[The Ode to Booze]);
  455.         cli_execute("drink 1 ish kabibble");
  456.     }
  457.    
  458.     // Horse
  459.     if(!contains_text(get_property("_horsery"), "Elemental")){
  460.         visit_url("place.php?whichplace=town_right&action=town_horsery");
  461.         visit_url("choice.php?pwd=&whichchoice=1266&option=4", true);
  462.     }
  463.    
  464.     // Spacegate vaccine
  465.     if(have_effect($effect[Rainbow Vaccine]) < 1 && !get_property("_spacegateVaccine").to_boolean() && get_property("spacegateVaccine1").to_boolean()){
  466.         cli_execute("Spacegate vaccine 1");
  467.     }
  468. }
  469.  
  470. void buff_items_and_booze(){
  471.     // Sweet synthesis
  472.     do_synthesis($effect[Synthesis: Collection]);
  473.        
  474.     // Buffs
  475.     get_buff($effect[Fat Leon's Phat Loot Lyric], $skill[Fat Leon's Phat Loot Lyric]);
  476.     get_buff($effect[Singer's Faithful Ocelot], $skill[Singer's Faithful Ocelot]);
  477.    
  478.     // Pool
  479.     if(get_property("_poolGames").to_int() < 3 && have_effect($effect[Hustlin']) < 1){
  480.         cli_execute("pool 3");
  481.     }
  482.    
  483.     // Terminal
  484.     if(get_property("_sourceTerminalEnhanceUses").to_int() < 3 && have_effect($effect[items.enh]) < 1){
  485.         cli_execute("terminal enhance items.enh");
  486.     }
  487.    
  488.     // Asdon
  489.     if(have_effect($effect[Driving Observantly]) < 1){
  490.         fuel_asdon(37);
  491.         cli_execute("asdonmartin drive Observantly");
  492.     }
  493.    
  494.     // Genie
  495.     if(get_property("_genieWishesUsed").to_int() < 3 && have_effect($effect[Infernal thirst]) < 1){
  496.         cli_execute("genie effect Infernal thirst");
  497.     }
  498.    
  499.     // Cyclops eyedrops
  500.     if(have_effect($effect[One Very Clear Eye]) < 1 && item_amount($item[cyclops eyedrops]) > 0){
  501.         use(1, $item[cyclops eyedrops]);
  502.     }
  503.    
  504.     // Squint
  505.     if(!get_property("_steelyEyedSquintUsed").to_boolean() && have_effect($effect[Steely-Eyed Squint]) < 1){
  506.         use_skill(1, $skill[Steely-Eyed Squint]);
  507.     }
  508. }
  509.  
  510. void maximize_stash(string opts, boolean use_stash){
  511.     string prop_val = get_property("autoSatisfyWithStash");
  512.     set_property("autoSatisfyWithStash", use_stash);
  513.     cli_execute("maximize "+opts);
  514.     set_property("autoSatisfyWithStash", prop_val);
  515. }
  516.  
  517. void buff_coms(){
  518.     maximize_stash("+combat", false);
  519.        
  520.     if(have_effect($effect[The Sonata of Sneakiness]) > 0){
  521.         cli_execute("shrug The Sonata of Sneakiness");
  522.     }
  523.     if(have_effect($effect[musk of the moose]) < 1){
  524.         use_skill(1, $skill[musk of the moose]);
  525.     }
  526.     if(have_effect($effect[Carlweather's cantata of confrontation]) < 1){
  527.         use_skill(1, $skill[Carlweather's cantata of confrontation]);
  528.     }
  529. }
  530.  
  531. void kgb_buff(effect eff){
  532.     string eff_string;
  533.    
  534.     switch(eff){
  535.         case $effect[Thunderspell]:
  536.             eff_string = "myst";
  537.             break;
  538.         case $effect[Goldentongue]:
  539.             eff_string = "moxie";
  540.             break;
  541.         case $effect[License to Punch]:
  542.             eff_string = "muscle";
  543.             break;
  544.         case $effect[Items are forever]:
  545.             eff_string = "item";
  546.             break;
  547.     }
  548.    
  549.     // Try to get the buff we're looking for
  550.     while(have_effect(eff) < 1 && get_property("_kgbClicksUsed").to_int() <= 21){
  551.         cli_execute("briefcase buff "+eff_string);
  552.     }
  553. }
  554.  
  555. void get_once_day(){
  556.     if(!get_property("_perfectFreezeUsed").to_boolean()){
  557.         use_skill(1, $skill[perfect freeze]);
  558.     }
  559.     if(get_property("grimoire2Summons").to_int() == 0){
  560.         use_skill(1, $skill[Summon Tasteful Items]);
  561.     }
  562.     // TODO: use foot massage oil
  563.     if(get_property("grimoire3Summons").to_int() == 0){
  564.         use_skill(1, $skill[Summon Alice's Army Cards]);
  565.     }
  566.     if(get_property("cocktailSummons").to_int() == 0){
  567.         use_skill(1, $skill[Advanced cocktailcrafting]);
  568.     }
  569.     if(get_property("reagentSummons").to_int() == 0){
  570.         use_skill(1, $skill[Advanced saucecrafting]);
  571.     }
  572.     if(get_property("noodleSummons").to_int() == 0){
  573.         use_skill(1, $skill[Pastamastery]);
  574.     }
  575.     if(get_property("_candySummons").to_int() == 0){
  576.         use_skill(1, $skill[Summon crimbo candy]);
  577.     }
  578. }
  579.  
  580. void do_lov(){
  581.     int mp_req;
  582.     string page;
  583.    
  584.     // Set terminal
  585.     cli_execute("terminal educate extract");
  586.     cli_execute("terminal educate compress");
  587.    
  588.     // Heal (probably with hot tub)
  589.     heal();
  590.  
  591.     // Make sure we have enough mp to cast mortar, extract, compress and cannon
  592.     mp_req = 8 + 5 + 5 + 8 + 4*numeric_modifier("mana cost") + 5;
  593.     if(my_mp() < mp_req){
  594.         restore_mp(mp_req);
  595.     }
  596.  
  597.     // Enforcer: mortar, compress and cannon
  598.     // Engineer: weaksauce, micrometeor, time-spinner, noodles, cow-bow boots, compress, cigar + cigar, toss
  599.     // Last guy: mortar, geyser
  600.     // cli_execute("/aa cs_all");
  601.     cli_execute("ccs abort");
  602.    
  603.     page = visit_url("place.php?whichplace=town_wrong&action=townwrong_tunnel");
  604.     if(contains_text(page, "Come back tomorrow!")){
  605.         print("Already visited L.O.V.E. Tunnel. Can't be visiting again.", "red");
  606.         visit_url("choice.php?pwd=&whichchoice=1222&option=2");
  607.     } else {
  608.         visit_url("choice.php?pwd=&whichchoice=1222&option=1");
  609.    
  610.         // LOV enforcer
  611.         visit_url("choice.php?pwd=&whichchoice=1223&option=1");
  612.         run_combat(cs_all_macro);
  613.        
  614.         // Grab myst equip
  615.         visit_url("choice.php?pwd=&whichchoice=1224&option=2");
  616.        
  617.         // LOV engineer
  618.         visit_url("choice.php?pwd=&whichchoice=1225&option=1");
  619.         run_combat(cs_all_macro);
  620.        
  621.         // Stat buff
  622.         visit_url("choice.php?pwd=&whichchoice=1226&option=1");
  623.        
  624.         // Last combat
  625.         visit_url("choice.php?pwd=&whichchoice=1227&option=1");
  626.         run_combat(cs_all_macro);
  627.        
  628.         // Chocolate
  629.         visit_url("choice.php?pwd=&whichchoice=1228&option=3");
  630.        
  631.         // Use chocolate
  632.         if(available_amount($item[LOV Extraterrestrial Chocolate]) > 0){
  633.             use(1, $item[LOV Extraterrestrial Chocolate]);
  634.         }
  635.     }
  636.    
  637.     cli_execute("/aa none");
  638.     cli_execute("ccs default");
  639. }
  640.  
  641. void do_brickos(){
  642.     int nb_brick;
  643.     item it_bricko;
  644.    
  645.     while(item_amount($item[bricko eye brick]) > 0 || item_amount($item[BRICKO trunk]) > 0){
  646.         heal();
  647.         nb_brick = 0;
  648.        
  649.         // Open trunk if we got one
  650.         if(item_amount($item[bricko trunk]) > 0){
  651.             use(1, $item[bricko trunk]);
  652.         }
  653.         // See what we can make with our bricks
  654.         else {
  655.             if(item_amount($item[bricko brick]) >= 23){
  656.                 nb_brick = 23;
  657.                 it_bricko = $item[BRICKO elephant];
  658.             } else if(item_amount($item[bricko brick]) >= 11){
  659.                 nb_brick = 11;
  660.                 it_bricko = $item[BRICKO turtle];
  661.             } else if(item_amount($item[bricko brick]) >= 5){
  662.                 nb_brick = 5;
  663.                 it_bricko = $item[BRICKO bat];
  664.             } else if(item_amount($item[bricko brick]) >= 2){
  665.                 nb_brick = 2;
  666.                 it_bricko = $item[BRICKO ooze];
  667.             } else if(my_mp() > 150){
  668.                 cli_execute("cast 1 bricko");
  669.             } else {
  670.                 break;
  671.             }
  672.         }
  673.        
  674.         // Fight!
  675.         if(nb_brick > 0){
  676.             use_familiar($familiar[Baby sandworm]);
  677.             // cli_execute("/aa cs_all");
  678.             //cli_execute("ccs cs_all");
  679.             cli_execute("terminal educate extract");
  680.             cli_execute("terminal educate compress");
  681.            
  682.             use(nb_brick, $item[bricko brick]);
  683.             //use(1, it_bricko);
  684.             visit_url("inv_use.php?checked=1&whichitem="+it_bricko.to_int()+"&pwd=");
  685.             run_combat(cs_all_macro);
  686.            
  687.             cli_execute("/aa none");
  688.             cli_execute("ccs default");
  689.         }
  690.     }
  691. }
  692.  
  693. void do_ghost(){
  694.     // Go kill a ghost if one is available
  695.     if(get_property("ghostLocation").to_string() != ""){
  696.         get_buff($effect[Astral Shell], $skill[Astral Shell]);
  697.         get_buff($effect[Elemental Saucesphere], $skill[Elemental Saucesphere]);
  698.         heal();
  699.        
  700.         equip($item[protonic accelerator pack]);
  701.         adv1(get_property("ghostLocation").to_location(), -1, cs_all_macro);
  702.        
  703.         use_skill(1, $skill[Cannelloni Cocoon]);
  704.     }
  705. }
  706.  
  707. void do_snojo(){
  708.     int mp_req;
  709.    
  710.     // Weak_stag if no mp absorb, mortar + geyser, cast turbo if mp < threshold
  711.     if(get_property("_snojoFreeFights").to_int() < 10){
  712.         // Terminal turbo
  713.         cli_execute("terminal educate extract");
  714.         cli_execute("terminal educate turbo");
  715.        
  716.         cli_execute("/aa none");
  717.        
  718.         get_buff($effect[Astral Shell], $skill[Astral Shell]);
  719.         get_buff($effect[Elemental Saucesphere], $skill[Elemental Saucesphere]);
  720.        
  721.         // TODO: make sure it's actually set to myst
  722.         visit_url("place.php?whichplace=snojo&action=snojo_controller");
  723.        
  724.         // TODO: for now the combat macro will abort if the snowman gets a hot resist part, but that may not be needed.
  725.         //abort("Run your snojo fights manually!");
  726.         while(get_property("_snojoFreeFights").to_int() < 10){
  727.             //use_hipster();
  728.            
  729.             // Make sure we are healed and have enough mp to cast weaksauce, mortar, extract and geyser
  730.             mp_req = 8 + 8 + 5 + 24 + 4*numeric_modifier("mana cost") + 5;
  731.             if(my_mp() < mp_req){
  732.                 restore_mp(mp_req);
  733.             }
  734.             heal_threshold(200, false);
  735.                        
  736.             visit_url("adventure.php?snarfblat=460");
  737.             run_combat(cs_all_macro);
  738.         }
  739.        
  740.         // Get rid of potential negative effects
  741.         if(have_effect($effect[Snowballed]) > 0 || have_effect($effect[Half-Blooded]) > 0 || have_effect($effect[Half-Drained]) > 0 || have_effect($effect[Bruised]) > 0 || have_effect($effect[Relaxed Muscles]) > 0 || have_effect($effect[Hypnotized]) > 0 || have_effect($effect[Bad Haircut]) > 0){
  742.             heal_threshold(9999, true);
  743.         }
  744.     }
  745. }
  746.  
  747. void do_tentacle(){
  748.     string temp;
  749.    
  750.     if(!get_property("_eldritchTentacleFought").to_boolean()){
  751.         heal();
  752.         cli_execute("/aa none");
  753.         cli_execute("ccs abort");
  754.        
  755.         use_familiar($familiar[baby sandworm]);
  756.         cli_execute("maximize exp -pants");
  757.        
  758.         get_buff($effect[Leash of linguini], $skill[Leash of linguini]);
  759.         get_buff($effect[Empathy], $skill[Empathy of the Newt]);
  760.         get_buff($effect[Ur-Kel's Aria of Annoyance], $skill[Ur-Kel's Aria of Annoyance]);
  761.         get_buff($effect[Drescher's Annoying Noise], $skill[Drescher's Annoying Noise]);
  762.         get_buff($effect[Reptilian Fortitude], $skill[Reptilian Fortitude]);
  763.         get_buff($effect[A Few Extra Pounds], $skill[Holiday Weight Gain]);
  764.        
  765.         temp = visit_url("place.php?whichplace=forestvillage&action=fv_scientist");
  766.         if(contains_text(temp, "Can I fight that tentacle you saved for science?")){
  767.             //run_choice(1);
  768.             visit_url("choice.php?whichchoice=1201&pwd=&option=1");
  769.             run_combat(cs_all_macro);
  770.         } else {
  771.             run_choice(2);
  772.         }
  773.     }
  774. }
  775.  
  776. void get_ninja(){
  777.     // Look for an amateur ninja if needed
  778.     if(available_amount($item[li'l ninja costume]) < 1){
  779.         // Prepare banishes & free runs
  780.         fuel_asdon(50);
  781.         equip($slot[acc2], $item[Kremlin's Greatest Briefcase]);
  782.         restore_mp(50);
  783.        
  784.         use_familiar($familiar[pair of stomping boots]);
  785.        
  786.         while(available_amount($item[li'l ninja costume]) < 1){
  787.             get_buff($effect[Leash of linguini], $skill[Leash of linguini]);
  788.             get_buff($effect[Empathy], $skill[Empathy of the Newt]);
  789.             restore_mp(30);
  790.             adv1($location[the haiku dungeon], -1, cs_all_macro);
  791.         }
  792.     }  
  793. }
  794.  
  795. boolean have_quest(string quest_text){
  796.     string page;
  797.     page = visit_url("council.php");
  798.     return contains_text(page, quest_text);
  799. }
  800.  
  801. // This function gives us the number of turns left before a certain counter reaches 0 (can return a negative number)
  802. // Some code inspired by Ezandora's Guide
  803. int get_counter_from_now(string counter_label){
  804.     int turn_number;
  805.     string counter_name_raw;
  806.     string counters = get_property("relayCounters").to_string();
  807.    
  808.     string [int] counters_split = split_string(counters.replace_string("|", ":"), ":");
  809.    
  810.     for i from 0 to (counters_split.count() - 1) by 3 {
  811.         if (i + 3 > counters_split.count())
  812.             break;
  813.         if (counters_split[i].length() == 0)
  814.            continue;
  815.         turn_number = to_int(counters_split[i]);
  816.         counter_name_raw = counters_split[i + 1];
  817.        
  818.         if(contains_text(counter_name_raw, counter_label)){
  819.             return turn_number - my_turncount();
  820.         }
  821.     }
  822.    
  823.     return 1000;
  824. }
  825.  
  826. // This function set daily preferences with the name of candies to be sweet synthesized for:
  827. // - Item buff
  828. // - +Myst gains
  829. // - Myst buff
  830. void assign_candy(){
  831.     // Only do day 1 for now
  832.     if(my_daycount() == 1){
  833.         // Map keys are nbP, nbF, nbC
  834.         // With P = peppermint bark, F = fudge, C = candied pecan
  835.         item [int, int, int] candy1_for_item;
  836.         item [int, int, int] candy2_for_item;
  837.         item [int, int, int] candy1_for_mystg;
  838.         item [int, int, int] candy2_for_mystg;
  839.         candy1_for_item[3, 0, 0] = $item[Crimbo peppermint bark];
  840.         candy1_for_item[2, 1, 0] = $item[Crimbo peppermint bark];
  841.         candy1_for_item[2, 0, 1] = $item[Crimbo peppermint bark];
  842.         candy1_for_item[0, 3, 0] = $item[Crimbo fudge];
  843.         candy1_for_item[1, 2, 0] = $item[Crimbo peppermint bark];
  844.         candy1_for_item[0, 2, 1] = $item[Crimbo candied pecan];
  845.         candy1_for_item[0, 0, 3] = $item[Crimbo candied pecan];
  846.         candy1_for_item[1, 0, 2] = $item[Crimbo candied pecan];
  847.         candy1_for_item[0, 1, 2] = $item[Crimbo candied pecan];
  848.         candy1_for_item[1, 1, 1] = $item[Crimbo fudge];
  849.  
  850.         candy2_for_item[3, 0, 0] = $item[Crimbo peppermint bark];
  851.         candy2_for_item[2, 1, 0] = $item[Crimbo peppermint bark];
  852.         candy2_for_item[2, 0, 1] = $item[Crimbo peppermint bark];
  853.         candy2_for_item[0, 3, 0] = $item[sugar shorts];
  854.         candy2_for_item[1, 2, 0] = $item[sugar shotgun];
  855.         candy2_for_item[0, 2, 1] = $item[Sugar sheet];
  856.         candy2_for_item[0, 0, 3] = $item[Sugar sheet];
  857.         candy2_for_item[1, 0, 2] = $item[Sugar sheet];
  858.         candy2_for_item[0, 1, 2] = $item[Sugar sheet];
  859.         candy2_for_item[1, 1, 1] = $item[sugar shorts];
  860.  
  861.         candy1_for_mystg[3, 0, 0] = $item[Crimbo peppermint bark];
  862.         candy1_for_mystg[2, 1, 0] = $item[Crimbo fudge];
  863.         candy1_for_mystg[2, 0, 1] = $item[Crimbo candied pecan];
  864.         candy1_for_mystg[0, 3, 0] = $item[Crimbo fudge];
  865.         candy1_for_mystg[1, 2, 0] = $item[Crimbo fudge];
  866.         candy1_for_mystg[0, 2, 1] = $item[Crimbo fudge];
  867.         candy1_for_mystg[0, 0, 3] = $item[Crimbo candied pecan];
  868.         candy1_for_mystg[1, 0, 2] = $item[Crimbo candied pecan];
  869.         candy1_for_mystg[0, 1, 2] = $item[Crimbo candied pecan];
  870.         candy1_for_mystg[1, 1, 1] = $item[Crimbo candied pecan];
  871.  
  872.         candy2_for_mystg[3, 0, 0] = $item[sugar shank];
  873.         candy2_for_mystg[2, 1, 0] = $item[sugar shillelagh];
  874.         candy2_for_mystg[2, 0, 1] = $item[sugar shotgun];
  875.         candy2_for_mystg[0, 3, 0] = $item[Crimbo fudge];
  876.         candy2_for_mystg[1, 2, 0] = $item[Crimbo fudge];
  877.         candy2_for_mystg[0, 2, 1] = $item[Crimbo fudge];
  878.         candy2_for_mystg[0, 0, 3] = $item[sugar shotgun];
  879.         candy2_for_mystg[1, 0, 2] = $item[Crimbo peppermint bark];
  880.         candy2_for_mystg[0, 1, 2] = $item[sugar shotgun];
  881.         candy2_for_mystg[1, 1, 1] = $item[Crimbo peppermint bark];
  882.        
  883.         // Item buff
  884.         if(get_property("_candy1_for_item") == "" || get_property("_candy2_for_item") == ""){
  885.             set_property("_candy1_for_item", candy1_for_item[item_amount($item[Crimbo peppermint bark]), item_amount($item[Crimbo fudge]), item_amount($item[Crimbo candied pecan])].to_string());
  886.             set_property("_candy2_for_item", candy2_for_item[item_amount($item[Crimbo peppermint bark]), item_amount($item[Crimbo fudge]), item_amount($item[Crimbo candied pecan])].to_string());
  887.         }
  888.         // Myst gain buff
  889.         if(get_property("_candy1_for_mystg") == "" || get_property("_candy2_for_mystg") == ""){
  890.             set_property("_candy1_for_mystg", candy1_for_mystg[item_amount($item[Crimbo peppermint bark]), item_amount($item[Crimbo fudge]), item_amount($item[Crimbo candied pecan])].to_string());
  891.             set_property("_candy2_for_mystg", candy2_for_mystg[item_amount($item[Crimbo peppermint bark]), item_amount($item[Crimbo fudge]), item_amount($item[Crimbo candied pecan])].to_string());
  892.         }
  893.         // Myst buff
  894.         if(get_property("_candy_for_myst") == ""){
  895.             // Cases where we don't have a sugar sheet left (CCC and CCF)
  896.             if(item_amount($item[Crimbo candied pecan]) == 3 || (item_amount($item[Crimbo candied pecan]) == 2 && item_amount($item[Crimbo fudge]) == 1)){
  897.                 set_property("_candy_for_myst", "none");
  898.             } else {
  899.                 set_property("_candy_for_myst", "candy_heart");
  900.             }
  901.         }
  902.     }
  903. }
  904.  
  905. void common_step1(){
  906.     // Detective cases + badge
  907.     if(get_property("_detectiveCasesCompleted").to_int() < 3){
  908.         cli_execute("call Detective Solver.ash");
  909.     }
  910.     if(available_amount($item[silver detective badge])> 0){
  911.         equip($slot[acc3], $item[silver detective badge]);
  912.     } else if(available_amount($item[gold detective badge])> 0){
  913.         equip($slot[acc3], $item[gold detective badge]);
  914.     }
  915.    
  916.     // Pantogram
  917.     if(get_property("_pantogramModifier") == ""){
  918.         visit_url("inv_use.php?pwd=&which=3&whichitem=9573");
  919.         if(item_amount($item[baconstone]) > 0){
  920.             visit_url("choice.php?pwd=&whichchoice=1270&option=1&m=2&e=1&s1=705,1&s2=-1,0&s3=-1,0", true);
  921.         } else {
  922.             visit_url("choice.php?pwd=&whichchoice=1270&option=1&m=2&e=1&s1=-2,0&s2=-1,0&s3=-1,0", true);
  923.         }
  924.     }
  925.     if(available_amount($item[pantogram pants]) > 0){
  926.         equip($item[pantogram pants]);
  927.     }
  928.    
  929.     // Cowboy boots
  930.     visit_url("place.php?whichplace=town_right&action=townright_ltt");
  931.     if(available_amount($item[your cowboy boots]) > 0){
  932.         equip($slot[acc1], $item[your cowboy boots]);
  933.     }
  934.    
  935.     // KGB
  936.     if(my_inebriety() < inebriety_limit()){
  937.         cli_execute("briefcase left");
  938.         cli_execute("briefcase e spell hot ml");
  939.     }
  940.    
  941.     equip($slot[acc2], $item[Kremlin's Greatest Briefcase]);
  942.    
  943.     // Tote's garbage shirt
  944.     if(get_property("_garbageShirtCharge") > 0){
  945.         if(available_amount($item[makeshift garbage shirt]) < 1){
  946.             visit_url("inv_use.php?pwd=&which=3&whichitem=9690");
  947.             visit_url("choice.php?pwd=&whichchoice=1275&option=5", true);
  948.         }
  949.         equip($item[makeshift garbage shirt]);
  950.     }
  951.    
  952.     // Mummery
  953.     use_familiar($familiar[baby sandworm]);
  954.     if(!contains_text(get_property("_mummeryMods"), "Mysticality")){
  955.         cli_execute("mummery mysticality");
  956.     }
  957.    
  958.     // Protonic pack
  959.     equip($item[protonic accelerator pack]);
  960.     equip($item[KoL Con 13 snowglobe]);
  961.     equip($item[astral pet sweater]);
  962.    
  963.     // Fish hatchet
  964.     if(!get_property("_floundryItemCreated").to_boolean()){
  965.         cli_execute("make fish hatchet");
  966.     }
  967.     equip($item[fish hatchet]);
  968.    
  969.     // Source terminal
  970.     if(have_effect($effect[substats.enh]) < 1){
  971.         cli_execute("terminal enhance substats");
  972.     }
  973.     cli_execute("terminal enquiry stats");
  974.     cli_execute("terminal educate extract");
  975.     cli_execute("terminal educate compress");
  976.    
  977.     // VIP shower
  978.     if(!get_property("_aprilShower").to_boolean()){
  979.         cli_execute("shower mysticality");
  980.     }
  981.    
  982.     // Equip helmet
  983.     if(available_amount($item[Van der Graaf helmet]) > 0){
  984.         equip($item[Van der Graaf helmet]);
  985.     } else if(available_amount($item[filthy knitted dread sack]) > 0){
  986.         equip($item[filthy knitted dread sack]);
  987.     } else if(available_amount($item[Hollandaise helmet]) > 0){
  988.         equip($item[Hollandaise helmet]);
  989.     }
  990.    
  991.     if(get_property("_candySummons").to_int() == 0){
  992.         use_skill(1, $skill[Summon crimbo candy]);
  993.     }
  994.    
  995.     // Get 2 sugar sheets
  996.     while(get_property("tomeSummons").to_int() < 2 && available_amount($item[sugar sheet]) < 2){
  997.         cli_execute("cast sugar sheet");
  998.     }
  999.    
  1000.     assign_candy();
  1001. }
  1002.  
  1003. void exec_step1(){
  1004.     string page;
  1005.    
  1006.     // Toot oriole
  1007.     visit_url("tutorial.php?action=toot");
  1008.     if(item_amount($item[letter from King Ralph XI]) > 0){
  1009.         use(1, $item[letter from King Ralph XI]);
  1010.     }
  1011.     if(item_amount($item[pork elf goodies sack]) > 0){
  1012.         use(1, $item[pork elf goodies sack]);
  1013.     }
  1014.        
  1015.     // Use astral six pack
  1016.     if(item_amount($item[astral six-pack]) > 0){
  1017.         use(1, $item[astral six-pack]);
  1018.     }
  1019.    
  1020.     // Use tent
  1021.     if(item_amount($item[Newbiesport&trade; tent]) > 0){
  1022.         use(1, $item[Newbiesport&trade; tent]);
  1023.     }
  1024.    
  1025.     // Get normal horse
  1026.     if(get_property("_horsery") == ""){
  1027.         visit_url("place.php?whichplace=town_right&action=town_horsery");
  1028.         visit_url("choice.php?pwd=&whichchoice=1266&option=1", true);
  1029.     }
  1030.    
  1031.     // Do a bunch of stuff
  1032.     common_step1();
  1033.    
  1034.     // Autosell gems, buy accordion, mcd
  1035.     cli_execute("autosell * baconstone");
  1036.     cli_execute("autosell * porquoise");
  1037.     cli_execute("autosell * hamethyst");
  1038.     cli_execute("mcd 10");
  1039.     if(item_amount($item[toy accordion]) < 1){
  1040.         buy(1, $item[toy accordion]);
  1041.     }
  1042.    
  1043.     // Fish for turtle totem
  1044.     while(item_amount($item[turtle totem]) < 1){
  1045.         cli_execute("/gum");
  1046.     }
  1047.    
  1048.     // Open madness bakery
  1049.     if(get_property("questM25Armorer").to_string() == "unstarted"){
  1050.         visit_url("shop.php?whichshop=armory&action=talk");
  1051.         run_choice(1);
  1052.     }
  1053.    
  1054.     // Break pvp stone
  1055.     page = visit_url("peevpee.php?place=fight");
  1056.     if(contains_text(page, "Smash that Hippy Crap!")){
  1057.         visit_url("peevpee.php?action=smashstone&pwd=&confirm=on");
  1058.     }
  1059.    
  1060.     // Talk to guild master
  1061.     visit_url("guild.php?place=challenge");
  1062. }
  1063.  
  1064. void exec_step2(){ 
  1065.     // Eat hardboiled egg if fullness = 0
  1066.     if(my_fullness() == 0){
  1067.         cli_execute("eat 1 hardboiled egg");
  1068.     }
  1069.    
  1070.     // Calculate the universe if we can get adventures
  1071.     check_calc_universe();
  1072.    
  1073.     use_familiar($familiar[baby sandworm]);
  1074.    
  1075.     do_synthesis($effect[Synthesis: Learning]);
  1076.    
  1077.     // Do lov tunnel
  1078.     if(!get_property("_loveTunnelUsed").to_boolean()){
  1079.         // Cast buffs
  1080.         get_buff($effect[The Magical Mojomuscular Melody], $skill[The Magical Mojomuscular Melody]);
  1081.         get_buff($effect[The Moxious Madrigal], $skill[The Moxious Madrigal]);
  1082.         get_buff($effect[Power Ballad of the Arrowsmith], $skill[The Power Ballad of the Arrowsmith]);
  1083.         get_buff($effect[Jackasses' Symphony of Destruction], $skill[Jackasses' Symphony of Destruction]);
  1084.         get_buff($effect[Spirit of Cayenne], $skill[Spirit of Cayenne]);
  1085.         get_buff($effect[Leash of linguini], $skill[Leash of linguini]);
  1086.         get_buff($effect[Empathy], $skill[Empathy of the Newt]);
  1087.         // TODO: don't use if not needed
  1088.         cli_execute("use 1 mascara");
  1089.         cli_execute("use 1 bengal");
  1090.         cli_execute("use 1 hair spray");
  1091.        
  1092.         do_lov();
  1093.     }
  1094.    
  1095.     // Summon brickos && cast aria, drescher, fortitude, holiday weight gain, astral shell, elemental saucesphere
  1096.     if(get_property("libramSummons").to_int() < 7){
  1097.         // Cast aria, drescher, fortitude, holiday weight gain, astral shell, elemental saucesphere
  1098.         if(have_effect($effect[The Moxious Madrigal]) > 0){
  1099.             cli_execute("shrug The Moxious Madrigal");
  1100.         }
  1101.         get_buff($effect[Ur-Kel's Aria of Annoyance], $skill[Ur-Kel's Aria of Annoyance]);
  1102.         get_buff($effect[Drescher's Annoying Noise], $skill[Drescher's Annoying Noise]);
  1103.         get_buff($effect[Reptilian Fortitude], $skill[Reptilian Fortitude]);
  1104.         get_buff($effect[A Few Extra Pounds], $skill[Holiday Weight Gain]);
  1105.        
  1106.         while(get_property("libramSummons").to_int() < 7){
  1107.             cli_execute("cast 1 bricko");
  1108.         }
  1109.     }
  1110.    
  1111.     // Trap kitchen ghost
  1112.     do_ghost();
  1113.     use_skill(1, $skill[cannelloni cocoon]);
  1114.    
  1115.     // Equip lov epaulettes
  1116.     equip($item[LOV Epaulettes]);
  1117.            
  1118.     // Snojo myst
  1119.     do_snojo();
  1120.    
  1121.     // Fight brickos
  1122.     do_brickos();
  1123. }
  1124.  
  1125. void fight_embezzler(){
  1126.     heal();
  1127.     buff_meat();
  1128.    
  1129.     cli_execute("/aa none");
  1130.    
  1131.     adv1($location[the haunted pantry], -1, cs_all_macro);
  1132.     check_calc_universe();
  1133. }
  1134.  
  1135. void exec_step3(){
  1136.     int i;
  1137.     string page = "";
  1138.    
  1139.     // Chew 3 agua de vida
  1140.     while(my_spleen_use() < 9 && item_amount($item[agua de vida]) > 0){
  1141.         chew(1, $item[agua de vida]);
  1142.     }
  1143.    
  1144.     // Fighting embezzler
  1145.     if(!get_property("_photocopyUsed").to_boolean()){
  1146.         // Fax embezzler (try a few times, abort if no response)
  1147.         i = 0;
  1148.         while(item_amount($item[photocopied monster]) < 1 && i < 3){
  1149.             i++;
  1150.             cli_execute("faxbot knob goblin embezzler");
  1151.         }
  1152.        
  1153.         if(item_amount($item[photocopied monster]) > 0){
  1154.             // Terminal to digitize
  1155.             // cli_execute("/aa cs_all");
  1156.             cli_execute("ccs abort");
  1157.             cli_execute("terminal educate extract");
  1158.             cli_execute("terminal educate digitize");
  1159.            
  1160.             // Use obtuse angel
  1161.             use_familiar($familiar[obtuse angel]);
  1162.        
  1163.             // Cast polka
  1164.             if(have_effect($effect[The Magical Mojomuscular Melody]) > 0){
  1165.                 cli_execute("shrug The Magical Mojomuscular Melody");
  1166.             }
  1167.             get_buff($effect[Polka of Plenty], $skill[The Polka of Plenty]);
  1168.            
  1169.             // Fight embezzler: digitize, arrow, mortar, cannon
  1170.             heal();
  1171.             //use(1, $item[photocopied monster]);
  1172.             visit_url("inv_use.php?pwd=&which=3&whichitem=4873");
  1173.             run_combat(cs_all_macro);
  1174.            
  1175.             cli_execute("/aa none");
  1176.             cli_execute("ccs default");
  1177.             check_calc_universe();
  1178.         } else {
  1179.             abort("Faxbot is broken :(");
  1180.         }
  1181.     }
  1182.    
  1183.     // Get a cherry from skeletons
  1184.     if(available_amount($item[cherry]) < 1){
  1185.         // Buff +items
  1186.         use_familiar($familiar[Jumpsuited Hound Dog]);
  1187.         if(have_effect($effect[Carlweather's Cantata of Confrontation]) > 0){
  1188.             cli_execute("shrug Carlweather's Cantata of Confrontation");
  1189.         }      
  1190.         if(have_effect($effect[Polka of plenty]) > 0){
  1191.             cli_execute("shrug polka of plenty");
  1192.         }
  1193.        
  1194.         get_buff($effect[Leash of linguini], $skill[Leash of linguini]);
  1195.         get_buff($effect[Empathy], $skill[Empathy of the Newt]);
  1196.         get_buff($effect[Fat Leon's Phat Loot Lyric], $skill[Fat Leon's Phat Loot Lyric]);
  1197.         get_buff($effect[Singer's Faithful Ocelot], $skill[Singer's Faithful Ocelot]);
  1198.        
  1199.         // Don't let the maximizer alternate between champagne bottle and wad of tape
  1200.         cli_execute("maximize item drop -hat");
  1201.         // Work around for garbage thing
  1202.         equip_garbage_item($item[broken champagne bottle]);
  1203.        
  1204.         // Open skeleton store
  1205.         if(get_property("questM23Meatsmith").to_string() == "unstarted"){
  1206.             visit_url("shop.php?whichshop=meatsmith&action=talk");
  1207.             run_choice(1);
  1208.         }
  1209.        
  1210.         // Look for fruit skeleton, shatterpunch it (kgb dart + snokebomb for others)
  1211.         while(available_amount($item[cherry]) < 1 && available_amount($item[oil of expertise]) < 3){
  1212.             heal_threshold(130, true);
  1213.             cli_execute("/aa none");
  1214.             cli_execute("ccs abort");
  1215.            
  1216.             adv1($location[the skeleton store], -1, cs_all_macro);
  1217.         }
  1218.     }
  1219.    
  1220.     equip($item[fish hatchet]);
  1221.     equip($item[KoL Con 13 snowglobe]);
  1222.    
  1223.     // Make meatcar
  1224.     if(available_amount($item[bitchin' meatcar]) < 1){
  1225.         cli_execute("make bitchin' meatcar");
  1226.     }
  1227.    
  1228.     // Shore & open island
  1229.     while(available_amount($item[Dingy dinghy]) < 1){
  1230.         if(available_amount($item[dinghy plans]) > 0){
  1231.             if(available_amount($item[dingy planks]) < 1){
  1232.                 buy(1, $item[dingy planks]);
  1233.             }
  1234.             use(1, $item[Dinghy plans]);
  1235.         } else if(available_amount($item[Shore Inc. Ship Trip Scrip]) >= 3){
  1236.             buy($coinmaster[The Shore, Inc. Gift Shop], 1, $item[dinghy plans]);
  1237.         } else {
  1238.             visit_url("adventure.php?snarfblat=355");
  1239.             run_choice(2);
  1240.         }
  1241.     }
  1242.    
  1243.     check_calc_universe();
  1244.     refresh_status();
  1245.    
  1246.     // Use hobo monkey, buff meat, fight embezzler
  1247.     while(get_counter_from_now("Digitize Monster") <= 0 && my_meat() <= 5000){
  1248.         fight_embezzler();
  1249.     }
  1250.    
  1251.     // Yellow ray (+ extract) hippy
  1252.     if(available_amount($item[filthy knitted dread sack]) < 1){
  1253.         heal_threshold(100, true);
  1254.         use_familiar($familiar[space jellyfish]);
  1255.        
  1256.         restore_mp(150);
  1257.         // TODO: merge into main ccs
  1258.         cli_execute("ccs cs_hippy");
  1259.         adv1($location[hippy camp], -1, "");
  1260.         check_calc_universe();
  1261.         cli_execute("ccs abort");
  1262.     }
  1263. }
  1264.  
  1265. void exec_step4(){
  1266.     string page;
  1267.    
  1268.     // Make sure we've seen the exposition page
  1269.     visit_url("council.php");
  1270.    
  1271.     // Coil wire, equip lov epaulettes, use reward
  1272.     if(have_quest("Coil Wire")){
  1273.         if(my_inebriety() == 0){
  1274.             // Cast Ode
  1275.             get_buff($effect[Ode to Booze], $skill[The Ode to Booze]);
  1276.            
  1277.             // Drink 1 hacked gibson
  1278.             cli_execute("drink 1 hacked gibson");
  1279.         }
  1280.        
  1281.         // Do quest
  1282.         cli_execute("cast * candy heart");
  1283.         visit_url("council.php");
  1284.         visit_url("choice.php?pwd=&whichchoice=1089&option=11");
  1285.        
  1286.         // Use reward
  1287.         if(item_amount($item[a ten-percent bonus]) > 0){
  1288.             equip($item[LOV epaulettes]);
  1289.             use(1, $item[a ten-percent bonus]);
  1290.         }
  1291.     }
  1292.    
  1293.     // Cast once/day things
  1294.     get_once_day();
  1295.    
  1296.     // Make sure that mafia is aware that turns have passed
  1297.     refresh_status();
  1298.    
  1299.     // Use hobo monkey, buff meat, fight 2 embezzlers
  1300.     //print("Digitize monster in "+get_counter_from_now("Digitize Monster"));
  1301.     //print("Romantic monster in "+get_counter_from_now("Romantic Monster window end"));
  1302.     while(get_counter_from_now("Digitize Monster") <= 0 && my_meat() <= 9000){
  1303.         fight_embezzler();
  1304.     }
  1305.     while(get_counter_from_now("Romantic Monster window end") <= 0 && my_meat() <= 13000){
  1306.         fight_embezzler();
  1307.     }
  1308.    
  1309.     // Get tot ninja outfit
  1310.     get_ninja();
  1311.    
  1312.     // Missile a frat boy for gin bottle + flask hops + deodorant
  1313.     while(!get_property("_missileLauncherUsed").to_boolean()){
  1314.         buff_coms();
  1315.         heal();
  1316.         fuel_asdon(100);
  1317.         cli_execute("ccs abort");
  1318.         adv1($location[Frat house], -1, cs_all_macro);
  1319.     }
  1320.    
  1321.     // Food
  1322.     if(my_fullness() < 15){
  1323.         // Genie milk
  1324.         if(have_effect($effect[Got Milk]) < 1){
  1325.             cli_execute("genie effect Got Milk");
  1326.         }
  1327.        
  1328.         // Eat 1 browser cookie, re-eat with spinner
  1329.         if(!contains_text(get_property("_timeSpinnerFoodAvailable").to_string(), "9035")){
  1330.             cli_execute("eat 1 browser cookie");
  1331.         }
  1332.        
  1333.         while(contains_text(get_property("_timeSpinnerFoodAvailable").to_string(), "9035") && my_fullness() < 13 && get_property("_timeSpinnerMinutesUsed").to_int() <= 7){
  1334.             cli_execute("timespinner eat browser cookie");
  1335.         }
  1336.        
  1337.         // Eat 1 ice rice
  1338.         if(item_amount($item[ice rice]) > 0 && my_fullness() < 14){
  1339.             eat(1, $item[ice rice]);
  1340.         }
  1341.        
  1342.         // Eat 1 optimal dog
  1343.         if(!get_property("_fancyHotDogEaten").to_boolean() && my_fullness() < 15){
  1344.             cli_execute("eat 1 optimal dog");
  1345.         }
  1346.     }
  1347.    
  1348.     // Adventure in limerick dungeon for SR
  1349.     if(item_amount($item[cyclops eyedrops]) < 1 && get_counter_from_now("Fortune Cookie") == 0){
  1350.         adv1($location[The limerick dungeon], 0, "");
  1351.     }
  1352.    
  1353.     // Shape meteorbs into shoes + shield
  1354.     if(available_amount($item[metal meteoroid]) > 0 && available_amount($item[meteorite guard]) < 1){
  1355.         set_property("choiceAdventure1264", 2);
  1356.         use(1, $item[metal meteoroid]);
  1357.         //run_choice(2);
  1358.     }
  1359.     if(available_amount($item[metal meteoroid]) > 0 && available_amount($item[meteorthopedic shoes]) < 1){
  1360.         set_property("choiceAdventure1264", 5);
  1361.         use(1, $item[metal meteoroid]);
  1362.         //run_choice(5);
  1363.     }
  1364.    
  1365.     // Make time halo
  1366.     if(get_property("tomeSummons").to_int() < 3 && available_amount($item[time halo]) < 1){
  1367.         cli_execute("make time halo");
  1368.     }
  1369.            
  1370.     // Breed border collies
  1371.     if(have_quest("Breed More Collies")){
  1372.         // Buff
  1373.         buff_weight();
  1374.         cli_execute("maximize familiar weight");
  1375.        
  1376.         // Do quest
  1377.         cli_execute("cast * candy heart");
  1378.         visit_url("council.php");
  1379.         visit_url("choice.php?pwd=&whichchoice=1089&option=5");
  1380.     }
  1381.    
  1382.     // Be a living statue
  1383.     if(have_quest("Be a Living Statue") && !have_quest("Coil Wire")){
  1384.         // Buff
  1385.         buff_noncom_quest();
  1386.         cli_execute("maximize -combat");
  1387.        
  1388.         // Do quest
  1389.         visit_url("council.php");
  1390.         visit_url("choice.php?pwd=&whichchoice=1089&option=8");
  1391.     }
  1392.    
  1393.     do_ghost();
  1394.    
  1395.     // Clean Steam Tunnels
  1396.     if(have_quest("Clean Steam Tunnels") && !have_quest("Be a Living Statue")){
  1397.         cli_execute("cast * candy heart");
  1398.        
  1399.         // Buff
  1400.         buff_hot_res();
  1401.        
  1402.         // Tot costume
  1403.         use_familiar($familiar[trick-or-treating tot]);
  1404.         if(available_amount($item[li'l candy corn costume]) < 1){
  1405.             buy(1, $item[li'l candy corn costume]);
  1406.         }
  1407.        
  1408.         cli_execute("maximize hot res");
  1409.        
  1410.         // Do quest
  1411.         visit_url("council.php");
  1412.         visit_url("choice.php?pwd=&whichchoice=1089&option=10");
  1413.     }
  1414.    
  1415.     // Drink to have enough adventures
  1416.     if(available_amount($item[perfect ice cube]) > 0 && available_amount($item[bottle of gin]) > 0 && my_inebriety() <= 11){
  1417.         get_buff($effect[Ode to Booze], $skill[The Ode to Booze]);
  1418.         cli_execute("drink 1 perfect negroni");
  1419.     }
  1420.     if(available_amount($item[perfect ice cube]) > 0 && available_amount($item[bottle of vodka]) > 0 && my_inebriety() <= 11){
  1421.         get_buff($effect[Ode to Booze], $skill[The Ode to Booze]);
  1422.         cli_execute("drink 1 perfect cosmopolitan");
  1423.     }
  1424.     if(available_amount($item[meadeorite]) > 0 && my_inebriety() < 14){
  1425.         get_buff($effect[Ode to Booze], $skill[The Ode to Booze]);
  1426.         drink(1, $item[meadeorite]);
  1427.     }
  1428.     while(available_amount($item[astral pilsner]) > 0 && my_inebriety() < 14){
  1429.         get_buff($effect[Ode to Booze], $skill[The Ode to Booze]);
  1430.         drink(1, $item[astral pilsner]);
  1431.     }
  1432.    
  1433.     // Reduce Gazelle Population
  1434.     if(have_quest("Reduce Gazelle Population") && !have_quest("Clean Steam Tunnels")){
  1435.         // Buff
  1436.         buff_melee_dmg();
  1437.         cli_execute("maximize weapon dmg");
  1438.        
  1439.         // Do quest
  1440.         cli_execute("cast * candy heart");
  1441.         visit_url("council.php");
  1442.         visit_url("choice.php?pwd=&whichchoice=1089&option=6");
  1443.     }
  1444.    
  1445.     // Make Margaritas
  1446.     if(have_quest("Make Margaritas") && !have_quest("Reduce Gazelle Population")){
  1447.         // Buff
  1448.         buff_items_and_booze();
  1449.         use_familiar($familiar[trick-or-treating tot]);
  1450.         cli_execute("maximize item drop, booze drop -weapon");
  1451.         // Work around for garbage thing
  1452.         equip_garbage_item($item[wad of used tape]);
  1453.        
  1454.         // Try to get kgb buff => shouldn't be needed anymore
  1455.         //cli_execute("briefcase e spell hot adventures");
  1456.         //kgb_buff($effect[Items Are Forever]);
  1457.        
  1458.         // Do quest
  1459.         visit_url("council.php");
  1460.         visit_url("choice.php?pwd=&whichchoice=1089&option=9");
  1461.     }
  1462.    
  1463.     // Open guild and woods
  1464.     if(get_property("questG07Myst").to_string() != "finished"){
  1465.         // Talk to guild master
  1466.         visit_url("guild.php?place=challenge");
  1467.        
  1468.         // Adventure in the pantry until we exorcize the sandwich
  1469.         while(get_property("questG07Myst").to_string() == "started" && !contains_text(page, "sudo exorcise me a sandwich")){
  1470.             // Buff +combat
  1471.             if(have_effect($effect[Polka of plenty]) > 0){
  1472.                 cli_execute("shrug polka of plenty");
  1473.             }
  1474.             if(have_effect($effect[Fat Leon's Phat Loot Lyric]) > 0){
  1475.                 cli_execute("shrug Fat Leon's Phat Loot Lyric");
  1476.             }
  1477.             get_buff($effect[Musk of the Moose], $skill[Musk of the Moose]);
  1478.             get_buff($effect[Carlweather's Cantata of Confrontation], $skill[Carlweather's Cantata of Confrontation]);
  1479.             get_buff($effect[Leash of linguini], $skill[Leash of linguini]);
  1480.             get_buff($effect[Empathy], $skill[Empathy of the Newt]);
  1481.             get_buff($effect[Ur-Kel's Aria of Annoyance], $skill[Ur-Kel's Aria of Annoyance]);
  1482.            
  1483.             if(have_equipped($item[fish hatchet])){
  1484.                 equip($slot[weapon], $item[none]);
  1485.             }
  1486.             if(have_equipped($item[pantogram pants])){
  1487.                 equip($slot[pants], $item[old sweatpants]);
  1488.             }
  1489.             equip($slot[acc2], $item[Kremlin's Greatest Briefcase]);
  1490.            
  1491.             // Use stomping boots
  1492.             use_familiar($familiar[pair of stomping boots]);
  1493.            
  1494.             // Free runs in pantry until sandwich (this should only use 2, since we've sent 3 embezzlers there)
  1495.             heal_threshold(140, true);
  1496.            
  1497.             cli_execute("/aa runaway");
  1498.             cli_execute("ccs abort");
  1499.            
  1500.             page = visit_url("adventure.php?snarfblat=113");
  1501.             run_choice(-1);
  1502.             check_calc_universe();
  1503.         }
  1504.        
  1505.         // Exorcize the sandwich
  1506.         if(contains_text(page, "sudo exorcise me a sandwich")){
  1507.             run_choice(-1);
  1508.             if(have_effect($effect[Carlweather's Cantata of Confrontation]) > 0){
  1509.                 cli_execute("shrug Carlweather's Cantata of Confrontation");
  1510.             }
  1511.         }
  1512.        
  1513.         // Complete quest
  1514.         if(get_property("questG07Myst").to_string() == "step1"){
  1515.             visit_url("guild.php?place=challenge");
  1516.         }
  1517.        
  1518.         cli_execute("/aa none");
  1519.         cli_execute("ccs default");
  1520.     }
  1521.    
  1522.     // Make meatcar, open woods
  1523.     if(get_property("questG07Myst").to_string() == "finished"){
  1524.         if(get_property("questG01Meatcar").to_string() != "finished"){
  1525.             if(get_property("questG01Meatcar").to_string() == "unstarted"){
  1526.                 visit_url("guild.php?place=paco");
  1527.             }
  1528.                        
  1529.             if(get_property("questG01Meatcar").to_string() == "started" && available_amount($item[bitchin' meatcar]) > 0){
  1530.                 visit_url("guild.php?place=paco");
  1531.             }
  1532.         }
  1533.        
  1534.         if(get_property("questG02Whitecastle").to_string() == "unstarted"){
  1535.             visit_url("guild.php?place=paco");
  1536.             run_choice(-1);
  1537.             cli_execute("/go woods");
  1538.         }
  1539.     }
  1540.        
  1541.     // Overdrink
  1542.     if(my_inebriety() == inebriety_limit() && !have_quest("Reduce Gazelle Population")){
  1543.         if(have_effect($effect[Ode to booze]) < 4){
  1544.             use_skill(1, $skill[The ode to booze]);
  1545.         }
  1546.         cli_execute("drink 1 hacked gibson");
  1547.     }
  1548.    
  1549.     if(my_inebriety() > inebriety_limit()){
  1550.         // Buff myst
  1551.         buff_myst();
  1552.         cli_execute("briefcase e spell hot adventures");
  1553.         kgb_buff($effect[Thunderspell]);
  1554.         while(get_property("_kgbClicksUsed").to_int() < 22){
  1555.             cli_execute("briefcase identify");
  1556.         }
  1557.        
  1558.         // Fight tentacle while myst-buffed
  1559.         restore_mp(120);
  1560.         do_tentacle();
  1561.        
  1562.         // Equip adv gear
  1563.         use_familiar($familiar[trick-or-treating tot]);
  1564.         if(available_amount($item[li'l unicorn costume]) < 1){
  1565.             buy(1, $item[li'l unicorn costume]);
  1566.         }
  1567.         cli_execute("maximize adv");
  1568.        
  1569.         // Hatter buff
  1570.         visit_url("clan_viplounge.php?action=lookingglass&whichfloor=2");
  1571.         if(!get_property("_madTeaParty").to_boolean()){
  1572.             if(available_amount($item[coconut shell]) > 0){
  1573.                 cli_execute("hatter coconut shell");
  1574.             } else if(available_amount($item[ravioli hat]) > 0){
  1575.                 cli_execute("hatter ravioli hat");
  1576.             }
  1577.         }
  1578.     }
  1579.  
  1580.     // FarFuture.ash
  1581.     if(!get_property("_timeSpinnerReplicatorUsed").to_boolean()){
  1582.         cli_execute("FarFuture.ash mall");
  1583.     }
  1584. }
  1585.  
  1586. void exec_day2_step1(){
  1587.     common_step1();
  1588.    
  1589.     // Get crazy horse
  1590.     if(get_property("_horsery") == ""){
  1591.         visit_url("place.php?whichplace=town_right&action=town_horsery");
  1592.         visit_url("choice.php?pwd=&whichchoice=1266&option=3", true);
  1593.     }
  1594.    
  1595.     // Buffs
  1596.     get_buff($effect[Leash of linguini], $skill[Leash of linguini]);
  1597.     get_buff($effect[Empathy], $skill[Empathy of the Newt]);
  1598.     get_buff($effect[Ur-Kel's Aria of Annoyance], $skill[Ur-Kel's Aria of Annoyance]);
  1599.     get_buff($effect[Drescher's Annoying Noise], $skill[Drescher's Annoying Noise]);
  1600.     if(have_effect($effect[Driving Recklessly]) < 1){
  1601.         fuel_asdon(37);
  1602.         cli_execute("asdonmartin drive Recklessly");
  1603.     }
  1604.    
  1605.     // Calc universe?
  1606.     check_calc_universe();
  1607.    
  1608.     // Tome?
  1609.     if(get_property("tomeSummons").to_int() == 0){
  1610.         cli_execute("cast 2 sugar sheets");
  1611.     }
  1612. }
  1613.  
  1614. void exec_day2_step2(){
  1615.     int i;
  1616.    
  1617.     // Drink 1 falcon maltese
  1618.     if(my_inebriety() == 0 && have_effect($effect[Too Noir For Snoir]) < 1){
  1619.         if(have_effect($effect[Fat Leon's Phat Loot Lyric]) > 0){
  1620.             cli_execute("shrug Fat Leon's Phat Loot Lyric");
  1621.         }
  1622.        
  1623.         get_buff($effect[Ode to Booze], $skill[The Ode to Booze]);
  1624.         cli_execute("drink 1 falcon maltese liquor");
  1625.     }
  1626.    
  1627.     if(numeric_modifier("monster level") >= 150){
  1628.         cli_execute("mcd 1");
  1629.     }
  1630.    
  1631.     use_familiar($familiar[baby sandworm]);
  1632.  
  1633.     // Summon some candy hearts
  1634.     while(get_property("libramSummons").to_int() < 5){
  1635.         cli_execute("cast 1 candy heart");
  1636.     }
  1637.    
  1638.     // Get cornucopia
  1639.     visit_url("campground.php");
  1640.     visit_url("campground.php?action=garden&pwd=");
  1641.    
  1642.     // Fax sk8 gnome
  1643.     if(!get_property("_photocopyUsed").to_boolean()){
  1644.         // Sk8 gnome (try a few times, abort if no response)
  1645.         i = 0;
  1646.         while(item_amount($item[photocopied monster]) < 1 && i < 3){
  1647.             i++;
  1648.             cli_execute("faxbot sk8 gnome");
  1649.         }
  1650.        
  1651.         if(item_amount($item[photocopied monster]) > 0){
  1652.             // cli_execute("/aa cs_all");
  1653.             cli_execute("ccs abort");
  1654.            
  1655.             // Get enough MP for shatterpunch
  1656.             while(my_mp() < 80){
  1657.                 if(item_amount($item[psychokinetic energy blob]) > 0){
  1658.                     use(1, $item[psychokinetic energy blob]);
  1659.                 } else {
  1660.                     cli_execute("/mmj 1");
  1661.                 }
  1662.             }
  1663.            
  1664.             // Fight sk8 gnome: shatterpunch
  1665.             heal();
  1666.            
  1667.             visit_url("inv_use.php?pwd=&which=3&whichitem=4873");
  1668.             run_combat(cs_all_macro);
  1669.            
  1670.             cli_execute("/aa none");
  1671.             cli_execute("ccs default");
  1672.         } else {
  1673.             abort("Faxbot is broken :(");
  1674.         }
  1675.     }
  1676.    
  1677.     // LOV tunnel
  1678.     if(!get_property("_loveTunnelUsed").to_boolean()){
  1679.         buff_myst();
  1680.         do_lov();
  1681.     }
  1682.    
  1683.     // Cast all 1/day things
  1684.     get_once_day();
  1685.    
  1686.     // Libram summons with lov mp
  1687.     while(get_property("libramSummons").to_int() < 21){
  1688.         cli_execute("cast 1 bricko");
  1689.     }
  1690.     //while(get_property("libramSummons").to_int() < 15){
  1691.         //cli_execute("cast 1 candy heart");
  1692.     //}
  1693.    
  1694.     // Switch to hipster if fights left; or not, doesn't seem to work at the snojo
  1695.     //use_hipster();
  1696.    
  1697.     // Trap ghost
  1698.     do_ghost();
  1699.    
  1700.     // Equip lov epaulettes
  1701.     equip($item[LOV Epaulettes]);
  1702.    
  1703.     // Snojo fights
  1704.     do_snojo();
  1705.    
  1706.     // Bricko fights
  1707.     do_brickos();
  1708.    
  1709.     // Fight tentacle
  1710.     do_tentacle();
  1711. }
  1712.  
  1713. void exec_day2_step3(){
  1714.     // Donate blood (HP)
  1715.     if(have_quest("Donate Blood")){
  1716.         // Buff HP
  1717.         buff_hp();
  1718.        
  1719.         // The quest should take 1 turn at above > 2500 HP, which should be easy to get
  1720.         if(my_maxhp() < 2500){
  1721.             abort("Max HP is too low!");
  1722.         }
  1723.        
  1724.         // Do quest
  1725.         visit_url("council.php");
  1726.         visit_url("choice.php?pwd=&whichchoice=1089&option=1");
  1727.         check_calc_universe();
  1728.     }
  1729.    
  1730.     // Build Playground Mazes (myst)
  1731.     if(have_quest("Build Playground Mazes") && !have_quest("Donate Blood")){
  1732.         // Buff myst
  1733.         buff_myst();
  1734.        
  1735.         // Try to get kgb buff
  1736.         kgb_buff($effect[Thunderspell]);
  1737.        
  1738.         // Equip myst gear
  1739.         cli_execute("maximize myst");
  1740.         // Work around for garbage hat, don't know if there's a better way to do this
  1741.         equip_garbage_item($item[wad of used tape]);
  1742.                
  1743.         // Do quest
  1744.         cli_execute("cast * candy heart");
  1745.         visit_url("council.php");
  1746.         visit_url("choice.php?pwd=&whichchoice=1089&option=3");
  1747.         check_calc_universe();
  1748.     }
  1749.    
  1750.     // Feed Conspirators (moxie)
  1751.     if(have_quest("Feed Conspirators") && !have_quest("Build Playground Mazes")){
  1752.         // Buff moxie
  1753.         buff_moxie();
  1754.        
  1755.         // Try to get kgb buff
  1756.         kgb_buff($effect[Goldentongue]);
  1757.        
  1758.         // Equip moxie gear
  1759.         cli_execute("maximize moxie");
  1760.         // Work around for garbage hat, don't know if there's a better way to do this
  1761.         equip_garbage_item($item[wad of used tape]);
  1762.        
  1763.         // Do quest
  1764.         cli_execute("cast * candy heart");
  1765.         visit_url("council.php");
  1766.         visit_url("choice.php?pwd=&whichchoice=1089&option=4");
  1767.         check_calc_universe();
  1768.     }
  1769.    
  1770.     // Feed The Children (muscle)
  1771.     if(have_quest("Feed The Children") && !have_quest("Feed Conspirators")){
  1772.         // Buff muscle
  1773.         buff_muscle();
  1774.        
  1775.         // Try to get kgb buff
  1776.         kgb_buff($effect[License to Punch]);
  1777.        
  1778.         // Equip muscle gear
  1779.         cli_execute("maximize muscle");
  1780.         // Work around for garbage hat, don't know if there's a better way to do this
  1781.         equip_garbage_item($item[wad of used tape]);
  1782.        
  1783.         // Do quest
  1784.         visit_url("council.php");
  1785.         visit_url("choice.php?pwd=&whichchoice=1089&option=2");
  1786.         check_calc_universe();
  1787.     }
  1788.    
  1789.     // Make Sausage
  1790.     if(have_quest("Make Sausage") && !have_quest("Feed The Children")){
  1791.         // Buff spell damage
  1792.         buff_spell();
  1793.        
  1794.         // Equip spell dmg gear
  1795.         // Get 1 obsidian nutcracker, to save 1 turn
  1796.         if(available_amount($item[obsidian nutcracker]) < 1){
  1797.             buy(1, $item[obsidian nutcracker]);
  1798.         }
  1799.         cli_execute("maximize spell dmg");
  1800.        
  1801.         // Chew some agua de vida
  1802.         while(my_adventures() < 53){
  1803.             if(item_amount($item[agua de vida]) > 0){
  1804.                 chew(1, $item[agua de vida]);
  1805.             }
  1806.         }
  1807.        
  1808.         // Do quest
  1809.         visit_url("council.php");
  1810.         visit_url("choice.php?pwd=&whichchoice=1089&option=7");
  1811.         check_calc_universe();
  1812.     }
  1813. }
  1814.  
  1815. int get_free_drunk(){
  1816.     if(available_amount($item[[7302]Spookyraven library key]) < 1){
  1817.         return 10 -  my_inebriety();
  1818.     } else {
  1819.         return inebriety_limit() - my_inebriety();
  1820.     }
  1821. }
  1822.  
  1823. void eat_drink(){
  1824.     int drink_limit;
  1825.    
  1826.     // Spleen 1 (agua de vida)
  1827.     fillup_with($item[agua de vida], spleen_limit() - my_spleen_use(), 4, "chew", 10000, $item[none], 0);
  1828.        
  1829.     // Food (sliders or lasagna or ??? + alien sandwich + bag of qwop)
  1830.    
  1831.     // Use milk when needed
  1832.     if(have_effect($effect[Got Milk]) < fullness_limit() - my_fullness()){
  1833.         if(!buy_and_use($item[milk of magnesium], 1, 3000)){
  1834.             abort("No Milk!");
  1835.         }
  1836.     }
  1837.    
  1838.     if(my_level() >= 13){
  1839.         elem_res_gear("hot");
  1840.         use_skill($skill[Reptilian Fortitude]);
  1841.         use_skill($skill[The power ballad of the arrowsmith]);
  1842.         use_skill($skill[Holiday weight gain]);
  1843.         fillup_with($item[extra-greasy slider], fullness_limit() - my_fullness(), 5, "eat", 35000, $item[Ol' Scratch's salad fork], 25000);
  1844.     } else {
  1845.         if(now_to_string("EEE") == "lun"){
  1846.             // Eating on a monday: popular tarts and bag of qwop
  1847.             fillup_with($item[popular tart], fullness_limit() - my_fullness(), 2, "eat", 1500, $item[none], 0);
  1848.             fillup_with($item[bag of qwop], fullness_limit() - my_fullness(), 1, "eat", 1500, $item[none], 0);
  1849.         } else {
  1850.             // Eating on other days: lasagna!
  1851.             if(fullness_limit() - my_fullness() >= 9){
  1852.                 buy_and_use($item[potion of the field gar], 1, 10000);
  1853.             }
  1854.             fillup_with($item[fishy fish lasagna], fullness_limit() - my_fullness(), 3, "eat", 7000, $item[none], 0);
  1855.         }
  1856.     }
  1857.    
  1858.     fillup_with($item[alien sandwich], fullness_limit() - my_fullness(), 2, "eat", 1500, $item[none], 0);
  1859.     fillup_with($item[bag of qwop], fullness_limit() - my_fullness(), 2, "eat", 1500, $item[none], 0);
  1860.    
  1861.     // Spleen 2 (agua de vida)
  1862.     fillup_with($item[agua de vida], spleen_limit() - my_spleen_use(), 4, "chew", 10000, $item[none], 0);
  1863.    
  1864.     // Cast Ode if needed
  1865.     while(have_effect($effect[Ode to booze]) < get_free_drunk()){
  1866.         use_skill($skill[The Ode to booze]);
  1867.     }
  1868.    
  1869.     // Drink (astral pilsners + perfect drinks + elemental caipiroskas)
  1870.     // If library isn't unlocked, only drink up to 10
  1871.     fillup_with($item[astral pilsner], get_free_drunk(), 1, "drink", 0, $item[none], 0);
  1872.     // Shotglass
  1873.     if(!get_property("_mimeArmyShotglassUsed").to_boolean()){
  1874.         have_or_buy($item[elemental caipiroska], 1, 1600);
  1875.         drink(1, $item[elemental caipiroska]);
  1876.     }
  1877.     fillup_with($item[perfect negroni], get_free_drunk(), 3, "drink", 4000, $item[none], 0);
  1878.     fillup_with($item[elemental caipiroska], get_free_drunk(), 1, "drink", 1600, $item[none], 0);
  1879.        
  1880.     // Spleen 3 (agua de vida + octolus oculus)
  1881.     fillup_with($item[agua de vida], spleen_limit() - my_spleen_use(), 4, "chew", 10000, $item[none], 0);
  1882.     fillup_with($item[octolus oculus], spleen_limit() - my_spleen_use(), 1, "chew", 3000, $item[none], 0);
  1883.    
  1884.     // Use borrowed time?
  1885.     if(use_borrowed && !get_property("_borrowedTimeUsed").to_boolean()){
  1886.         buy_and_use($item[borrowed time], 1, 7500);
  1887.     }
  1888. }
  1889.  
  1890. void buff_noncoms(){
  1891.     maximize_stash("-combat", false);
  1892.    
  1893.     if(have_effect($effect[Carlweather's cantata of confrontation]) > 0){
  1894.         cli_execute("shrug Carlweather's cantata of confrontation");
  1895.     }
  1896.     if(have_effect($effect[smooth movements]) < 1){
  1897.         use_skill(1, $skill[smooth movement]);
  1898.     }
  1899.     if(have_effect($effect[the sonata of sneakiness]) < 1){
  1900.         use_skill(1, $skill[the sonata of sneakiness]);
  1901.     }
  1902.     if(have_effect($effect[Fresh Scent]) < 1){
  1903.         buy_and_use($item[chunk of rock salt], 1, 2000);
  1904.     }
  1905. }
  1906.  
  1907. // Re-uses some code from http://kolmafia.us/showthread.php?10001-Tracking-Bugbears-a-Zapruder-Quest-Felonia-script
  1908. // Credit to Weatherboy
  1909. void do_zapruder(){
  1910.     string zap_url = "place.php?whichplace=knoll_friendly&action=dk_mayor";
  1911.     string status;
  1912.    
  1913.     void give_pitchfork(){
  1914.         have_or_buy($item[annoying pitchfork], 1, 500);
  1915.         visit_url(zap_url);
  1916.     }
  1917.    
  1918.     void give_mushroom(){
  1919.         // Just get 1 of each mushrooms, that'll work
  1920.         have_or_buy($item[flaming mushroom], 1, 1000);
  1921.         have_or_buy($item[frozen mushroom], 1, 1000);
  1922.         have_or_buy($item[stinky mushroom], 1, 1000);
  1923.         visit_url(zap_url);
  1924.     }
  1925.    
  1926.     void kill_felonia(){       
  1927.         have_or_buy($item[Small leather glove], 1, 1000);
  1928.         use_familiar($familiar[Frozen Gravy Fairy]);
  1929.         set_property("choiceAdventure5", 2);
  1930.         buff_noncoms();
  1931.        
  1932.         // Get GAP for free runs
  1933.         if(get_property("_navelRunaways").to_int() < 9){
  1934.             cli_execute("/whitelist Hardcore oxygenation");
  1935.             if(take_stash(1, $item[greatest american pants]) || available_amount($item[greatest american pants]) > 0){
  1936.                 equip($item[greatest american pants]);
  1937.             }
  1938.         }
  1939.         equip($slot[acc2], $item[Kremlin's Greatest Briefcase]);
  1940.        
  1941.         // Do this until we have killed Felonia
  1942.         while(get_property("questM03Bugbear") == "step2"){
  1943.             // Make and equip spooky glove whenever we need it
  1944.             if(available_amount($item[spooky glove]) < 1 && available_amount($item[spooky fairy gravy]) > 0 && available_amount($item[inexplicably glowing rock]) > 0){
  1945.                 cli_execute("make spooky glove");
  1946.                 equip($slot[acc1], $item[spooky glove]);
  1947.                 set_property("choiceAdventure5", 1);
  1948.             }
  1949.            
  1950.             //if(get_property("_navelRunaways").to_int() < 9){
  1951.             //  cli_execute("/aa runaway");
  1952.             //  cli_execute("ccs abort");
  1953.             //} else {
  1954.             //  cli_execute("/aa none");
  1955.             //  cli_execute("ccs default");
  1956.             //}
  1957.            
  1958.             restore_mp(50);
  1959.             adv1($location[The Spooky Gravy Burrow], -1, cs_all_macro);
  1960.            
  1961.             //visit_url("adventure.php?snarfblat=48");
  1962.             //run_turn();
  1963.                        
  1964.             visit_url("questlog.php?which=1");
  1965.         }
  1966.        
  1967.         // Put GAP back in stash
  1968.         if(available_amount($item[greatest american pants]) > 0){
  1969.             if(have_equipped($item[greatest american pants])){
  1970.                 equip($slot[pants], $item[none]);
  1971.             }
  1972.             cli_execute("/whitelist Hardcore oxygenation");
  1973.             put_stash(1, $item[greatest american pants]);
  1974.         }
  1975.         cli_execute("/whitelist not dead yet");
  1976.         cli_execute("/aa none");
  1977.         cli_execute("ccs default");
  1978.     }
  1979.    
  1980.     repeat {
  1981.         status = get_property("questM03Bugbear");
  1982.         switch(status) {
  1983.             case "unstarted"    : visit_url(zap_url); break;
  1984.             case "started"      : give_pitchfork(); break;
  1985.             case "step1"        : give_mushroom(); break;
  1986.             case "step2"        : kill_felonia(); break;   
  1987.             case "step3"        : visit_url(zap_url); break;
  1988.             case "finished"     : print("Felonia quest finished"); break;
  1989.         }
  1990.     } until (status == "finished");
  1991.     cli_execute("/aa none");
  1992.     cli_execute("ccs default");
  1993. }
  1994.  
  1995. void do_jelly(){
  1996.     while(get_property("_spaceJellyfishDrops").to_int() < 5){
  1997.         cli_execute("/aa auto_jelly");
  1998.         cli_execute("ccs abort");
  1999.        
  2000.         use_familiar($familiar[space jellyfish]);
  2001.         buff_coms();
  2002.         visit_url("adventure.php?snarfblat=26");
  2003.     }
  2004.        
  2005.     cli_execute("/aa none");
  2006.     cli_execute("ccs default");
  2007. }
  2008.  
  2009. void unlock_billiards(){
  2010.     if(available_amount($item[Spookyraven billiards room key]) < 1){
  2011.         maximize_stash("hot res, stench res", false);
  2012.         cli_execute("/aa cs_aftercore");
  2013.         cli_execute("ccs abort");
  2014.        
  2015.         use_familiar($familiar[robortender]);
  2016.         equip($item[toggle switch (Bounce)]);
  2017.     }
  2018.    
  2019.     while(available_amount($item[Spookyraven billiards room key]) < 1){
  2020.         adv1($location[the haunted kitchen], -1, "");
  2021.     }
  2022.    
  2023.     cli_execute("/aa none");
  2024.     cli_execute("ccs default");
  2025. }
  2026.  
  2027. void unlock_library(){
  2028.     boolean drink = true;
  2029.     if(available_amount($item[[7302]Spookyraven library key]) < 1){
  2030.         cli_execute("/aa cs_aftercore");
  2031.         cli_execute("ccs abort");
  2032.         use_familiar($familiar[robortender]);
  2033.         equip($item[toggle switch (Bounce)]);
  2034.         set_property("choiceAdventure875", 1);
  2035.        
  2036.         // Equip pool cue
  2037.         equip($item[pool cue]);
  2038.     }
  2039.    
  2040.     while(available_amount($item[[7302]Spookyraven library key]) < 1){
  2041.         buff_noncoms();
  2042.        
  2043.         // Buff pool skill
  2044.         if(have_effect($effect[Chalky Hand]) < 1){
  2045.             buy_and_use($item[handful of hand chalk], 1, 500);
  2046.         }
  2047.         if(have_effect($effect[Influence of Sphere]) < 1){
  2048.             buy_and_use($item[sugar sphere], 1, 3000);
  2049.         }
  2050.        
  2051.         //if(have_effect($effect[Swimming with Sharks]) < 1){
  2052.         //  buy_and_use($item[shark cartilage], 1, 6000);
  2053.         //}
  2054.        
  2055.         adv1($location[the haunted billiards room], -1, "");
  2056.     }
  2057.    
  2058.     if(drink){
  2059.         // Call eatdrink to fill up liver now
  2060.         eat_drink();
  2061.     }
  2062.    
  2063.     cli_execute("/aa none");
  2064.     cli_execute("ccs default");
  2065. }
  2066.  
  2067. void buff_items(){
  2068.     int nb_cast = 0;
  2069.     if(my_adventures() > 0){
  2070.         // Buffbot ==> no good way to automate this without breaking chat commands (?), do it manually beforehand!
  2071.         if(have_effect($effect[Fat Leon's Phat Loot Lyric]) < my_adventures() || have_effect($effect[Empathy]) < my_adventures() ){
  2072.             abort("Get buffs from buffbot first!");
  2073.         }
  2074.        
  2075.         cli_execute("/aa cs_aftercore");
  2076.         cli_execute("ccs abort");
  2077.        
  2078.         // Terminal
  2079.         while(get_property("_sourceTerminalEnhanceUses").to_int() < 3){
  2080.             cli_execute("terminal enhance item");
  2081.         }
  2082.        
  2083.         // Pool
  2084.         while(get_property("_poolGames").to_int() < 3){
  2085.             cli_execute("pool 3");
  2086.         }
  2087.        
  2088.         // Self-buffs
  2089.         nb_cast = nb_cast_req($effect[Leash of Linguini], 10, my_adventures());
  2090.         if(nb_cast > 0) cli_execute("cast "+nb_cast+" leash");
  2091.         nb_cast = nb_cast_req($effect[Singer's Faithful Ocelot], 10, my_adventures());
  2092.         if(nb_cast > 0) cli_execute("cast "+nb_cast+" Singer's Faithful Ocelot");
  2093.        
  2094.         // Familiar
  2095.         // TODO: use boots runaways
  2096.         use_familiar($familiar[trick-or-treating tot]);
  2097.         if(available_amount($item[li'l ninja costume]) < 1){
  2098.             buff_coms();
  2099.             get_ninja();
  2100.         }
  2101.        
  2102.         if(available_amount($item[li'l ninja costume]) > 0){
  2103.             equip($item[li'l ninja costume]);
  2104.         }
  2105.        
  2106.         // Gear
  2107.         cli_execute("/whitelist hardcore oxygenation");
  2108.         refresh_stash();
  2109.         maximize_stash("item drop -weapon", true);
  2110.         take_and_equip($item[bottle-rocket crossbow], 1, $slot[weapon]);
  2111.     }
  2112.    
  2113.     cli_execute("/aa none");
  2114.     cli_execute("ccs default");
  2115. }
  2116.  
  2117. void farm_tattered(){
  2118.     cli_execute("/aa cs_aftercore");
  2119.     cli_execute("ccs abort");
  2120.    
  2121.     // TODO: shatterpunch, jokester
  2122.    
  2123.     while(my_adventures() > 0){
  2124.         // Banish writing desk with rhino
  2125.         if(get_property("_nanorhinoBanishedMonster") == ""){
  2126.             use_familiar($familiar[Nanorhino]);
  2127.         } else {
  2128.             use_familiar($familiar[trick-or-treating tot]);
  2129.         }
  2130.        
  2131.         do_ghost();
  2132.         adv1($location[the haunted library], -1, "");
  2133.     }
  2134.    
  2135.     cli_execute("/aa none");
  2136.     cli_execute("ccs default");
  2137. }
  2138.  
  2139. void do_end(){
  2140.     cli_execute("/whitelist hardcore oxygenation");
  2141.     put_back_stash($item[hypnodisk], 1);
  2142.     put_back_stash($item[Jekyllin hide belt], 3);
  2143.     put_back_stash($item[flaming pink shirt], 1);
  2144.     put_back_stash($item[Grimacite go-go boots], 1);
  2145.     put_back_stash($item[Mr. Accessory Jr.], 3);
  2146.     put_back_stash($item[bottle-rocket crossbow], 1);
  2147.     put_back_stash($item[bag o' tricks], 1);
  2148.     cli_execute("/whitelist not dead yet");
  2149.    
  2150.     // Burn MP
  2151.     cli_execute("cast * bricko");
  2152.    
  2153.     // Make pocket wishes
  2154.     while(get_property("_genieWishesUsed").to_int() < 3){
  2155.         cli_execute("genie.ash wish");
  2156.     }
  2157. }
  2158.  
  2159. void do_pvp(){
  2160.     if(pvp_attacks_left() > 0 && do_pvp){
  2161.         maximize_stash("hot dmg, hot spell dmg", false);
  2162.         cli_execute("pvp fame fahrenheit");
  2163.     }
  2164. }
  2165.  
  2166. void do_spacegate(){
  2167.     if(!get_property("_spacegateToday").to_boolean()){
  2168.         cli_execute("call Spacegate.ash");
  2169.         use_skill(1, $skill[Cannelloni Cocoon]);
  2170.     }
  2171. }
  2172.  
  2173. void exec_after(){
  2174.     // KGB briefcase clicks
  2175.     // Time-spinner minutes
  2176.    
  2177.     // Breakfast
  2178.     have_breakfast();
  2179.    
  2180.     // Time spinner
  2181.     if(!get_property("_timeSpinnerReplicatorUsed").to_boolean() && get_property("_timeSpinnerMinutesUsed").to_int() <= 8){
  2182.         cli_execute("FarFuture.ash mall");
  2183.     }
  2184.    
  2185.     // Consume!
  2186.     eat_drink();
  2187.    
  2188.     // Do zapruder quest
  2189.     do_zapruder();
  2190.    
  2191.     // Get stench jellies
  2192.     do_jelly();
  2193.    
  2194.     // Spacegate research
  2195.     do_spacegate();
  2196.    
  2197.     // Unlock billiards room
  2198.     unlock_billiards();
  2199.    
  2200.     // Unlock library
  2201.     unlock_library();
  2202.    
  2203.     // Buff +items
  2204.     buff_items();
  2205.    
  2206.     // Farm tattered scraps of paper
  2207.     farm_tattered();
  2208.    
  2209.     // Put stuff back in the stash
  2210.     do_end();
  2211.    
  2212.     // Spend pvp fights
  2213.     do_pvp();
  2214.    
  2215.     // Mallsell stuff
  2216.     cli_execute("use_and_mall.cli");
  2217. }
  2218.  
  2219. void check_daycount(int day_ref){
  2220.     if(day_ref != my_daycount()){
  2221.         abort("Cannot execute this when not on day "+day_ref+"!");
  2222.     }
  2223. }
  2224.  
  2225. void main(string args){
  2226.     switch(args){
  2227.         case "step1":
  2228.             check_daycount(1);
  2229.             exec_step1();
  2230.             break;
  2231.         case "step2":
  2232.             check_daycount(1);
  2233.             exec_step2();
  2234.             break;
  2235.         case "step3":
  2236.             check_daycount(1);
  2237.             exec_step3();
  2238.             break;
  2239.         case "step4":
  2240.             check_daycount(1);
  2241.             exec_step4();
  2242.             break;
  2243.         case "day2_step1":
  2244.             check_daycount(2);
  2245.             exec_day2_step1();
  2246.             break;
  2247.         case "day2_step2":
  2248.             check_daycount(2);
  2249.             exec_day2_step2();
  2250.             break;
  2251.         case "day2_step3":
  2252.             check_daycount(2);
  2253.             exec_day2_step3();
  2254.             break;
  2255.         case "aftercore":
  2256.             exec_after();
  2257.             break;
  2258.         default:
  2259.             print("Step not recognized");
  2260.             break;
  2261.     }
  2262. }
RAW Paste Data
Top