# Help! rich forager

**URL:** <https://discourse.codecombat.com/t/help-rich-forager/1907>\
**Category:** Uncategorized\
**Created:** [December 15, 2014, 10:40am UTC](https://discourse.codecombat.com/t/help-rich-forager/1907 "2014-12-15T10:40:01Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![creativejiwon](https://avatars.discourse-cdn.com/v4/letter/c/a183cd/32.png) [@creativejiwon](https://discourse.codecombat.com/u/creativejiwon)\
**Post date:** [December 15, 2014, 10:40am UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/1 "2014-12-15T10:40:01Z")

</div>

loop {  
var flag = this.findFlag();  
var enemy = this.findNearestEnemy();  
var item = this.findNearestItem();

```
if (flag) {
    // What happens when I find a flag?
    this.pickUpFlag(flag);
}
else if (enemy) {
    // What happens when I find an enemy?
    this.attack(enemy);
    this.attack(enemy);
}
else if (item) {
    // What happens when I find an item?
    var posi = pos.item;
    var fx = pos.x;
    var fy = pos.y;
    this.moveXY(fx, fy);
}

```

}  
what have I done wrong? I thought I got it the first time but it keeps saying pos being undefined

---

<div class="post-metadata">

**Author:** ![creativejiwon](https://avatars.discourse-cdn.com/v4/letter/c/a183cd/32.png) [@creativejiwon](https://discourse.codecombat.com/u/creativejiwon)\
**Post date:** [December 15, 2014, 10:43am UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/2 "2014-12-15T10:43:51Z")

</div>

This is javascript by the way. I just don`t know what I should do!

---

<div class="post-metadata">

**Author:** ![foxpc](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/foxpc/32/1763_2.png) [@foxpc](https://discourse.codecombat.com/u/foxpc)\
**Post date:** [December 15, 2014, 11:15am UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/3 "2014-12-15T11:15:29Z")

</div>

Hey.

This part is fairly incorrect:

```
var posi = pos.item;
var fx = pos.x;
var fy = pos.y;

```

You are getting the position of the item, not the item of “pos”:

```
var posItem = item.pos;

```

After that, you can just do:

```
var fx = posItem.x;
var fy = posItem.y;

```

Everything should work now!

---

<div class="post-metadata">

**Author:** ![creativejiwon](https://avatars.discourse-cdn.com/v4/letter/c/a183cd/32.png) [@creativejiwon](https://discourse.codecombat.com/u/creativejiwon)\
**Post date:** [December 15, 2014, 1:35pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/4 "2014-12-15T13:35:29Z")

</div>

Thanks!!! I couldn`t solve it and after I changed it, all went smooth;; but my hero keeps dying!! Is it just I need to buy an item?? It`s basically my first time coding so I`m pretty lost…

---

<div class="post-metadata">

**Author:** ![foxpc](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/foxpc/32/1763_2.png) [@foxpc](https://discourse.codecombat.com/u/foxpc)\
**Post date:** [December 15, 2014, 3:42pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/5 "2014-12-15T15:42:42Z")

</div>

It’s the one where you need to collect the coins and kill guys?

Yeah, you kind if have to buy an armor so you have more health. Even if your algorithm is fine, you can’t really beat it… Kind of p2w in this case 🙂

---

<div class="post-metadata">

**Author:** ![BorderofPhantasm](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/borderofphantasm/32/1714_2.png) [@BorderofPhantasm](https://discourse.codecombat.com/u/BorderofPhantasm)\
**Post date:** [December 15, 2014, 5:18pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/6 "2014-12-15T17:18:24Z")

</div>

@foxpc Wow, I bought Hattori Hanzo for the extra speed/damage, using Tharin for this level, all my money was used on Hattori and I literally can’t continue the game without buying gems for more armor  
GG Code Combat .-.

---

<div class="post-metadata">

**Author:** ![Anoner59](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@Anoner59](https://discourse.codecombat.com/u/Anoner59)\
**Post date:** [December 15, 2014, 8:33pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/7 "2014-12-15T20:33:35Z")

</div>

I was able to do it with Thunderfist, along sword, the heavy iron breastplate, and the polished bronze helmet. I survived with 11 health

---

<div class="post-metadata">

**Author:** ![BorderofPhantasm](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/borderofphantasm/32/1714_2.png) [@BorderofPhantasm](https://discourse.codecombat.com/u/BorderofPhantasm)\
**Post date:** [December 16, 2014, 3:20pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/8 "2014-12-16T15:20:03Z")

</div>

@Anoner59 I have a Tarnished Bronze Breastplate, a Polished Bronze Helmet, and the Long Sword, only have 11 gems, it’s literally impossible to beat it without paying \>.\>

---

<div class="post-metadata">

**Author:** ![Anoner59](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@Anoner59](https://discourse.codecombat.com/u/Anoner59)\
**Post date:** [December 16, 2014, 5:13pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/9 "2014-12-16T17:13:35Z")

</div>

Which hero do you have?

---

<div class="post-metadata">

**Author:** ![BorderofPhantasm](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/borderofphantasm/32/1714_2.png) [@BorderofPhantasm](https://discourse.codecombat.com/u/BorderofPhantasm)\
**Post date:** [December 16, 2014, 5:14pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/10 "2014-12-16T17:14:47Z")

</div>

@Anoner59 Tharin (20 characters pls)

---

<div class="post-metadata">

**Author:** ![Anoner59](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@Anoner59](https://discourse.codecombat.com/u/Anoner59)\
**Post date:** [December 16, 2014, 5:15pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/11 "2014-12-16T17:15:25Z")

</div>

Are you using “cleave”? It was impossible for me to do it with the samurai without cleave, but once I included cleave in my code, I finished the level.

---

<div class="post-metadata">

**Author:** ![BorderofPhantasm](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/borderofphantasm/32/1714_2.png) [@BorderofPhantasm](https://discourse.codecombat.com/u/BorderofPhantasm)\
**Post date:** [December 16, 2014, 5:16pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/12 "2014-12-16T17:16:40Z")

</div>

@Anoner59 Only using attack and shield, don’t know how to incorporate cleave into the code

---

<div class="post-metadata">

**Author:** ![Anoner59](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@Anoner59](https://discourse.codecombat.com/u/Anoner59)\
**Post date:** [December 16, 2014, 5:19pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/13 "2014-12-16T17:19:17Z")

</div>

loop:  
Enemy = self.findNearestenemy  
if enemy:  
if self.isReady(“cleave”):  
self.cleave(enemy)  
else:  
self.attack(enemy)

---

<div class="post-metadata">

**Author:** ![Ryan\_Mak](https://avatars.discourse-cdn.com/v4/letter/r/838e76/32.png) [@Ryan\_Mak](https://discourse.codecombat.com/u/Ryan_Mak)\
**Post date:** [December 19, 2014, 6:04pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/14 "2014-12-19T18:04:23Z")

</div>

Can someone tell me what I did wrong with this code?  
I’m able to walk around and use cleave, but with cleave can’t kill the minion then it won’t auto attack nor will it use shield

loop:  
flag = self.findFlag()  
enemy = self.findNearestEnemy()  
item = self.findNearestItem()

```
if flag:
    # What happens when I find a flag?
    self.pickUpFlag(flag)   
    
elif enemy:
    # What happens when I find an enemy?
        loop:
            if enemy:
            self.isReady("cleave")
            self.cleave(enemy)
            self.attack(enemy)
	        self.shield()
	
elif item:
    # What happens when I find an item?
    pos = item.pos
    x = pos.x;
    y = pos.y;
    self.moveXY(x, y)
```

---

<div class="post-metadata">

**Author:** ![sotonin](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/sotonin/32/24089_2.png) [@sotonin](https://discourse.codecombat.com/u/sotonin)\
**Post date:** [December 19, 2014, 6:10pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/15 "2014-12-19T18:10:05Z")

</div>

> [@Ryan\_Mak](#):
>
> loop: flag = self.findFlag() enemy = self.findNearestEnemy() item = self.findNearestItem()
> 
> if flag:  
> # What happens when I find a flag?  
> self.pickUpFlag(flag)
> 
> elif enemy:  
> # What happens when I find an enemy?  
> loop:  
> if enemy:  
> self.isReady(“cleave”)  
> self.cleave(enemy)  
> self.attack(enemy)  
> self.shield()
> 
> elif item:  
> # What happens when I find an item?  
> pos = item.pos  
> x = pos.x;  
> y = pos.y;  
> self.moveXY(x, y)

There were a few problems. You have a second loop in there. Which it will never leave. That’s a no no. Also you weren’t checking if cleave was ready and had an extra if enemy in there. Also using shield is kind of pointless. I removed it. It only works if you stand still and attack will always be available so it wouldn’t ever fire. here it is cleaned up

```python
loop:
    flag = self.findFlag()
    enemy = self.findNearestEnemy()
    item = self.findNearestItem()

    if flag:
        # What happens when I find a flag?
        self.pickUpFlag(flag)   

    elif enemy:
        # What happens when I find an enemy?
        if self.isReady("cleave"):
            self.cleave(enemy)
        else
            self.attack(enemy)

    elif item:
        # What happens when I find an item?
        pos = item.pos
        x = pos.x;
        y = pos.y;
        self.moveXY(x, y)

```

---

<div class="post-metadata">

**Author:** ![mck110601](https://avatars.discourse-cdn.com/v4/letter/m/e480ec/32.png) [@mck110601](https://discourse.codecombat.com/u/mck110601)\
**Post date:** [December 21, 2014, 8:01pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/16 "2014-12-21T20:01:54Z")

</div>

loop:  
flag = self.findFlag()  
enemy = self.findNearestEnemy()  
item = self.findNearestItem()  
**yobro = item.pos**  
itemX = yobro.x  
itemY = yobro.y

```
if enemy:
    if self.isReady("cleave"):
        self.cleave(enemy)
    else:
        self.attack(enemy)
else:
    if flag:
        self.pickUpFlag()
    else:
        self.moveXY(itemX, itemY)

```

My problem is that it keeps on saying that “item” is null where I bolded it. I can’t figure out the problem. If it is relevant, I am on google Chrome

---

<div class="post-metadata">

**Author:** ![mikelburk](https://avatars.discourse-cdn.com/v4/letter/m/b5ac83/32.png) [@mikelburk](https://discourse.codecombat.com/u/mikelburk)\
**Post date:** [December 22, 2014, 12:54am UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/17 "2014-12-22T00:54:21Z")

</div>

“self.findNearestItem()” will sometimes return “null” if there isn’t an item on the screen or within range of your character’s line of sight. You will want to do an “if item:” check before accessing its properties and before trying to move to that location.

---

<div class="post-metadata">

**Author:** ![zhuangwei](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.codecombat.com/zhuangwei/32/2017_2.png) [@zhuangwei](https://discourse.codecombat.com/u/zhuangwei)\
**Post date:** [February 22, 2015, 6:02am UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/18 "2015-02-22T06:02:11Z")

</div>

loop:  
flag = self.findFlag()  
enemy = self.findNearestEnemy()  
item = self.findNearestItem()

```
if flag:
    self.pickUpFlag(flag)
elif enemy:
    self.attack(enemy)
elif item:
        itemPos = item.pos
        itemX = itemPos.x
        itemY = itemPos.y
        self.moveXY(itemX, itemY)
```

---

<div class="post-metadata">

**Author:** ![trillionman](https://avatars.discourse-cdn.com/v4/letter/t/7bcc69/32.png) [@trillionman](https://discourse.codecombat.com/u/trillionman)\
**Post date:** [March 11, 2015, 12:48am UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/19 "2015-03-11T00:48:09Z")

</div>

do something like this:  
loop:  
flag = self.findFlag()  
enemy = self.findNearestEnemy()  
item = self.findNearestItem()

```
if flag:
    # What happens when I find a flag?
   self.pickUpFlag(flag)
elif enemy:
    # What happens when I find an enemy?
    if self.isReady("cleave") and self.distanceTo(enemy) <5:
        self.cleave(enemy)
    else:
        self.attack(enemy)
elif item:
    # What happens when I find an item?
    pos = item.pos
    x = pos.x
    y = pos.y
    self.moveXY(x, y)
```

---

<div class="post-metadata">

**Author:** ![nubsoldier](https://avatars.discourse-cdn.com/v4/letter/n/e8c25b/32.png) [@nubsoldier](https://discourse.codecombat.com/u/nubsoldier)\
**Post date:** [May 16, 2015, 5:07pm UTC](https://discourse.codecombat.com/t/help-rich-forager/1907/20 "2015-05-16T17:07:18Z")

</div>

I got the right coding, but every 2 battles, I die at the 3rd one! There has to be a easier way to survive this! Please make it do not involve any purchasing, also, here’s my code:  
loop:  
flag = self.findFlag()  
if flag:  
self.pickUpFlag(flag)  
flag = self.findFlag()  
enemy = self.findNearestEnemy()  
item = self.findNearestItem()  
if enemy:self.attack(enemy)

[Next page](https://discourse.codecombat.com/t/help-rich-forager/1907.md?page=2)
