| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -112,7 +112,7 @@ function get_tower_fire_rate(tower_type) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return TOWER_SPECS[tower_type].fire_rate | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					function get_tower_size(tower_type) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return TOWER_SPECS[tower_type.size] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return TOWER_SPECS[tower_type].size | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					local function make_tower_sprite(tower_type) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -212,15 +212,24 @@ end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					function towers_on_hex(hex) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    local t = {} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    for tower_index,tower in pairs(TOWERS) do | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if tower and tower.hex == hex then | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            table.insert(t, tower_index, tower) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if tower then | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for _,h in pairs(tower.hexes) do | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                if h == hex then | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    table.insert(t, tower_index, tower) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    break | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return t | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					function tower_on_hex(hex) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return table.find(TOWERS, function(tower) return tower.hex == hex end) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return table.find(TOWERS, function(tower) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for _,h in pairs(tower.hexes) do | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if h == hex then return true end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    end) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					function tower_type_is_buildable_on(hex, tile, tower_type) | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -229,8 +238,17 @@ function tower_type_is_buildable_on(hex, tile, tower_type) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    -- @TODO remove this shit | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if hex == HEX_GRID_CENTER then return false end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    local blocking_towers = towers_on_hex(hex) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    local blocking_mobs = mobs_on_hex(hex) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    local blocking_towers = {} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    local blocking_mobs = {} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    for _,h in pairs(spiral_map(hex, get_tower_size(tower_type))) do | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        table.append(blocking_towers, towers_on_hex(hex)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        table.append(blocking_mobs, mobs_on_hex(hex)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if WIN:key_down"space" then | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        log(table.tostring(blocking_towers)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    end | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    local towers_blocking = table.count(blocking_towers) ~= 0 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    local mobs_blocking = table.count(blocking_mobs) ~= 0 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -403,6 +421,8 @@ function make_and_register_tower(hex, tower_type) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    tower.range = spec.range | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    tower.fire_rate = spec.fire_rate | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    tower.last_shot_time = -spec.fire_rate | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    tower.size = spec.size | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    tower.hexes = spiral_map(tower.hex, tower.size) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if tower_type == TOWER_TYPE.REDEYE then | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        local tile = state.map.get(hex.x, hex.y) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |