Auto 2-day HCCS

Hellno

Member
I made a bunch of changes to the script I downloaded a few weeks ago so that it can manage 2 day runs with what I have available, and since I finally had a run without at least one of my changes crashing on me I figured it's a good time to share.

*Handles puck man (/miss puck man), opens woods, gets/uses pixel star (there is no save state for this part on day 1, so be careful if it crashes there) - mostly stolen from cheesecookie
*Fixed a mood for powerlevelling, and improved equipment/buff/potion uses a little (I was dying a lot so had to make sure all the right stuff was being used)
*Plants stuff in powerlevel zone (+30 ml, cold damage, mp regen)
*saves turns powerlevelled in case there is an abort (so the script can just be restarted)
*haunted dog NCs (use chow on grill, get +%stats day 2, get but don't use stuff from the other NCs)
*many other small things that probably don't matter much but probably do something that I don't remember

I probably left some stupid stuff in there, but since it works I'm not feeling like making any more changes :p
 

Attachments

  • AutoHCCS.ash
    65 KB · Views: 32

Icy elemental

New member
Unlocking the island is also useful for tomatoes (+50% all stats), olives (+100% moxie), and often allows you to get the semi-rare (eyedrops saving 2 turns), over getting the ingredients via the skeleton store. It's generally ideal to unlock the island for that reason, though I have it go to the skeleton store if the SR timing isn't going to work out. The skeleton store is also expected to take under 5 turns with a yellow ray anyway, so I wouldn't put the weiner dog as a priority for the logic. And it already won't adventure for fruit baskets or in the skeleton store if it already has all the ingredients it needs.

Thanks for letting me know of the barrel method though, definitely adding that in.

The method used in the script works absolutely fantastically, but in case you are interested, I think (though may be mistaken) that the top runs don't unlock the island. Certainly in my runs I haven't. There are a number of reasons for this, but namely a) the tomato can also be dropped in the hidden pantry which you adventure in normally to unlock your guild, and b) due to the pressurized potion of pulchritude from the chateau, you can miss out on the serum of sarcasm and still not take any extra turns, as muscle has far fewer buffs. Having said that, this is only in the situation where you're getting all the stat tests down to 1 turn anyway - when you're not any bonus helps. We can work out if the serum of sarcasm is worth the adventures to get it quite easily. Assuming you do get the tomato whilst unlocking the guild, the difference in turns between the island and the skeleton store is, as RNGHeHateMe says, 6 turns. If you then factor in the semi-rare which saves 2 turns, the difference is 4. That means they're equally good when +100% moxie gives +120 moxie, the island is better when it gives greater than +120 moxie, and the skeleton store is better when it gives less than 120 moxie.

Thanks once again for the script, it's saved me a load of time and got me a lot of extra skill perms, I'm really grateful :)
 

RESPRiT

Member
Hey Marluth, out of curiosity, why did you choose to save certain vars in AutoHCCSvars.txt instead of using get_property() and set_property()? As it is, I believe HCCS' settings (minus the ones I implemented in the relay settings) are global as opposed to per user.
 

rocky

New member
i have been trying to use the script and it always manages to fail for me on eiteher day 1 or 2. as far as i know i am missing shrub,dna,a garden and a grill and a bunch of skills.

if it breaks on day 1 i might end up doing one of the day 2 services causing day 2 to break as well i have a sugestion how to handle this a bit more gracefully and also for a day 3 recovery attempt..
Code:
void doRun() { //main function
	if (my_daycount() == 1 && actuallyrun) {
		print("Running HCCS Day 1...");
		if(get_property("knownAscensions").to_int() != statemap["run"]) {
			newSave();
		}
		day1setup();       // need to skip if already done, maybe count saucepanic?
		initialDrinks();    //need to skip if already done, don't cast ode if you don't have the meat for the drink or already have enough of the effect
		getMilk(); //of magnesium

                 if (advCost(COILTEST) != 99999){
                 coilTest();
                }else{
                	saveProgress(4);
                }


		getPirateDNA();
		getCalderaDNA(); //elemental DNA tonic and fish hybrid
		maybeUnlockIsland();    // barrels?
		getG9Serum();
                   if (advCost(WPNTEST) != 99999){
                 	weaponTest();
                }else{
                	saveProgress(9);
                }

                 if (advCost(ITEMTEST) != 99999){
                 itemTest();
                } else{
                	saveProgress(14);
                }

		getPotionIngredients();
		makePotionsDay1();
		endDay1();
		print("Day 1 complete!!", "green");
	} else if (my_daycount() == 2 && actuallyrun) {
		print("Running HCCS Day 2...");
             	saveProgress(1);
                if (  $item[Vicar's Tutu].available_amount()>=1){
                         print("skipping daily summons and such because you probably have done that already!");
                          saveProgress(18);

       }else{
	      	day2setup();
                }
                if (advCost(SPELLTEST) != 99999){
                   	spellTest();
                }else{
                	saveProgress(19);
                }



              if (advCost(HOTTEST) != 99999){
                  	getHotResistGear();
                        hotTest();
                } else{
                	saveProgress(24);
                }


               	makePotionsDay2();      // check for reagents??
	      	powerlevel();  //  maybe choice between CI and dinsey?
              if (advCost(HPTEST) != 99999){
                    hpTest();
                }else{
                	saveProgress(28);
                }

	       //
                if (advCost(MUSTEST ) != 99999){
                    	muscleTest();
                }else{
                	saveProgress(30);
                }


                 if (advCost(MYSTTEST) != 99999){
                  	mystTest();
                }else{
                	saveProgress(31);
                }


                 if (advCost(MOXTEST) != 99999){
                	moxieTest();
                }else{
                	saveProgress(34);
                }

                 if (advCost(FAMTEST) != 99999){
                 	famTest();
                }else{
                	saveProgress(36);
                }


                 if (advCost(COMTEST) != 99999){
                 getDeodorant();
		noncombatTest();
                }else{
                	saveProgress(38);
                }


		print("Run complete!!!", "green");
		newSave();
	} else if (my_daycount() == 3 && actuallyrun) {
		print("Running HCCS Day 3??");
                print("Alright slowpoke let's see if we can recover this... - rOcky");
                // day 1 stuff
                	saveProgress(1);
                        	print("checking for coil test.");
                    if (advCost(COILTEST) != 99999){
                 coilTest();
                }else{
                print("already done skipping!");
                	saveProgress(4);
                }


                  	print("checking for weapon damage test.");
                   if (advCost(WPNTEST) != 99999){
                       	weaponTest();
                }else{
                      print("already done skipping!");
                	saveProgress(9);
                }
                	print("checking for coil test.");
                 if (advCost(ITEMTEST) != 99999){
                 itemTest();
                } else{
                      print("already done skipping!");
                	saveProgress(14);
                }

              	print("checking for spell damage test.");
                if (advCost(SPELLTEST) != 99999){
                   	spellTest();
                }else{
                      print("already done skipping!");
                	saveProgress(19);
                }


               	print("checking for hot test.");
              if (advCost(HOTTEST) != 99999){
                  	getHotResistGear();
                        hotTest();
                } else{
                      print("already done skipping!");
                	saveProgress(24);
                }



	    	print("checking for hp test.");
              if (advCost(HPTEST) != 99999){
                    hpTest();
                }else{
                      print("already done skipping!");
                	saveProgress(28);
                }

	      	print("checking for muscle test.");
                if (advCost(MUSTEST ) != 99999){
                    	muscleTest();
                }else{
                      print("already done skipping!");
                	saveProgress(30);
                }

                 	print("checking for myst test.");
                 if (advCost(MYSTTEST) != 99999){
                  	mystTest();
                }else{
                      print("already done skipping!");
                	saveProgress(31);
                }

                	print("checking for moxie test.");
                 if (advCost(MOXTEST) != 99999){
                	moxieTest();
                }else{
                      print("already done skipping!");
                	saveProgress(34);
                }
                 	print("checking for familiar test.");
                 if (advCost(FAMTEST) != 99999){
                 	famTest();
                }else{
                      print("already done skipping!");
                	saveProgress(36);
                }

                 	print("checking for -combat test.");
                 if (advCost(COMTEST) != 99999){
                 getDeodorant();
		noncombatTest();
                }else{
                      print("already done skipping!");
                	saveProgress(38);
                }


		print("Run complete!!!", "green");
		newSave();
	} else if (!actuallyrun) {
		print("The \"actuallyrun\" variable is set to false. Turn it on.", "red");
	} else {
		print("You're too slow!");
	}
}
 

Hellno

Member
I'm consistently coming up 12-20 adv. short on day 2. So close I can taste it....

Are there a couple of skills I could add that would put me over the top?
http://bumcheekcity.com/kol/profile.php?u=beezkneez

Skills are mostly fine, but you're missing some important stuff for powerlevelling effectively. I'm assuming you're missing relevant iotms if you're missing 2-dayers though, you should use cheesecookies snapshot script since that's the only one up to date with all the latest skills and iotms (http://forums.kingdomofloathing.com/vb/showthread.php?t=218735).

*Ur-kel/pride would help.
*Song of sauce is fairly crucial if you want to do any kind of relevant powerleveling (and also 2 turns saved in spell test).
*You're missing 5 turns in hot res perms.
 

jeff

Member
I get interrupts on day 2 as a result of running out of MP while powerlevelling. If I rest in chateau every time it interrupts, it just won't stop powerlevelling.

I'll be able to perm curse of weaksauce this ascension. Is this the only thing stopping me?
 

alanlke

New member
Thanks, I'll work on adding those! I ran that script: http://cheesellc.com/kol/profile.php?u=beezkneez

Anything else you see?


Skills are mostly fine, but you're missing some important stuff for powerlevelling effectively. I'm assuming you're missing relevant iotms if you're missing 2-dayers though, you should use cheesecookies snapshot script since that's the only one up to date with all the latest skills and iotms (http://forums.kingdomofloathing.com/vb/showthread.php?t=218735).

*Ur-kel/pride would help.
*Song of sauce is fairly crucial if you want to do any kind of relevant powerleveling (and also 2 turns saved in spell test).
*You're missing 5 turns in hot res perms.
 
Under the "HP/MP Usage" sub-tab in the Adventure tab, you likely have "stop if auto-recovery fails" selected, and are for whatever reason failing to recover. I also personally have mine set to stop if auto-recovery fails, but my recovery doesn't fail. Make sure you have Cannelloni Cocoon and allow it to be used.

Oh, well damn. I don't have cocoon so I guess I'm gonna have to wait a couple days to finish this pastamancer CS run. At least I know it's not the script and just me fucking up.

Also here's a snapshot in case that helps at all. (I ran it in-run so I dunno if anything's messed up but it seems okay)
http://cheesellc.com/kol/profile.php?u=yiffmaster420
 

Your.Master

New member
Today the script started failing once it starts going to Uncle Gator's:

Round 0: Your_Master wins initiative!
Round 1: You lose 97 hit points
You don't have enough DNA extraction syringe
You're on your own, partner.


FWIW I don't have a DNA lab, and my only charter is Barf Mountain.

I moved past this by manually changing my state to 255, only to get errors on use(1, $item[jar of "Creole Lady" marrrmalade]); later. I think it's supposed to be useifhave.

While I'm at it, this left me unrecoverable because the marrrmalade one happened.

(Not sure if it's related, but I then ran out of mana constantly for the first time and had to manually pour money into doc galactic and even take a non-free rest, but I finally finished with 1 adventure and 131 meat to spare and *nothing* else after smashing all 4 smithsness gear to make more booze and chew smithereens. This is notable because it's only the second time the script has actually finished in two days for me :), usually it's around a dozen turns short, and on one anomalous occasion 100 turns short).
 
Last edited:

Valliant

Member
I got a new error today: On the second day, after the spell damage task, the script created a golden light, used it on a LavaCo factory overseer (dropping a heat-resistant necktie and a asbestos thermos) and then came to a halt, saying "Yellow ray time, but you still have Everything Looks Yellow.". Trying to restart, the script made another golden light, and then froze with the same message.

Code:
Visit to That 70s Volcano: LavaCo™ Lamp Factory in progress...

[243] LavaCo™ Lamp Factory
Encounter: factory overseer
Strategy: C:\Users\Valliant\Google Drive\BSB\KolMafia\ccs\default.ccs [default]
Round 0: ililili wins initiative!
Round 1: ililili uses the DNA extraction syringe!
Round 2: ililili uses the Golden Light!
You acquire an effect: Everything Looks Yellow (1)
Round 3: ililili wins the fight!
After Battle: A love firefly flits flirtatiously around your head.
After Battle: You gain 5 Magicalness
After Battle: Illustrious Apu's shiny golden eyelid twinkles as he winks at you.
You gain 350 Meat
You acquire an item: heat-resistant necktie
You acquire an item: asbestos thermos
After Battle: Illustrious Apu scratches his head, dislodging some golden dandruff. You sweep it up and take it with you.
You acquire an item: powdered gold
After Battle: Illustrious Apu's stops shrieking for a minute and beams at you. (+6 Stats)
After Battle: You gain 4 Strengthliness
After Battle: You gain 18 Wizardliness
After Battle: You gain 2 Sarcasm
You gain 3 Soulsauce

Yellow ray time, but you still have Everything Looks Yellow.

> call scripts\AutoHCCS.ash

Running HCCS Day 2...
Verifying ingredients for Golden Light (1)...
Purchasing glittery mascara (1 @ 22)...
You spent 22 Meat
You acquire an item: glittery mascara
Purchases complete.
Creating Golden Light (1)...
You acquire an item: Golden Light
Successfully created Golden Light (1)
Putting Illustrious Apu the Golden Monkey back into terrarium...
Taking Mrs. Grill the Galloping Grill out of terrarium...
Yellow ray time, but you still have Everything Looks Yellow.

Edit: Even manually completing the Hot resistance task (the one I was pretty sure was next) didn't fix it. I still get the same error.
 
Last edited:

HotelDon

New member
I'm getting an error saying I don't have the Chateau, and I definitely have it unlocked. Short of modifying the script to skip that check, since i know I have it, I'm not sure how to fix this problem.
 
I had some issues with the script not recognizing that I had a given gene tonic. To fix this I added in a check for the appropriate gene tonic in each sub that check for DNA. If you have the gene tonic, it saves the appropriate progress, and dumps back out to main. I placed it before any moods are set.

For example in the caldera DNA section the code is:

Code:
	if ($item[Gene Tonic: Elemental].available_amount() > 0) {
		saveProgress(60);
		return;
		
	}

Similarly for the pirates:

Code:
	if ($item[Gene Tonic: Pirate].available_amount() > 0) {
		saveProgress(50);
		return;
		
	}

There probably should also be a check to see what is in your syringe, so I added this sub:

Code:
void fillSyringe(string hybridText){
	buffer page = visit_url("campground.php?action=workshed");
	if (contains_text(page, hybridText)) {
		visit_url("campground.php?action=dnapotion");
	}
}

And then put this check in before the check to see if we have the appropriate gene tonic:

Code:
fillSyringe("Human-Pirate Hybrid");

Ideally, I would flesh out that sub so it would return the status of the DNA lab, and allow the script to proceed accordingly (no more DNA today, did get the dna, etc.), but that is what I have got so far.


EDIT: After all that I see that the reason that I am probably stuck in the getCalderaDNA sub is because my doghouse is boarded up. It is trying to get a volcoino. but doesn't realize the ghost dog is unavailable. I will look into adding a check for that. Also I should prolly split out the volciono search from that sub entirely, and limit the turns we search for a volcoino.....
 
Last edited:

RESPRiT

Member
Last night I tried to manually merge the master branch with a fork that croft made that was a bit more optimized. When I tested the script it seemed fine, but obviously there are still some issues. I'll give a stable release URL for everyone to use while I try to fix the problems the merge created. Once I fix the problems I'll have the new release on my fork until Marluth pushes my pull.
 
If it helps, here is what I did to fix the boarded up doghouse problem.

Code:
boolean doghouseAvailable() {
	buffer page = visit_url("campground.php?action=doghouse");
	visit_url("choice.php?pwd&whichchoice=1110&option=6");
	if (contains_text(page, "Spoopy") && contains_text(page, "Board up the doghouse")) {
		print ("Doghouse is available", "green"); 
		return true;
	} else {
		if (contains_text(page, "Spoopy") && contains_text(page, "Pry the boards off the doghouse")) {
			print ("YOUR DOG HOUSE IS BOARDED UP", "red"); 
		}
		return false;
	}
}

I guess we could also just have it auto unboard the doghouse.
 

RESPRiT

Member
If you are having issues currently, please uninstall the script and checkout from my branch using this CLI command:
Code:
svn checkout https://github.com/RESPRiT/Auto-2-day-HCCS/branches/Release/
 

jeff

Member
I've experienced the same issue with the G-9 serum while using Croft's fork, as I don't have access to it
Are either of Malurth or Resprit's current version workable without CI?
 
Last edited:

RESPRiT

Member
Your.Master, Valliant, and RNGHeHateMe's issues should all be fixed now, they are live on my release.

HotelDon, can you run "get_property chateauAvailable" in the CLI? If it doesn't return true, Mafia thinks you don't have the Chateau for some reason.

Jeff, what is the G-9 serum issue? My fork should run fine without CI.
 

LostDreams

New member
Your.Master, Valliant, and RNGHeHateMe's issues should all be fixed now, they are live on my release.

HotelDon, can you run "get_property chateauAvailable" in the CLI? If it doesn't return true, Mafia thinks you don't have the Chateau for some reason.

Jeff, what is the G-9 serum issue? My fork should run fine without CI.

Hi Resprit,

I tried using your version but now all I get is:

Expected ), found { (AutoHCCS.ash, line 613)
 
Top