# Misty Island Mine (JavaScript)

**URL:** <https://discourse.codecombat.com/t/misty-island-mine-javascript/35961>\
**Category:** Level Help\
**Created:** [August 19, 2023, 6:28pm UTC](https://discourse.codecombat.com/t/misty-island-mine-javascript/35961 "2023-08-19T18:28:37Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![milescombat](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/milescombat/32/34822_2.png) [@milescombat](https://discourse.codecombat.com/u/milescombat)\
**Post date:** [August 19, 2023, 6:28pm UTC](https://discourse.codecombat.com/t/misty-island-mine-javascript/35961/1 "2023-08-19T18:28:37Z")

</div>

My peasants are killed before they can build even one decoy.

```python
function findBestItem(friend, excludedItems) {
    var items = friend.findItems();
    var bestItem = null;
    var bestItemValue = 0;
    for (let item of items) {
        var idx = excludedItems.indexOf(item);
        if (idx != -1) {
            continue;
        }
        item.score = item.value / hero.distanceTo(item);
        if (item.score > bestItemValue) {
            bestItemValue = item.score;
            bestItem = item;
        }
    }
    return bestItem;
}
function enoughGoldForDecoy() {
    return hero.gold >= 25;
}
while (true) {
    var peasants = hero.findByType("peasant");
    var claimedItems = [];
    for (let peasant of peasants) {
        var enemy = peasant.findNearestEnemy();
        if (enemy && enemy.target == peasant && enoughGoldForDecoy()) {
            hero.command(peasant, "buildXY", "decoy", peasant.pos.x - 2, peasant.pos.y);
            continue;
        }
        var item = findBestItem(peasant, claimedItems);
        if (item) {
            claimedItems.push(item);
            hero.command(peasant, "move", item.pos);
        }
    }
}

```

---

<div class="post-metadata">

**Author:** ![milescombat](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/milescombat/32/34822_2.png) [@milescombat](https://discourse.codecombat.com/u/milescombat)\
**Post date:** [August 19, 2023, 6:32pm UTC](https://discourse.codecombat.com/t/misty-island-mine-javascript/35961/2 "2023-08-19T18:32:00Z")

</div>

Figured it out. Error was in how I picked the best item (hero.distanceTo(item) vs friend.distanceTo(item))

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/codecombat/original/2X/a/a9445509d1a758c41b5ddcddc8c8e20a5dedb67f.png) [@system](https://discourse.codecombat.com/u/system)\
**Post date:** [August 20, 2023, 6:32am UTC](https://discourse.codecombat.com/t/misty-island-mine-javascript/35961/3 "2023-08-20T06:32:48Z")

</div>

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