[SOLVED] Cloudrip Montain MISTY ISLAND MINE

I don’t understand where i wrong. I can’t collect 300 gold. The peasant collecting only 238 gold.

// Collect gold efficiently by commanding peasants wisely!
// Peasants should collect coins and build decoys.

// The function should return the best item per target
// Use an array of ids to ensure no two peasants target the same item.
function findBestItem(friend, excludedItems) {
    var items = friend.findItems();
    var bestItem = null;
    var bestItemValue = 0;
    for(var i = 0; i < items.length; i++) {
        var item = items[i];
        // indexOf searches and array for a certain element:
        var idx = excludedItems.indexOf(item);
        // If the array doesn't contain it, it returns -1
        // In that case, skip over that item as another peasant is targeting it.
        if(idx != -1) { continue; }
        // Finish the function!
        // Remember bestItemValue should be the highest item.value / distanceTo
        let value = item.value / hero.distanceTo(item);
        if (value > bestItemValue) {
        bestItemValue = value;
        bestItem = item;
        }
    }
    return bestItem;
}

// This function checks if you have enough gold for a decoy.
function enoughGoldForDecoy() {
    return hero.gold >= 25;
}

while(true) {
    var peasants = hero.findByType("peasant");
    // Create a new array every loop.
    var claimedItems = [];
    for(var i = 0; i < peasants.length; i++) {
        var peasant = peasants[i];
        var enemy = peasant.findNearestEnemy();
        if(enemy) {
            // If the peasant is the target of the enemy
            // AND the hero has enough gold for a decoy
            if (enemy.target == peasant && enoughGoldForDecoy()) {
                let x = peasant.pos.x -2;
                let y = peasant.pos.y;
                hero.command(peasant, "buildXY", "decoy", x, y);
                    continue;
            }
                // Command a peasant to build a "decoy":
                
                // Add a continue so the peasant doesn't collect coins when building.
        }
        var item = findBestItem(peasant, claimedItems);
        if(item) {
            // After an item is claimed, stick it in the claimedItems array.
            claimedItems.push(item);
            // Command the peasant to collect the coin:
            hero.command(peasant, "move", item.pos);
        }
    }
}

1 Like

I think you just need to change ‘hero’ to ‘friend’ in this line (line 19):

Jenny

1 Like

Thanks you solved my problem!

This topic was automatically closed 12 hours after the last reply. New replies are no longer allowed.