Exploring

You can explore up to a maximum of 10% of your current land at any time.

Due to the way the game ticks function, it is typically 'best' to explore in increments of 24; exploring 12 land twice would look like this. There are exceptions to this 'rule', specifically in "Newbie Mode", where land values can be predicted in advance and fully optimized. This will be covered in "Sklone Max Explore (Newbiemode)"

Land Gained/Tick - 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2

Land Gained/Tick - 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Exploring is significantly discounted for lower land kingdoms, with the discount level decreasing linearly as you approach 4000 land.

MAX EXPLORE FORMULA

```
const arrSum = arr => arr.reduce((a,b) => a + b, 0)
var land = 0
var exploreArr =[]
var separator = 12;

function resetValues() {
 land = 250;
 exploreArr = [];
 for (var i = 0; i < 24; i++) {
 exploreArr.push(0)
 }
}

function exploreLand(amount) {
 //console.log("explore b4: ")
 //console.log(arr)
 //console.log("exploring: " +amount)
 stable = Math.floor(amount/24);
 leftover = amount - Math.floor(amount/24)\*24
 //console.log("leftover: " + leftover);
 for(var i = 0; i < 24; i++)
 exploreArr[i] += stable;

 if (leftover > 0) {
 for (var i = 23; i>0; i--) {
 exploreArr[i] += 1;
 leftover--;
 if (leftover <= 0)
 break;
 }
 }
}

function tick() {
 //console.log("land:" + land)
 land += exploreArr[0];
 exploreArr.shift();
 exploreArr.push(0);

}

function ExploreAvailable() {

 var maxExplore = Math.floor(land\*0.1)
 var currentExplore = arrSum(exploreArr)
 //console.log("crrent: " + currentExplore);
 var exploreAvailable = maxExplore-currentExplore;
 //console.log(exploreAvailable);
 return exploreAvailable
}

function exploreLogic(expAvab) {
 if (expAvab > 22)
 return Math.min(expAvab, 24);

 var leftover = land % 10;
 if (expAvab - leftover >= separator)
 if (10 - leftover - 1 > 5)
 if (exploreArr[0] <= 1)
 {
 //console.log(exploreArr);
 return expAvab;
 } else {
 //console.log(exploreArr);
 }

 return 0;
}

function debugDarius(tick, land, explore, reward = false) {
 if (explore > 0)
 console.log("Tick: " + tick + "; Land: " + land + " explore: " + explore);
 if (reward)
 console.log("Tick: " + tick + "; Land: " + land + " reward: 20");
}

function debugValues() {
 console.log("land: " +land);
 //console.log("exploreArr: "+exploreArr);
 //console.log("exploreAvab: " +ExploreAvailable());
}

function runNewb(sseparator, exploreToMax) {
 separator = sseparator;
 console.log("separator = " + sseparator)
 var expAvab = 0;
 var explore = 0;
 var thisTick = 96;

 exploreLand(24);
 console.log("tick: 96; explore: 24");
 for (var i=96; i > 0;i--) {
 thisTick = i;

 if ((i == 96)) {
 debugDarius(thisTick, land, 0, true);
 land += 20;
 }
 if ((i-24) % 48 == 0) { //reward
 debugDarius(thisTick, land, 0, true);
 land += 20;
 }

 expAvab = ExploreAvailable();
 //console.log(expAvab)
 explore = exploreLogic(expAvab);
 exploreLand(explore);
 if (explore > 0)
 debugDarius(thisTick, land, explore);

 //console.log("Tick: " +thisTick+"; Land: " +land);
 //console.log(exploreArr)
 tick();

 }
 return land
}

arr = [];
maxLand = 0;
bestSeparator = 0;
console.clear()
for (var h = 0; h <=24; h++)
{
 resetValues();
 runNewb(h);
 arr.push(land)
 if (maxLand < land)
 {
 maxLand = land
 bestSeparator = h
 }
 debugValues();
}

resetValues();
runNewb(bestSeparator);
debugValues();

```