summaryrefslogtreecommitdiff
path: root/plugins/Dfusion
diff options
context:
space:
mode:
authorWarmist2012-03-25 11:48:53 +0300
committerWarmist2012-03-25 11:48:53 +0300
commit63634de8d5920246ce0b8af3cd5e3e754fc049db (patch)
treed04fcaad12cd94e5ccf42b3b88853ef1d8487f70 /plugins/Dfusion
parente36ed9ac07dbe3fdd7582e1b377b0d77f37ae3f7 (diff)
downloaddfhack-63634de8d5920246ce0b8af3cd5e3e754fc049db.tar.gz
dfhack-63634de8d5920246ce0b8af3cd5e3e754fc049db.tar.bz2
dfhack-63634de8d5920246ce0b8af3cd5e3e754fc049db.tar.xz
Fixed empregnate, and some other tools...
Diffstat (limited to 'plugins/Dfusion')
-rw-r--r--plugins/Dfusion/luafiles/init.lua2
-rw-r--r--plugins/Dfusion/luafiles/tools/init.lua35
2 files changed, 28 insertions, 9 deletions
diff --git a/plugins/Dfusion/luafiles/init.lua b/plugins/Dfusion/luafiles/init.lua
index 27f0571f..aaf2677f 100644
--- a/plugins/Dfusion/luafiles/init.lua
+++ b/plugins/Dfusion/luafiles/init.lua
@@ -61,7 +61,7 @@ dofile("dfusion/editor.lua")
unlockDF()
plugins={}
table.insert(plugins,{"simple_embark","A simple embark dwarf count editor"})
---table.insert(plugins,{"tools","some misc tools"})
+table.insert(plugins,{"tools","some misc tools"})
table.insert(plugins,{"embark","Multi race embark"})
table.insert(plugins,{"friendship","Multi race fort enabler"})
--[=[table.insert(plugins,{"items","A collection of item hacking tools"})
diff --git a/plugins/Dfusion/luafiles/tools/init.lua b/plugins/Dfusion/luafiles/tools/init.lua
index ebaf6371..6f1384ba 100644
--- a/plugins/Dfusion/luafiles/tools/init.lua
+++ b/plugins/Dfusion/luafiles/tools/init.lua
@@ -272,23 +272,42 @@ function tools.empregnate(unit)
if unit==nil then
error("Failed to empregnate. Unit not selected/valide")
end
+ print(string.format("%x %x",df.sizeof(unit)))
+
local arr1=unit.appearance.unk_51c
local arr2=unit.appearance.unk_51c
local created=false
if unit.relations.pregnancy_ptr == nil then
print("creating preg ptr.")
- unit.relations.pregnancy_ptr=unit.relations:_field("pregnancy_ptr"):new()--=df.new(unit.relations.pregnancy_ptr._kind)
+ if false then
+ print(string.format("%x %x",df.sizeof(unit.relations:_field("pregnancy_ptr"))))
+ return
+ end
+ local size,offset=df.sizeof(unit.relations:_field("pregnancy_ptr"))
+ local s1=df.sizeof(arr1)
+ local s2=df.sizeof(arr2)
+ engine.poked(offset,engine.alloc(s1+s2))
created=true
end
- local tarr1=unit.relations.pregnancy_ptr:deref().anon_1
- local tarr2=unit.relations.pregnancy_ptr:deref().anon_2
- if created or tarr1.size~= arr1.size then
+ local tarr1=unit.relations.pregnancy_ptr.anon_1
+ local tarr2=unit.relations.pregnancy_ptr.anon_2
+ if created or #tarr1~= #arr1 then
+ print(string.format("Before: %d vs %d",#tarr1,#arr1))
print("Setting up arr1")
- initType(tarr1,arr1.size)
+ print(string.format("%x %x",df.sizeof(tarr1)))
+ --tarr1=arr1:new()
+ local size,offset=df.sizeof(tarr1)
+ engine.poked(offset,engine.alloc(#arr1))
+ engine.poked(offset+4,#arr1)
+ print(string.format("after: %d vs %d",#tarr1,#arr1))
end
- if created or tarr2.size~= arr2.size then
- print("Setting up arr1")
- initType(tarr2,arr2.size)
+ if created or #tarr2~= #arr2 then
+ print("Setting up arr2")
+ --tarr2=arr2:new()
+ local size,offset=df.sizeof(tarr2)
+
+ engine.poked(offset,engine.alloc(#arr2*2))
+ engine.poked(offset+4,#arr2)
end
print("Setting preg timer.")
unit.relations.pregnancy_timer=10