Pikacuq is tweaking A-Bot :)



with pleasure man, even if for me didn’t work lols.at some point I will do the math in station , is better and cleaner. can you post the exact lines ?



		public bool DronesLost { private set; get; }

		public void SetDronesLost(bool value)		{ DronesLost = value; }

Then I do have tasks which are done while Warping (and my bot will be warping off when drones are lost) so I set this variable during warp to the station:

					var droneWindow = memoryMeasurement?.WindowDroneView?.FirstOrDefault();

					if (null == droneWindow)

and then Undock.cs before mouseclick on undock button:

				if (bot?.DronesLost == true)
					yield break;

If it was not working for you, you probably forgot to call Undock in Bot.cs with bot var?

			yield return new UndockTask { bot = this, MemoryMeasurement = MemoryMeasurementAtTime?.Value };



did you check the value of


inside undock.cs?

if (bot?.DronesLost == true)//false

before you undock first time; and without drones , in your case.
##LATER on edit: it was not that , like a dumb, i forgot an ! somewhere; is working now ##

ALso if you have less than 1 drone you lose your ship in next anomaly (100%). You take into account the only situation when you have 0 drones ( so drones window is null) to come back in station. It could be an advantage when you have errors from reading measurements, but that another situation


I do check window for null yes because its very quick task which is not really using much system resources. I do have in mind version which will care about number of drones, but since i did not lost single drone in like month or so, I dont really see urgent need for it now.

I would like to however do it sooner or later, together with refilling them :slight_smile:

note: i dont like beeping of any kind and on top of it, he runs usually when am not anywhere near my computers :slight_smile:


in my case, when a red coming on grid ( but because of servers shits it didnt show on local) i lost some drones because the urgence is urgence and is better to let it go some drones than an entire ship.

also, sometime I use myrm :slight_smile: and he lose some drones


Ah, and I read you intend to use shields, is simple ,
when you measure the armor repairer you can use enrty IsArmor repairer || IsShield(Booster)

I tested on my script and it seems its working


I know how to recognize shield fit (already doing that), i’ll be working on logic when and how to shield boost in similar way as I do armor repping now. Some people asked for it as nice to have just there is no need for it now, as shields suxx for ratting anyways.

and this is actualy fun to work on, not like that shit with reffiling for drones :slight_smile:


there are many who use shield even for ratting, using a gila is better than vni ( but more expensive)
really really fun is to make an market bot, or why not, the relic one or at least, the DED ( scanning sig + strategies). You have the part for fighting and you said the scanning is easy. So you need only strategies. There you have a lot of fun logic, in my opinion, not 3 sec on anomaly, overall
cheers :))


there is literally no + for anything else than VNI
reffiling rockets for Gila is crap, not to mentioning hull price :wink:

Shield fits will increase your signature significantly so the dmg incomming, there is simple no pros on those
Shield Isthtars have over 240m signature, when Armor ones have 135m

But again, anyone can do what he likes :wink:


@viir apropo: there is another small bug, but that require to recompile more than I’m now willing to do :wink:

if you have module activation shortcut on 1 2 3 instead of F1 F2 F3 that shortcuts will not be recognized and used by sanderling.

Issue I believe is here:

VirtualKeyCode[] ToggleKey { get; }

When reading returns F1 you end up with togglekey which looks like that:


And this is valid expression.
But when you have it 1 or 2 etc. it ends up with


Which is invalid and should be:


and then only mouse clicks are used for toggling modules.
It’s just tiny issue, but it’s there :slight_smile:


is simply, recompile the framework and use the new sanderling.dll … you can use chinese keyboard also 朦朧


I’ve mentioned it so somebody can fix it in main Sanderling repo :wink:


update 10.08.2018

  • drones refilling added (yeah i know right? :slight_smile: ) now as experimental feature being tested, so far looks super neat
  • can be configured via config
    ** name of drones to refill
    ** refill or not
  • when automatic refill is not set as true, He will just dock and wait till you do something when he has lost drones (eg. he have 0 or less than MaxDrones in config)
  • when automatic refill is set as true, He will refill till full drone bay, undock and continue
  • if your hangar is full of stuff, no prob, he will filter items to find your drones :slight_smile: (drones must be in main item hangar, not in container tho)
  • when in item hangar will not be correct drones or not enough, he will just stay docked

let’s go full yolo! :smiley:


lines coooode :d :))


Could I possibly get an executable I could test?


update 12.08.2018

  • added configurable Delay after Retreat is called
  • toggle on/of
  • set From - To (seconds)
  • added toggle to Loot or not
  • added customizable distance to warp-in site
  • added option to disable Orbit (in case of sentries usage)

Bot will randomize time between those values and wait docked, eg. He will not undock in same second as last neut left system, in case he immediately jumps back :wink:


code for randomize delay is fairly simple. I do have function which takes configuration and randomize delay.

		public void RandomizeRetreatTime()
			if (this.ConfigConstants.RetreatDelay)
				Random rnd = new Random();
				int DelayTime = rnd.Next(this.ConfigConstants.RetreatDelayFrom, this.ConfigConstants.RetreatDelayTo);

Where is it needed I just call (when retreat because of neuts occurs)


and in main tree i do have

			if ((this.ConfigConstants.RetreatDelay) && (this.RetreatRelease > DateTime.Now))
				yield return new DiagnosticTask { MessageText = "\n\nWaiting after RETREAT (neuts in system) \n\n \t I'll undock if system is clear at: " + this.RetreatRelease.ToString("HH:mm:ss") + " .\n\n" };
				yield break;

Simple and clean I hope :stuck_out_tongue:



Works well and is pretty easy to modify and configure.

pikacuq has been great at answering any of my questions and helping me with using multiple clients :slight_smile:
thanks bro :smiley:


Thanks @Jackson glad you like it :wink:

ALL: new release incomming ! :slight_smile:
as always, if you want, message me

- Automatic reading for Missile range from tooltip
- Weapons are now activated on Optimal/Fallof/Range and configuration WeaponRange is used now only as fallback
- Armor fits and Shield fits are being automaticaly recognized and used (no need to define Shield Boosters in AlwaysOnModules)
- If mixed tank (armor + shield) bot will prioritize ARMOR but he will enable shieldbooster as well
(if you are mixing armor + shield, you are doing it wrong anyway)
- Shield/Armor follows same logic in terms of permatanking hitpoints etc. but of course shield calculates shield hitpoints and armor armor hitpoints.
- Bot can now handle proly all subcap ships (untested), drones or not, weapons or not

- some variables in config has changed
- updated so called manual 
- overall code cleanup and optimization to get it stuff done faster

// 16.08.2018
- minor fixes/addons in memory reading

- FrigatePriority (new config item!)
	force to kill frigates in each wave. Unlock any targets which are not frigates. When no frigates left, continue with rest of the site.
	(note: drones should have to be in passive mode, focussed fire)
- Towers/sentries/missile silos are being ignored to shorten time in the site

New experimental (not fully tested version) 2.1.1.
Because of usage of sentries we have to be sure frigates are being killed as priority. In old code, frigates were priority, but based on locking speed of your ship it might happen that frigates are being locked as 3-4 target because bigger ships are locked faster.
This new experimental build takes care about frigates exclusively and if there isnt any, continue with bigger ships as usual.
This should as well help with EWAR, since we do have ewar priority targeting for some time, this will probably prevent to be ewared at all.

If you want to test it, there is a valid build for today.

Thanks! :slight_smile: