# 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 tile.shape_passableflow des = tile.designation tile.spawn_magma(des.flow_size + 1) if des.flow_size < 7 end } } if df.cursor.x != -30000 if tile = df.map_tile_at(df.cursor) if tile.shape_passableflow $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 <