function friendship_in.install(names) RaceTable=RaceTable or BuildNameTable() mypos=engine.getmod("Friendship") if mypos then modpos=mypos _,modsize=engine.loadobj("dfusion/friendship/friendship.o") _=nil else modpos,modsize=engine.loadmod("dfusion/friendship/friendship.o","Friendship",1024) print(string.format("Loaded module @:%x",modpos)) end count=0 for _,v in pairs(names) do if RaceTable[v] == nil then --print("Failure, "..v.." not found!") error("Failure, "..v.." not found!") --break --maybe some indication of failure? and cleanup? end engine.pokew(modpos+modsize+count*2+4+2,RaceTable[v]) -- for some reason it compiled strangely -- cmp word[ebx+ecx*2],ax -> cmp word[ebx+ecx*2+2],ax count = count + 1 end engine.poked(modpos+0x8f,modpos+modsize+4) -- set ptr to creatures engine.poked(modpos+0x94,count) -- set count of creatures engine.poked(modpos+0xb9,modpos+modsize) -- set safe location engine.poked(modpos+0xc3,modpos+modsize) -- set safe location SetExecute(modpos) end function pokeCall(off) engine.pokeb(off,0xe8) b=engine.peekb(off+1) engine.poked(off+1,modpos-off-5) engine.pokeb(off+5,b) end