diff options
| author | jj | 2012-09-23 23:26:57 +0200 |
|---|---|---|
| committer | jj | 2012-09-23 23:26:57 +0200 |
| commit | aefedb98872d6eb34fee1ba3d7a7c7994d49f12e (patch) | |
| tree | a08ded263b86879164f3a265612d2b55e51cffe3 /plugins/ruby | |
| parent | f2199c2951e195a8ee496fd75ee5b512d6e3e15e (diff) | |
| download | dfhack-aefedb98872d6eb34fee1ba3d7a7c7994d49f12e.tar.gz dfhack-aefedb98872d6eb34fee1ba3d7a7c7994d49f12e.tar.bz2 dfhack-aefedb98872d6eb34fee1ba3d7a7c7994d49f12e.tar.xz | |
ruby: MapTile#offset, tweak #dig to check for existing jobs
Diffstat (limited to 'plugins/ruby')
| -rw-r--r-- | plugins/ruby/map.rb | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/plugins/ruby/map.rb b/plugins/ruby/map.rb index 4e8bf910..9629c3f9 100644 --- a/plugins/ruby/map.rb +++ b/plugins/ruby/map.rb @@ -67,6 +67,14 @@ module DFHack @mapblock = b end + def offset(dx, dy=nil, dz=0) + if dx.respond_to?(:x) + dz = dx.z if dx.respond_to?(:z) + dx, dy = dx.x, dx.y + end + df.map_tile_at(@x+dx, @y+dy, @z+dz) + end + def designation @mapblock.designation[@dx][@dy] end @@ -191,16 +199,20 @@ module DFHack def dig(mode=:Default) if mode == :Smooth if tilemat != :SOIL and caption !~ /smooth|pillar|fortification/i and # XXX caption.. - designation.smooth == 0 and not df.world.job_list.find { |j| + designation.smooth == 0 and (designation.hidden or not df.world.job_list.find { |j| # the game removes 'smooth' designation as soon as it assigns a job, if we # re-set it the game may queue another :DetailWall that will carve a fortification (j.job_type == :DetailWall or j.job_type == :DetailFloor) and df.same_pos?(j, self) - } + }) designation.dig = :No designation.smooth = 1 mapblock.flags.designated = true end else + return if mode != :No and designation.dig == :No and not designation.hidden and df.world.job_list.find { |j| + # someone already enroute to dig here, avoid 'Inappropriate dig square' spam + JobType::Type[j.job_type] == :Digging and df.same_pos?(j, self) + } designation.dig = mode mapblock.flags.designated = true if mode != :No end |
