Q: (Triton) is it possible to programme buying Science as soon as money is available?

So, a practical situation: the turn change happens two hours from now. I will be able to get online five hours later, at the earliest. Someone who is able to be online AT the turn change can buy Science immediately and reap its benefit for those 5 hours. I, however, can’t.

Or can I?

For anyone interested in options 4, here’s a simple script which could work. I’ve not tried it.

// every full universe event check the current 
// production and build if it's a new one
javascript:void(NeptunesPride.np.on('order:full_universe', (function(tech) {
  var u = NeptunesPride.universe;
  var pr = u.galaxy.production_rate;
  var initProd = Math.floor(u.galaxy.tick / pr);
  var s = u.selectedStar;

  // better to fail sooner than later
  if (!s || !u.player || s.player !== u.player) {
    throw Exception('input error');
  }
  var finished = false;

  return function check(){
    if (finished) return;
    var p = u.player;
    var prod = Math.floor(u.galaxy.tick / pr);
    // if next production and star is still owned by player
    if (prod === initProd + 1 && p === s.player) {
      Crux.crux.trigger('star_dir_upgrade_'+ tech, s.uid)
      finished = true;
    }
  };
})('s'))); // tech is 'i', 's' or 'e'

Bookmarklet version. javascript:void(NeptunesPride.np.on('order:full_universe', (function(tech) {var u = NeptunesPride.universe;var pr = u.galaxy.production_rate;var initProd = Math.floor(u.galaxy.tick / pr);var s = u.selectedStar;if (!s || !u.player || s.player !== u.player) {throw Exception('input error');}var finished = false;return function check(){if (finished) return;var p = u.player;var prod = Math.floor(u.galaxy.tick / pr);if (prod === initProd + 1 && p === s.player) {Crux.crux.trigger('star_dir_upgrade_'+ tech, s.uid)}finished = true;};})('s')));

How it should work:

  1. Select a star.
  2. Run script via javascript console or click bookmarklet.
  3. Repeat 1-2 multiple times for each star or purchase.
  4. Leave window or tab open and computer active. (not sleeping or hybernated)

The above code has no warranty and I take zero liability for anything.