diff --git a/plugins/Dfusion/luafiles/init.lua b/plugins/Dfusion/luafiles/init.lua index 27f0571fd..aaf2677fc 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 ebaf63719..6f1384baa 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