summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKelly Martin2012-09-23 17:41:43 -0500
committerKelly Martin2012-09-23 17:41:43 -0500
commit5022322a12a0fda4a52fc7ea7ffdc8228e774b6e (patch)
tree294e5cbbbecf7731118a06823ddc4c4b1b7d0182
parent229bff8e6aaa89e2660d30ebbd9bb23f3bb85334 (diff)
parentb665c344daf0403587b05fca67f575325472c8f4 (diff)
downloaddfhack-5022322a12a0fda4a52fc7ea7ffdc8228e774b6e.tar.gz
dfhack-5022322a12a0fda4a52fc7ea7ffdc8228e774b6e.tar.bz2
dfhack-5022322a12a0fda4a52fc7ea7ffdc8228e774b6e.tar.xz
Merge remote-tracking branch 'jjyg/master'
-rw-r--r--README.rst10
-rw-r--r--plugins/ruby/building.rb6
-rw-r--r--plugins/ruby/map.rb18
3 files changed, 28 insertions, 6 deletions
diff --git a/README.rst b/README.rst
index e495b158..73147d06 100644
--- a/README.rst
+++ b/README.rst
@@ -1052,7 +1052,7 @@ Export the current loaded map as a file. This will be eventually usable
with visualizers.
dwarfexport
-----------=
+-----------
Export dwarves to RuneSmith-compatible XML.
@@ -1632,7 +1632,7 @@ With no argument, this command shows an help message and list existing sources.
digfort
-=========
+=======
A script to designate an area for digging according to a plan in csv format.
This script, inspired from quickfort, can designate an area for digging.
@@ -1668,6 +1668,12 @@ drainaquifer
============
Remove all 'aquifer' tag from the map blocks. Irreversible.
+deathcause
+==========
+Focus a body part ingame, and this script will display the cause of death of
+the creature.
+
+
=======================
In-game interface tools
=======================
diff --git a/plugins/ruby/building.rb b/plugins/ruby/building.rb
index 68229c00..3f8842b4 100644
--- a/plugins/ruby/building.rb
+++ b/plugins/ruby/building.rb
@@ -299,9 +299,13 @@ module DFHack
# construct an abstract building (stockpile, farmplot, ...)
def building_construct_abstract(bld)
- if bld.getType == :Stockpile
+ case bld.getType
+ when :Stockpile
max = df.world.buildings.other[:STOCKPILE].map { |s| s.stockpile_number }.max
bld.stockpile_number = max.to_i + 1
+ when :Civzone
+ max = df.world.buildings.other[:ANY_ZONE].map { |z| z.zone_num }.max
+ bld.zone_num = max.to_i + 1
end
building_link bld
if !bld.flags.exists
diff --git a/plugins/ruby/map.rb b/plugins/ruby/map.rb
index d662a343..9629c3f9 100644
--- a/plugins/ruby/map.rb
+++ b/plugins/ruby/map.rb
@@ -26,7 +26,7 @@ module DFHack
end
end
- def map_tile_at(x, y=nil, z=nil)
+ def map_tile_at(x=df.cursor, y=nil, z=nil)
x = x.pos if x.respond_to?(:pos)
x, y, z = x.x, x.y, x.z if x.respond_to?(:x)
b = map_block_at(x, y, z)
@@ -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