summaryrefslogtreecommitdiff
path: root/plugins/Dfusion
diff options
context:
space:
mode:
authorWarmist2012-03-18 03:02:16 +0200
committerWarmist2012-03-18 03:02:16 +0200
commit5367d2811099b5cbb0bedee7719321bf202ef3b7 (patch)
tree0ae4481fe4b7067e6e57f25257deb641166c16ba /plugins/Dfusion
parent943c4abe763fb1a2958009a71eecc562881130c4 (diff)
downloaddfhack-5367d2811099b5cbb0bedee7719321bf202ef3b7.tar.gz
dfhack-5367d2811099b5cbb0bedee7719321bf202ef3b7.tar.bz2
dfhack-5367d2811099b5cbb0bedee7719321bf202ef3b7.tar.xz
few small bugs (embark caste selection) and moved runsaved to non-auto.
Diffstat (limited to 'plugins/Dfusion')
-rw-r--r--plugins/Dfusion/dfusion.cpp15
-rw-r--r--plugins/Dfusion/luafiles/embark/init.lua12
-rw-r--r--plugins/Dfusion/luafiles/init.lua15
3 files changed, 28 insertions, 14 deletions
diff --git a/plugins/Dfusion/dfusion.cpp b/plugins/Dfusion/dfusion.cpp
index 120e3fce..66e36a83 100644
--- a/plugins/Dfusion/dfusion.cpp
+++ b/plugins/Dfusion/dfusion.cpp
@@ -152,7 +152,9 @@ command_result lua_run (color_ostream &out, std::vector <std::string> &parameter
{
try{
s.loadfile(parameters[0]); //load file
- s.pcall(0,0);// run it
+ for(size_t i=1;i<parameters.size();i++)
+ s.push(parameters[i]);
+ s.pcall(parameters.size()-1,0);// run it
}
catch(lua::exception &e)
{
@@ -168,7 +170,7 @@ command_result lua_run (color_ostream &out, std::vector <std::string> &parameter
mymutex->unlock();
return CR_OK;
}
-void RunDfusion(color_ostream &out)
+void RunDfusion(color_ostream &out, std::vector <std::string> &parameters)
{
mymutex->lock();
lua::state s=lua::glua::Get();
@@ -176,8 +178,9 @@ void RunDfusion(color_ostream &out)
s.getglobal("err");
int errpos=s.gettop();
s.loadfile("dfusion/init.lua"); //load script
-
- s.pcall(0,0,errpos);// run it
+ for(size_t i=0;i<parameters.size();i++)
+ s.push(parameters[i]);
+ s.pcall(parameters.size(),0,errpos);// run it
}
catch(lua::exception &e)
{
@@ -193,7 +196,7 @@ command_result dfuse(color_ostream &out, std::vector <std::string> &parameters)
lua::SetConsole(s,out);
s.push(1);
s.setglobal("INIT");
- RunDfusion(out);
+ RunDfusion(out,parameters);
return CR_OK;
}
command_result dfusion (color_ostream &out, std::vector <std::string> &parameters)
@@ -202,6 +205,6 @@ command_result dfusion (color_ostream &out, std::vector <std::string> &parameter
lua::SetConsole(s,out);
s.push();
s.setglobal("INIT");
- RunDfusion(out);
+ RunDfusion(out,parameters);
return CR_OK;
}
diff --git a/plugins/Dfusion/luafiles/embark/init.lua b/plugins/Dfusion/luafiles/embark/init.lua
index c77d2a7a..704cfc49 100644
--- a/plugins/Dfusion/luafiles/embark/init.lua
+++ b/plugins/Dfusion/luafiles/embark/init.lua
@@ -16,7 +16,7 @@ function MakeTable(modpos,modsize,names)
if RaceTable[line] == nil then
error("Failure, "..line.." not found!")
end
- print("adding:"..line.." id:"..RaceTable[line])
+ --print("adding:"..line.." id:"..RaceTable[line])
engine.pokew(modpos+modsize+count*2,RaceTable[line]) -- add race
count = count + 1
end
@@ -45,9 +45,16 @@ function embark(names)
tofind=addressOf(df.ui,"race_id")
loc=offsets.find(stoff,0x0f,0xb7,0x0d,DWORD_,tofind) --MOVZX ECX,WORD PTR[]
-
+
print(string.format("found:%x",loc))
if((loc~=0)and(loc-stoff<1000)) then
+ loc2=offsets.find(loc,0x83,0xc8,0xff) -- or eax, ffffff (for caste)
+ if loc2== 0 then
+ error ("Location for caste nulling not found!")
+ end
+ engine.pokeb(loc2,0x90)
+ engine.pokeb(loc2+1,0x90)
+ engine.pokeb(loc2+2,0x90)
ModData=engine.installMod("dfusion/embark/embark.o","Embark",256)
modpos=ModData.pos
modsize=ModData.size
@@ -66,6 +73,7 @@ function embark(names)
engine.pokeb(loc+2,0xe8)
engine.poked(loc+3,modpos-loc-7)
--engine.pokeb(loc+5,0x90)
+
SetExecute(modpos)
else
error("did not find patch location, failing...")
diff --git a/plugins/Dfusion/luafiles/init.lua b/plugins/Dfusion/luafiles/init.lua
index 3662fec7..20075278 100644
--- a/plugins/Dfusion/luafiles/init.lua
+++ b/plugins/Dfusion/luafiles/init.lua
@@ -66,15 +66,18 @@ table.insert(plugins,{"triggers","a function calling plug (discontinued...)"})
table.insert(plugins,{"migrants","multi race imigrations"})
table.insert(plugins,{"onfunction","run lua on some df function"})--]=]
table.insert(plugins,{"editor","edit internals of df",EditDF})
+table.insert(plugins,{"saves","run current worlds's init.lua",RunSaved})
loadall(plugins)
dofile_silent("dfusion/initcustom.lua")
-print("Locating saves...")
-local str=df.world.cur_savegame.save_dir
-print("Current region:"..str)
-str="data/save/"..str.."/dfusion/init.lua"
-dofile_silent(str)
-
+function RunSaved()
+ print("Locating saves...")
+ local str=df.world.cur_savegame.save_dir
+ print("Current region:"..str)
+ str="data/save/"..str.."/dfusion/init.lua"
+ print("Trying to run:"..str)
+ dofile_silent(str)
+end
if not INIT then
mainmenu(plugins)
end