       switch t.type
         when Herbivore
           for other in t.touching()
+            break if t.full()
             t.eat other if other instanceof Plant
         when Carnivore
           for other in t.touching()
+            break if t.full()
             t.eat other if other instanceof Herbivore
       if t instanceof Animal and t.hp <= 0 or t.succumbs()
         @remThing t

      ]
    }
  need: -> 0.1
  eat: (other) ->
    @hp += other.hp / 2
    @hp = min( @health(), @hp ) # you can't exceed maximum health

  babies: ->
    cradles = @makeCradles()
    orchards = @makeCradles()
    organisms = []
    @visitThings(
      (t) =>
        points = @pointsNear t.x, t.y, t.radius * 2
        organisms.push t if t instanceof Organism
        @removeCradles cradles, points unless t instanceof Plant
        @removeCradles orchards, points unless t instanceof Stone
      false, true
    )
    for t in shuffle organisms
      c = if t instanceof Plant then orchards else cradles
      t.reproduce c
  findCradles: (allCradles, newCradles) ->
    grep newCradles, (pt) -> allCradles[pt[0]][pt[1]]
  removeCradles: (allCradles, points) ->
