Lolth. Priestery. That should be about it left to do.
To be exact, I just got done with the script and rock for summoning Lolth. First, it checks if Lolth is already there. If it does, well, it stops the script but doesn't stop your priest from dying (lol). After that, it checks your priest's skill--it adds 5% per skill level, up to a 100% chance at legendary+5. If the check fails... your priest still dies (lol). If the check succeeds, you get a gigantic spider god. And your priest dies. What a schmuck.
I've much more sacrifice-based stuff, oh yes. Shrine reactions are based around animal sacrifice, altar around prisoner sacrifice, temple around citizen sacrifice.
EDIT: Yeah, the places aren't going to be that limited. Shrine is based around non-sacrificing (and therefore very risky) reactions. Altar is based around animal and prisoner sacrifice; animals are worth more. Temple is based around citizen as usual.
Here's a sample of a shrine reaction:
local unit = df.unit.find(...)
local rando=dfhack.random.new()
local roll=rando:random(20)
local result=roll+dfhack.units.getEffectiveSkill(unit,df.profession.STRAND_EXTRACTOR)
if roll==1 then
dfhack.runscript('immolate')
elseif result>=20 then
dfhack.runscript('growcrops')
dfhack.runscript('grow')
dfhack.runscript('regrass')
elseif result<=6
dfhack.runscript('extirpate','all')
else dfhack.showAnnouncement('Your prayer failed, but Lolth had mercy this time.',COLOR_MAGENTA) end
The reaction code itself is impertinent. It's a prayer reaction.
It rolls a D20. If a 1 is rolled, that's a critical failure. It burns every single plant on the map. If it isn't a 1, it adds your priest's prayer skill to the roll. If that result is more than or equal to 20, all crops, trees and grass on the map will grow. If that result is less than or equal to 6, they'll all die. If the result is between 7 and 19, it'll do absolutely nothing and tell you so.