+ tiles[i].dom.unbind('click').fadeOut fade_ms
+ tiles[i].new_hp = tiles[i].hp
+ for n in board_neighbors[i]
+ neighbors[n] = tiles[n]
+ for nn in board_neighbors[n]
+ nneighbors[nn] = tiles[nn]
+ for i in faders
+ delete nneighbors[i]
+ delete neighbors[i]
+ for k, v of neighbors
+ delete nneighbors[k]
+ # convert to arrays so we can sort, etc
+ nneighbors = (v for k, v of nneighbors)
+ neighbors = (v for k, v of neighbors)
+ # TODO make this apply eavenly to neighbors
+ # TODO different range for different word lengths
+ for nei in [neighbors, nneighbors]
+ if unsink > 0
+ for i in nei
+ if i.hp is 0 and unsink >= 10
+ i.new_hp = 10
+ unsink -= 10
+ i.text = new_letter()
+ i.dom.html i.text
+ for nei in [neighbors, nneighbors]
+ if unsink > 0
+ for i in nei
+ if i.hp > 0 and unsink > 0
+ unsink -= 10 - i.hp
+ i.new_hp = 10
+ for i in tiles
+ i.new_hp ?= i.hp - 1
+ if i.new_hp < 0
+ i.new_hp = 0
+ else if i.new_hp > HP_MAX
+ i.new_hp = HP_MAX
+ if i.new_hp isnt i.hp
+ i.dom.removeClass "hp#{i.hp}"
+ i.dom.addClass "hp#{i.new_hp}"
+ i.hp = i.new_hp
+ delete i.new_hp