v50 Steam/Premium information for editors
- v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
- Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.
Difference between revisions of "User:Andux/Scripts"
Jump to navigation
Jump to search
m (→Name generator: using find() method) |
(+Kinsey, remove HealUnit (made obsolete by DFHack's included full-heal script)) |
||
(One intermediate revision by the same user not shown) | |||
Line 58: | Line 58: | ||
"umma", "undi", "unga", "unni", | "umma", "undi", "unga", "unni", | ||
"vala", "vali", "vara", "vari", "vina", | "vala", "vali", "vara", "vari", "vina", | ||
+ | |||
"ya", | "ya", | ||
"zadi", "zani", "zara", "zi" | "zadi", "zani", "zara", "zi" | ||
Line 152: | Line 153: | ||
===Urbanizer=== | ===Urbanizer=== | ||
− | + | For older versions of Dwarf Fortress--converts all forest retreats to visitable towns. | |
<pre style="overflow: auto;"> | <pre style="overflow: auto;"> | ||
for k,v in pairs(df.global.world.world_data.sites) do | for k,v in pairs(df.global.world.world_data.sites) do | ||
Line 163: | Line 164: | ||
==General== | ==General== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===GoodAsNew=== | ===GoodAsNew=== | ||
Line 233: | Line 185: | ||
r.wear_timer=0 | r.wear_timer=0 | ||
printall(r) | printall(r) | ||
+ | end | ||
+ | </pre> | ||
+ | |||
+ | ===Kinsey=== | ||
+ | <pre style="overflow: auto;"> | ||
+ | -- View or change the sexual orientation of the selected unit. | ||
+ | |||
+ | --[====[ | ||
+ | |||
+ | kinsey | ||
+ | ====== | ||
+ | View or change the sexual orientation of the selected unit. Usage: | ||
+ | |||
+ | :kinsey: | ||
+ | Print the unit's orientation flags. | ||
+ | :kinsey -asexual: | ||
+ | Change flags so that the unit will not romance or marry anyone. | ||
+ | :kinsey -rf: | ||
+ | Allow the unit to romance females. | ||
+ | :kinsey -rm: | ||
+ | Allow the unit to romance males. | ||
+ | :kinsey -mf: | ||
+ | Allow the unit to marry females. | ||
+ | :kinsey -mm: | ||
+ | Allow the unit to marry males. | ||
+ | :kinsey -indeterminate: | ||
+ | Mark the unit's orientation as indeterminate (default for adventurers). | ||
+ | |||
+ | Apart from the -asexual flag, any of the options above can be used together; | ||
+ | for example, ``kinsey -rm -mf`` will allow a unit to romance either sex, but | ||
+ | only marry females. | ||
+ | |||
+ | ]====] | ||
+ | |||
+ | local utils = require('utils') | ||
+ | |||
+ | local validArgs = utils.invert({ | ||
+ | 'asexual', | ||
+ | 'rf', | ||
+ | 'rm', | ||
+ | 'mf', | ||
+ | 'mm', | ||
+ | 'indeterminate', | ||
+ | 'help', | ||
+ | }) | ||
+ | |||
+ | local args = utils.processArgs({...}, validArgs) | ||
+ | |||
+ | if args.help then | ||
+ | print(dfhack.script_help()) | ||
+ | return | ||
+ | end | ||
+ | |||
+ | local unit = dfhack.gui.getSelectedUnit() | ||
+ | if not unit then | ||
+ | qerror('Error: please select a unit.') | ||
+ | end | ||
+ | |||
+ | local hf = df.historical_figure.find(unit.hist_figure_id) | ||
+ | if not hf then | ||
+ | print("Warning: Couldn't find histfig data for this unit.") | ||
+ | end | ||
+ | |||
+ | if unit then | ||
+ | if args.asexual then | ||
+ | unit.status.current_soul.orientation_flags.indeterminate = false | ||
+ | unit.status.current_soul.orientation_flags.romance_male = false | ||
+ | unit.status.current_soul.orientation_flags.marry_male = false | ||
+ | unit.status.current_soul.orientation_flags.romance_female = false | ||
+ | unit.status.current_soul.orientation_flags.marry_female = false | ||
+ | print("Unit orientation flags cleared.") | ||
+ | if hf then | ||
+ | hf.orientation_flags.indeterminate = false | ||
+ | hf.orientation_flags.romance_male = false | ||
+ | hf.orientation_flags.marry_male = false | ||
+ | hf.orientation_flags.romance_female = false | ||
+ | hf.orientation_flags.marry_female = false | ||
+ | print("Changes propagated to histfig data.") | ||
+ | end | ||
+ | |||
+ | elseif args.indeterminate or args.rm or args.mm or args.rf or args.mf then | ||
+ | unit.status.current_soul.orientation_flags.indeterminate = (args.indeterminate~=nil) | ||
+ | unit.status.current_soul.orientation_flags.romance_male = (args.rm~=nil) | ||
+ | unit.status.current_soul.orientation_flags.marry_male = (args.mm~=nil) | ||
+ | unit.status.current_soul.orientation_flags.romance_female = (args.rf~=nil) | ||
+ | unit.status.current_soul.orientation_flags.marry_female = (args.mf~=nil) | ||
+ | print("Unit orientation flags updated.") | ||
+ | if hf then | ||
+ | hf.orientation_flags.indeterminate = unit.status.current_soul.orientation_flags.indeterminate | ||
+ | hf.orientation_flags.romance_male = unit.status.current_soul.orientation_flags.romance_male | ||
+ | hf.orientation_flags.marry_male = unit.status.current_soul.orientation_flags.marry_male | ||
+ | hf.orientation_flags.romance_female = unit.status.current_soul.orientation_flags.romance_female | ||
+ | hf.orientation_flags.marry_female = unit.status.current_soul.orientation_flags.marry_female | ||
+ | print("Histfig data updated to match.") | ||
+ | end | ||
+ | end | ||
+ | |||
+ | print("Current orientation flags:") | ||
+ | print(" indeterminate: ", unit.status.current_soul.orientation_flags.indeterminate) | ||
+ | print(" romance_male: ", unit.status.current_soul.orientation_flags.romance_male) | ||
+ | print(" marry_male: ", unit.status.current_soul.orientation_flags.marry_male) | ||
+ | print(" romance_female:", unit.status.current_soul.orientation_flags.romance_female) | ||
+ | print(" marry_female: ", unit.status.current_soul.orientation_flags.marry_female) | ||
end | end | ||
</pre> | </pre> |
Latest revision as of 16:05, 19 July 2018
A collection of scripts for DFHack.
Fortress mode[edit]
Name generator[edit]
Based on Aerval's; changes:
- Expanded selection of name parts.
- Uses the world's name seed instead of the dwarf race index.
- Better handling of historical figures.
--Nameparts by http://jtevans.kilnar.com/rpg/dnd/tools/dwarf.php, Aerval, and Andux local firstnamepart = { "ad", "ak", "an", "ar", "ash", "at", "ba", "bal", "bar", "bel", "ber", "bil", "bof", "bol", "bro", "bul", "cal", "chal", "da", "das", "dal", "dim", "dor", "dru", "dur", "dwe", "dwin", "el", "fal", "far", "fash", "fel", "fim", "ful", "fun", "gal", "gar", "ger", "gil", "gim", "gom", "gol", "gri", "gro", "gru", "grun", "ha", "hal", "ham", "har", "hel", "her", "ho", "hol", "hor", "hul", "ing", "in", "ir", "kal", "kas", "ket", "kha", "khor", "kil", "kin", "ko", "kor", "kul", "lam", "lar", "lon", "lun", "mag", "mal", "mar", "mor", "mun", "nal", "nar", "nil", "nor", "ol", "or", "ov", "rag", "ral", "ram", "rim", "ron", "run", "sal", "sar", "shal", "shar", "shor", "sim", "sor", "stal", "stav", "sven", "tan", "tha", "thal", "thin", "thor", "thra", "thu", "um", "ur", "val", "van", "wil", "yar", "za", "zir", "zul" }; local female_secondpart = { "a", "ada", "ala", "ana", "ani", "atha", "bari", "bina", "bine", "bura", "cha", "chi", "da", "dana", "dani", "dili", "dina", "dola", "dora", "dri", "dria", "edi", "ena", "eta", "eva", "eza", "fani", "fi", "ga", "gana", "gari", "gela", "gina", "gini", "goli", "grima", "i", "ia", "ida", "ila", "ilda", "ili", "ika", "ina", "iri", "ka", "ki", "kia", "kona", "kuni", "la", "lani", "leda", "lena", "lia", "lina", "lona", "ma", "mani", "mela", "mina", "moda", "modi", "na", "neva", "ni", "nia", "nomi", "ola", "olga", "ona", "ondi", "oti", "ova", "ra", "raka", "rana", "ravi", "ri", "ria", "rimi", "rinda", "rundi", "sha", "shi", "si", "ska", "ta", "tha", "ti", "tila", "tri", "tria", "umma", "undi", "unga", "unni", "vala", "vali", "vara", "vari", "vina", "ya", "zadi", "zani", "zara", "zi" }; local male_secondpart = { "aim", "ain", "ak", "ald", "am", "ar", "ard", "ash", "bain", "bald", "ban", "bar", "bash", "brun", "bur", "dain", "dall", "dar", "din", "dok", "dol", "dor", "dum", "dun", "dur", "eff", "esh", "ev", "far", "fath", "feb", "gan", "gar", "gath", "gin", "gor", "grim", "ik", "il", "im", "in", "ip", "isch", "kad", "kar", "kash", "keld", "kesh", "kon", "lek", "lem", "lesh", "let", "leth", "lin", "lor", "mar", "mek", "min", "mok", "mon", "moth", "mund", "nar", "nek", "nir", "nod", "nor", "od", "oin", "ok", "old", "on", "ond", "or", "rak", "ram", "rik", "rim", "rin", "ros", "roth", "rund", "skal", "skar", "tar", "tek", "til", "tok", "tul", "um", "und", "unn", "ur", "urd", "val", "van", "var", "vath", "vek", "ven", "vesh", "veth", "vin", "von", "zad", "zar", "zek", "zim", "zin" }; local dwarfRace = df.global.ui.race_id; math.randomseed(tonumber(df.global.world.worldgen.worldgen_parms.name_seed,36)); for index,unit in pairs(df.global.world.history.figures) do --Renaming all the historical dwarves if ( unit.race == dwarfRace ) then if (unit.sex ~= 0) then unit.name.first_name = firstnamepart[math.random(#firstnamepart)]..male_secondpart[math.random(#male_secondpart)]; else unit.name.first_name = firstnamepart[math.random(#firstnamepart)]..female_secondpart[math.random(#female_secondpart)]; end end end for index,unit in pairs(df.global.world.units.all) do --Renaming pretty much everyone else if ( unit.race == dwarfRace ) then if unit.flags1.important_historical_figure or unit.flags2.important_historical_figure then --Use the same name as the histfig data unit.name.first_name = df.historical_figure.find(unit.hist_figure_id).name.first_name; else if (unit.sex ~= 0) then unit.name.first_name = firstnamepart[math.random(#firstnamepart)]..male_secondpart[math.random(#male_secondpart)]; else unit.name.first_name = firstnamepart[math.random(#firstnamepart)]..female_secondpart[math.random(#female_secondpart)]; end end end end print("firstnamepart: "..#firstnamepart.."\nfemale: "..#female_secondpart.."\nmale: "..#male_secondpart);
Adventure mode[edit]
Item material changer[edit]
Roughly equivalent to changeitem m, but works better in adventure mode.
local r=nil local top=dfhack.gui.getCurViewscreen() print(top.parent,top) local cvstype=dfhack.gui.getFocusString(top) print(dfhack.gui.getFocusString(top.parent).."/"..cvstype) if cvstype=="dungeon_monsterstatus" then print(" inventory size: "..#top.inventory) print(" inventory_cursor: "..top.inventory_cursor) r=top.inventory[top.inventory_cursor].item elseif cvstype=="item" then -- override getSelectedItem()'s default behaviour for containers r=top.item else r=dfhack.gui.getSelectedItem() end if r then local m=... if not m then print("no material") return end r.mat_type=dfhack.matinfo.find(m).type r.mat_index=dfhack.matinfo.find(m).index r.flags.weight_computed=0 printall(r) end
Urbanizer[edit]
For older versions of Dwarf Fortress--converts all forest retreats to visitable towns.
for k,v in pairs(df.global.world.world_data.sites) do if v.type==4 then v.type=5 print('Site #'..k..': '..dfhack.TranslateName(v.name)..', "'..dfhack.TranslateName(v.name,1)..'", converted to town.') end end
General[edit]
GoodAsNew[edit]
Removes all wear from the selected item.
local r=nil local top=dfhack.gui.getCurViewscreen() print(top.parent,top) local cvstype=dfhack.gui.getFocusString(top) print(dfhack.gui.getFocusString(top.parent).."/"..cvstype) if cvstype=="dungeon_monsterstatus" then print(" inventory size: "..#top.inventory) print(" inventory_cursor: "..top.inventory_cursor) r=top.inventory[top.inventory_cursor].item else r=dfhack.gui.getSelectedItem() end if r then r.wear=0 r.wear_timer=0 printall(r) end
Kinsey[edit]
-- View or change the sexual orientation of the selected unit. --[====[ kinsey ====== View or change the sexual orientation of the selected unit. Usage: :kinsey: Print the unit's orientation flags. :kinsey -asexual: Change flags so that the unit will not romance or marry anyone. :kinsey -rf: Allow the unit to romance females. :kinsey -rm: Allow the unit to romance males. :kinsey -mf: Allow the unit to marry females. :kinsey -mm: Allow the unit to marry males. :kinsey -indeterminate: Mark the unit's orientation as indeterminate (default for adventurers). Apart from the -asexual flag, any of the options above can be used together; for example, ``kinsey -rm -mf`` will allow a unit to romance either sex, but only marry females. ]====] local utils = require('utils') local validArgs = utils.invert({ 'asexual', 'rf', 'rm', 'mf', 'mm', 'indeterminate', 'help', }) local args = utils.processArgs({...}, validArgs) if args.help then print(dfhack.script_help()) return end local unit = dfhack.gui.getSelectedUnit() if not unit then qerror('Error: please select a unit.') end local hf = df.historical_figure.find(unit.hist_figure_id) if not hf then print("Warning: Couldn't find histfig data for this unit.") end if unit then if args.asexual then unit.status.current_soul.orientation_flags.indeterminate = false unit.status.current_soul.orientation_flags.romance_male = false unit.status.current_soul.orientation_flags.marry_male = false unit.status.current_soul.orientation_flags.romance_female = false unit.status.current_soul.orientation_flags.marry_female = false print("Unit orientation flags cleared.") if hf then hf.orientation_flags.indeterminate = false hf.orientation_flags.romance_male = false hf.orientation_flags.marry_male = false hf.orientation_flags.romance_female = false hf.orientation_flags.marry_female = false print("Changes propagated to histfig data.") end elseif args.indeterminate or args.rm or args.mm or args.rf or args.mf then unit.status.current_soul.orientation_flags.indeterminate = (args.indeterminate~=nil) unit.status.current_soul.orientation_flags.romance_male = (args.rm~=nil) unit.status.current_soul.orientation_flags.marry_male = (args.mm~=nil) unit.status.current_soul.orientation_flags.romance_female = (args.rf~=nil) unit.status.current_soul.orientation_flags.marry_female = (args.mf~=nil) print("Unit orientation flags updated.") if hf then hf.orientation_flags.indeterminate = unit.status.current_soul.orientation_flags.indeterminate hf.orientation_flags.romance_male = unit.status.current_soul.orientation_flags.romance_male hf.orientation_flags.marry_male = unit.status.current_soul.orientation_flags.marry_male hf.orientation_flags.romance_female = unit.status.current_soul.orientation_flags.romance_female hf.orientation_flags.marry_female = unit.status.current_soul.orientation_flags.marry_female print("Histfig data updated to match.") end end print("Current orientation flags:") print(" indeterminate: ", unit.status.current_soul.orientation_flags.indeterminate) print(" romance_male: ", unit.status.current_soul.orientation_flags.romance_male) print(" marry_male: ", unit.status.current_soul.orientation_flags.marry_male) print(" romance_female:", unit.status.current_soul.orientation_flags.romance_female) print(" marry_female: ", unit.status.current_soul.orientation_flags.marry_female) end