# create an infinite magma source at the cursor $magma_sources ||= [] case $script_args[0] when 'here' $magma_onupdate ||= df.onupdate_register(12) { # called every 12 game ticks (100x a dwarf day) if $magma_sources.empty? df.onupdate_unregister($magma_onupdate) $magma_onupdate = nil end $magma_sources.each { |x, y, z| if tile = df.map_tile_at(x, y, z) and DFHack::TiletypeShape::PassableFlow[tile.shape] des = tile.designation des.flow_size += 1 if des.flow_size < 7 des.liquid_type = 1 des.flow_forbid = true mf = tile.mapblock.flags mf.update_liquid = true mf.update_liquid_twice = true zf = df.world.map.z_level_flags[z] zf.update = true zf.update_twice = true end } } if df.cursor.x != -30000 if tile = df.map_tile_at(df.cursor) if DFHack::TiletypeShape::PassableFlow[tile.shape] $magma_sources << [df.cursor.x, df.cursor.y, df.cursor.z] else puts "Impassable tile: I'm afraid I can't do that, Dave" end else puts "Unallocated map block - build something here first" end else puts "Please put the game cursor where you want a magma source" end when 'delete-here' $magma_sources.delete [df.cursor.x, df.cursor.y, df.cursor.z] when 'stop' $magma_sources.clear else puts <