Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Rumrusher

Pages: 1 [2] 3 4 ... 411
16
slabs are artifacts and if you don't have them placed in a proper location which if I remember is like a display furniture like a display case or a pedestal sometimes a table in a civ zone the game wouldn't consider them placed in an area properly thus will be open to scattering about.
though the items should be scattered around the site and not totally gone for good.

17
DF Announcements / Re: Dwarf Fortress 50.11 Released
« on: October 03, 2023, 01:30:46 pm »
Quote
   (*) Ballista arrows etc. that chop down trees now count for treecap diplomacy
uhh weird question what does that etc. mean in this case like... different types of ballista?

oh does this just mean siege weapons being used to chop trees down now counts for treecap diplomacy?

18
DF Announcements / Re: Dwarf Fortress 50.10 Released
« on: September 19, 2023, 02:36:54 pm »
oh hey that settings bug where if you mess with the settings in game and exit out of the game, the game will switch to premium edition graphics on the next boot up is still in 50.10.

19

That was a fun tourney. Wanna thank everyone who participated in this thread and the contestants they entered into the event.

20
Utilities and 3rd Party Applications / Re: DFHack 50.09-r2
« on: August 11, 2023, 02:56:55 am »
Is there an easy way to clear the enemy status cache?

I'm a bit on a dead end to my old "corrupt enemies into friends" script. The script is simple and involve makeown, but it does not seem to clear hostility right. The targeted creatures walk through the fort before getting into a fight with what I believe to be specific units that see it as an enemy. Closing the save and reloading after running makeown prevent that issue.

I tried setting all the units cache slot to -1, setting the entire cache rel_map to -1 and slot_used to false. Got any idea what else I could do ?
ok so from my time messing with my own petition script uhh you might need to mess with the historical figure data as their relationship with the civ might be stained or with other folks.
like if someone remembers hey this person was part of another civ that tried to kill you, or 'remembers they were part of a raid to kill you' this might throw up some red flags and lead to an uneasy truce.

though I feel like the sending the person off on a mission and returning back should clear some of the checks.

21
so for the source HFID to work you might need a static world param seed where you generate the same historical deity that spawns vaults and make the vault angels and slot in creatures into that hist figure id.
oh and also figure out how to get hist fig id that contains the Source HFID which I guess dfhack or looking at the world dat/sav files and checking if the multiple saves you made with the same world param generated the same deity with the same historical figure id.
and then from there hope that the game accepts any creature with the tokens putnam said.

though this also might lead to the vault being filled with the custom creatures you added so be prepared for that when/if you bump into one of those in your travels.

though the generating a difficulty : 5 creature that is mundane is doable as I remember messing with this with dfhack and spawn a dwarf that just neutral and just roam about the surface... then I assigned the deity to the spawner and made a dwarf pop out with divine gear on and was a bit hostile as I think it also slotted them into a military position with the vault civ.

22
Went back and checked the tapes logs.... the few things that could stop dodging from working is if the dodger gets tired, so the beast held out the longest from bleeding out to stack on a bunch of whiff attacks that force Stimraug to dodge a bunch which probably led to a moment where the body grown too exhausted to keep it going thus the dodge skill dropped a bit(if I remember half?) until the grabs started happening which also prevents dodging so beast with like upgrade to 4 wrestler and some dodging could probably keep up the assault on someone who got the skill debuff from being exhausted.
Or this one faint practitioner of kisat dur opinions on how this fight went down. like whole bunch of dodging did happen at the start of the round but it doesn't last forever.

23
DF Adventure Mode Discussion / Re: Friendly night troll?
« on: August 08, 2023, 07:59:22 am »
so the night troll spouse possibly moved into the civ and pick up the ethics of the civ thus losing any drive to just kill folks for being a dangerous beast(and probably stayed there long after the fall of the civ if I throw out a hunch). due to how historical figures settle in to sites this is several mechanics working together to make a friendly night troll that lives in the sewers.
also I feel like Normal and DF don't really mix the game is surreal and most stories that come from it are from folks finding these interactions.
I had the experience of figuring out how to get a night troll or hostile sapient unit become non-hostile by convincing them to join a civ site mostly a player fort and just migrate themselves to the location in fort mode.
so I can see how if history had the night troll live in a site they probably settled down in the site and become part of the civ in a way pick up the ethics and upon loading the map the game went ok this unit is part of this site thus part of this civ so they will follow the civil ethics the site had.
 there also another chance you talk to them in an angle where they couldn't really see you and just having a nice convo with a voice they hear.
any way night trolls are sapient creatures so I don't consider them mindlessly hostile.

24

25

26
Utilities and 3rd Party Applications / Re: DFHack 50.09-r1
« on: July 07, 2023, 12:49:27 pm »
Spoiler: " gif showcase" (click to show/hide)
Code: (nomadfast.lua) [Select]
--script using warmist spellbook code to make a cheap gui for expanding and contracting a player fort.
-- this script is pretty dangerous in that it reveals the expanded map chunk, and when contracting it culls anyone in that map chunk.
-- so far probably best to use this with the void fort scripts as it allows one to expand and explore the world while keeping your site.
--oh warning if you're about to collapse a map chunk make sure to clear any stockpiles and civ zones you made in that map chunk.
--oh and don't retire unless you're back to the original fort embark size or the game will corrupt that fort and or crash.
--also it will take a while for any results to happen. I have no idea on speeding up the process.
--:edit 7/7/2023 this version of nomad script speeds up the process instantly due to messing with cur_season_ticks
--if you use this for some nomad playstyle best learn how to haul goods across map and burrowing folks.
--as you might lose folks while traveling.
 
local dlg=require("gui.dialogs")

function GoN()
local Site=df.global.plotinfo.main.fortress_site
local Nor=Site.global_min_y-1
Site.global_min_y=Nor
df.global.cur_season_tick=3999
end

function NoN()
local Site=df.global.plotinfo.main.fortress_site
local Nor=Site.global_min_y+1
Site.global_min_y=Nor
df.global.cur_season_tick=3999
end
function GoS()
local Site=df.global.plotinfo.main.fortress_site
local Sor=Site.global_max_y+1
Site.global_max_y=Sor
df.global.cur_season_tick=3999
end
function NoS()
local Site=df.global.plotinfo.main.fortress_site
local Sor=Site.global_max_y-1
Site.global_max_y=Sor
df.global.cur_season_tick=3999
end
function GoE()
local Site=df.global.plotinfo.main.fortress_site
local Eor=Site.global_max_x+1
Site.global_max_x=Eor
df.global.cur_season_tick=3999
end
function NoE()
local Site=df.global.plotinfo.main.fortress_site
local Eor=Site.global_max_x-1
Site.global_max_x=Eor
df.global.cur_season_tick=3999
end
function GoW()
local Site=df.global.plotinfo.main.fortress_site
local Wor=Site.global_min_x-1
Site.global_min_x=Wor
df.global.cur_season_tick=3999
end
function NoW()
local Site=df.global.plotinfo.main.fortress_site
local Wor=Site.global_min_x+1
Site.global_min_x=Wor
df.global.cur_season_tick=3999
end

function Go()
for k,v in pairs(df.global.world.armies.all) do
if v.flags[0]== true  then
local Nor=v.pos.y-1
v.pos.y=Nor
df.global.cur_season_tick=3999
end
end
end
function doNothing()
print("doing nothing real good but here have a site")
--require("plugins.dfusion.adv_tools").addSite(nil,nil,nil,nil,nil,nil,df.global.world.units.active[0].civ_id)
end
function doNothing2()
dlg.showMessage("Travel-Hack","Bypassing Message to access FastTravel")
df.global.ui_advmode.message=""
--require("plugins.dfusion.adv_tools").addSite(nil,nil,nil,nil,nil,nil,df.global.world.units.active[0].civ_id)
end

function greetAndStuff()
dlg.showMessage("Greetings", "Seasons greatings and lols")
end
MOVEMENT_KEYS = {
    A_CARE_MOVE_N = { 0, -1, 0 }, A_CARE_MOVE_S = { 0, 1, 0 },
    A_CARE_MOVE_W = { -1, 0, 0 }, A_CARE_MOVE_E = { 1, 0, 0 },
    A_CARE_MOVE_NW = { -1, -1, 0 }, A_CARE_MOVE_NE = { 1, -1, 0 },
    A_CARE_MOVE_SW = { -1, 1, 0 }, A_CARE_MOVE_SE = { 1, 1, 0 },
    --[[A_MOVE_N = { 0, -1, 0 }, A_MOVE_S = { 0, 1, 0 },
    A_MOVE_W = { -1, 0, 0 }, A_MOVE_E = { 1, 0, 0 },
    A_MOVE_NW = { -1, -1, 0 }, A_MOVE_NE = { 1, -1, 0 },
    A_MOVE_SW = { -1, 1, 0 }, A_MOVE_SE = { 1, 1, 0 },--]]
    A_CUSTOM_CTRL_D = { 0, 0, -1 },
    A_CUSTOM_CTRL_E = { 0, 0, 1 },
    CURSOR_UP_Z_AUX = { 0, 0, 1 }, CURSOR_DOWN_Z_AUX = { 0, 0, -1 },
    A_MOVE_SAME_SQUARE={0,0,0},
    SELECT={0,0,0},
}
ALLOWED_KEYS={
    A_MOVE_N=true,A_MOVE_S=true,A_MOVE_W=true,A_MOVE_E=true,A_MOVE_NW=true,
    A_MOVE_NE=true,A_MOVE_SW=true,A_MOVE_SE=true,A_STANCE=true,SELECT=true,A_MOVE_DOWN_AUX=true,
    A_MOVE_UP_AUX=true,A_LOOK=true,CURSOR_DOWN=true,CURSOR_UP=true,CURSOR_LEFT=true,CURSOR_RIGHT=true,
    CURSOR_UPLEFT=true,CURSOR_UPRIGHT=true,CURSOR_DOWNLEFT=true,CURSOR_DOWNRIGHT=true,A_CLEAR_ANNOUNCEMENTS=true,
    CURSOR_UP_Z=true,CURSOR_DOWN_Z=true,
}

listofspells={
{text="nothing", spell=doNothing,icon='*'},
{text="expand: North+", spell=GoN,key="CUSTOM_W"},
{text="expand: South+", spell=GoS,key="CUSTOM_S"},
{text="expand: East+", spell=GoE,key="CUSTOM_D"},
{text="expand: West+", spell=GoW,key="CUSTOM_A"},
{text="Contract: North-", spell=NoN,key="CUSTOM_T"},
{text="Contract: South-", spell=NoS,key="CUSTOM_G"},
{text="Contract: East-", spell=NoE,key="CUSTOM_H"},
{text="Contract: West-", spell=NoW,key="CUSTOM_F"},
}
 
dlg.showListPrompt("Directions","Choze Direct",nil, listofspells,function(index,choice) choice.spell() end)

ok so here's an updated version of nomad now with less waiting all thanks to cur_season_tick being set to 3999 and letting time progress to 4000
this does mean going through nomad fast might require seeing what happens if you mess with seasonal timers.

also here's an liquids gui edit for future proofing scripts with
the personal keyboard cursor gui script
Spoiler: gif showcase 2 (click to show/hide)

Code: (keyboardcursor.lua) [Select]
--keyboard cursor that uses the widget of gui/liquids as I don't know how to write widgets
--proof of concept for adding an extra keyboard cursor to df50 that doesn't rely on mining tools.

local gui = require('gui')
local guidm = require('gui.dwarfmode')
local widgets = require('gui.widgets')



local SpawnLiquidCursor = {
    [df.tile_liquid.Water] = dfhack.screen.findGraphicsTile('MINING_INDICATORS', 0, 0),
    [df.tile_liquid.Magma] = dfhack.screen.findGraphicsTile('MINING_INDICATORS', 1, 0),
    [df.tiletype.RiverSource] = dfhack.screen.findGraphicsTile('LIQUIDS', 0, 0),
}

SpawnLiquid = defclass(SpawnLiquid, widgets.Window)
SpawnLiquid.ATTRS {
    frame_title='Cursor Keyboard menu',
    frame={b = 4, r = 4, w = 50, h = 12},
}

function SpawnLiquid:init()
    self.type = df.tile_liquid.Water
    self.tile = SpawnLiquidCursor[self.type]

    self:addviews{
        widgets.Label{
            frame = {l = 0, t = 0},
            text = {{ text = self:callback('getLabel') }}
        },
        widgets.HotkeyLabel{
            frame = {l = 0, b = 1},
            label = 'does nothing',
            auto_width = true,
            key = 'KEYBOARD_CURSOR_LEFT',
            on_activate = self:callback('moveleft'),
            disabled = function() return self.level == 1 end
        },
        widgets.HotkeyLabel{
            frame = { l = 19, b = 1},
            label = 'also Does nothing',
            auto_width = true,
            key = 'KEYBOARD_CURSOR_RIGHT',
            on_activate = self:callback('moveright'),
            disabled = function() return self.level == 7 end
        },
        widgets.HotkeyLabel{
            frame = { l = 19, b = 1},
            label = 'also Does nothing',
            auto_width = true,
            key = 'KEYBOARD_CURSOR_UP',
            on_activate = self:callback('moveup'),
            disabled = function() return self.level == 7 end
        },
        widgets.HotkeyLabel{
            frame = { l = 19, b = 1},
            label = 'also Does nothing',
            auto_width = true,
            key = 'KEYBOARD_CURSOR_DOWN',
            on_activate = self:callback('movedown'),
            disabled = function() return self.level == 7 end
        },
        widgets.CycleHotkeyLabel{
            frame = {l = 0, b = 2},
            label = 'cursor color:',
            auto_width = true,
            key = 'CUSTOM_Q',
            options = {
                { label = "Water", value = df.tile_liquid.Water, pen = COLOR_CYAN },
                { label = "Magma", value = df.tile_liquid.Magma, pen = COLOR_RED },
                { label = "River", value = df.tiletype.RiverSource, pen = COLOR_BLUE },
            },
            initial_option = 0,
            on_change = function(new, _)
                self.type = new
                self.tile = SpawnLiquidCursor[new]
            end,
        },
    }
end

-- TODO: More reactive label dependant on options selected.
function SpawnLiquid:getLabel()
    return ([[Click on a tile to spawn a %s/7 level of %s]]):format(
        self.level,
        self.type == 0 and "Water" or self.type == 1 and "Magma" or "River"
    )
end

function SpawnLiquid:getLiquidLevel(position)
    local tile = dfhack.maps.getTileFlags(position)

    if self.mode == SpawnLiquidMode.ADD then
        return math.max(0, math.min(tile.flow_size + self.level, 7))
    elseif self.mode == SpawnLiquidMode.REMOVE then
        return math.max(0, math.min(tile.flow_size - self.level, 7))
    end

    return self.level
end

function SpawnLiquid:increaseLiquidLevel()
    self.level = math.min(self.level + 1, 7)
end

function SpawnLiquid:decreaseLiquidLevel()
    self.level = math.max(self.level - 1, 1)
end
function SpawnLiquid:moveleft()
    local move=df.global.cursor
move.x=move.x-1
end
function SpawnLiquid:moveright()
    local move=df.global.cursor
move.x=move.x+1
end
function SpawnLiquid:moveup()
    local move=df.global.cursor
move.y=move.y-1
end
function SpawnLiquid:movedown()
    local move=df.global.cursor
move.y=move.y+1
end

function SpawnLiquid:spawn(pos)
--local MapCure=df.global.gview.view.child
mouse_pos = dfhack.gui.getMousePos()
df.global.cursor.x=mouse_pos.x
df.global.cursor.y=mouse_pos.y
df.global.cursor.z=mouse_pos.z
end

function SpawnLiquid:getPen()
    return self.type == df.tile_liquid.Water and COLOR_BLUE or COLOR_RED, "X", self.tile
end

function SpawnLiquid:getBounds(start_position, end_position)
    return {
        x1=math.min(start_position.x, end_position.x),
        x2=math.max(start_position.x, end_position.x),
        y1=math.min(start_position.y, end_position.y),
        y2=math.max(start_position.y, end_position.y),
        z1=math.min(start_position.z, end_position.z),
        z2=math.max(start_position.z, end_position.z),
    }
end

function SpawnLiquid:onRenderFrame(dc, rect)
    SpawnLiquid.super.onRenderFrame(self, dc, rect)

    local mouse_pos = dfhack.gui.getMousePos()

    if self.is_dragging then
        if df.global.enabler.mouse_lbut == 0 then
            self.is_dragging = false
        elseif mouse_pos and not self:getMouseFramePos() then
            self:spawn(mouse_pos)
        end
    end

       guidm.renderMapOverlay(self:callback('getPen'), self:getBounds(
  self.area_first_pos or df.global.cursor, df.global.cursor
  ))
end

function SpawnLiquid:onInput(keys)
    if SpawnLiquid.super.onInput(self, keys) then return true end

    if keys._MOUSE_L_DOWN and not self:getMouseFramePos() then
        local mouse_pos = dfhack.gui.getMousePos()
            self:spawn()
end
end

SpawnLiquidScreen = defclass(SpawnLiquidScreen, gui.ZScreen)
SpawnLiquidScreen.ATTRS {
    focus_path = 'spawnliquid',
    pass_movement_keys = true,
    pass_mouse_clicks = false,
    force_pause = true,
}

function SpawnLiquidScreen:init()
    self:addviews{SpawnLiquid{}}
end

function SpawnLiquidScreen:onDismiss()
    view = nil
end

view = view and view:raise() or SpawnLiquidScreen{}:show()

oh and here's a script for telling where you are on the global min x and y coords of the site you're on the info shown is going off the top left corner of the map to the bottom right it probably best to not use this after changing the site's coords as the script looks at the site's current global min and max coords to get the second info from for the folks who dip into gui gm-editoring as their means to nomad around the world.

oh and this only works if the wagon is named Nomad as do most of my nomad scripts as it grabs the wagon's coords to check where it is on the game field embark space wise.
Code: (wagon-sense) [Select]
function wagon(curx,cury,curz)
for de,oe in pairs(df.global.world.buildings.other.WAGON) do
if oe.name == 'Nomad' then

local regionx=math.floor(oe.centerx/47)
local regiony=math.floor(oe.centery/47)
print("X region", regionx,
"Y region", regiony)
local site=df.global.plotinfo.main.fortress_site
print("X region + min", regionx + site.global_min_x,
"Y region + min", regiony + site.global_min_y )

end
end
end

wagon()
I think this is prime for folks to fully explore the worlds with their fort citizens... combine this with that force petition script and you could play out series of oregon trail like sessions.
usually with the nomad scripts
oh and uhh if you leave your starting location and you dig out a bunch of stuff in the process the game will undo any changes you did on a digging and construction wise, buildings are safe though. folks stored in cages that are stored in the wagon will stay in the wagon while you travel around the world.

getting mayors and nobles who like to stay in a room would make nomad playstyle a bit rough as you would be building up and tearing down their rooms while you prep to travel to a new location.
this playstyle does open up to some different challenges one could take on like the no-build run where you just strip mine the land and harvest the fields to trek to one of the dwarven fortress entrances that houses all workshops for you to use.
this also means no trading until you get to a trade depot this challenge is probably more rough if you play it with dwarves as the strange mood would mean ditching the dwarf to avoid the mood hit or dealing with staying at the dwarven fortress entrance longer for hoping to get that artifact built.

I just realize folks could build a magma pump that leads to a tunnel that pours the magma into the ocean to make an island then just settle their group on the island... and probably with a lil extra void fort set up sail the seas on their remote obsidian casts landmass and harvest all the fish from the sea.

27
Name: "Boogie Wonderland"

Race: Bogeyman (Size 50; points 220+?)

Skills:
Proficient Dodger 75
Competent Striker 30
Competent Biter 30
Competent Observation 30
Competent Wrestler 30
Novice Dancer 5

Total spent: 200

Background:
From parts unknown.

looking through this I feel like 47.05 era bogeymen in arena isn't really that static so outside of the werebeast transformation ordeal bogeymen naturally have and possibly the might DQ themselves if the tourney runner doesn't go through and slap on 'can_learn' on to all the larger animals in the raws to prevent them being used in the random transformation pool... you still got a randomly generated creature that might gain flight with wings or end up with flightless wings every time the tourney runner opens arena mode. also it might also be similar to the Minotaur scenario where they start with natural skills on top of what ever skills you slap on.
and I think the set combat skills they have is set to talented.
oh and on top of that their attack and recover is set to 2 so they are one tick faster in unarmed melee than most creatures in the game barring the other randomly generated creatures(though this is going off if they just fought you and not instantly shapeshifted since they shapeshift as a defense mechanism).



this is the stats of the bogeyman with the selected skills added on top of the natural skills they normally have.

As someone who probably like to see a bogeyman enter into this tourney, the process to see one get added in would require manipulating the entire creature raw pool to workaround the hardcoded nature of the 'under a kobold' size being and that doesn't cover the no exert bits meaning if the bogeyman survives combat long enough for the transformation timer runs out they get a full heal.
or extract the raws of a bogeyman to then edit that raw file to make them tournament legal which depends on how you do that. Do you keep the transformations or do you remove that and make them 44.12 era bogeymen with no natural skills or do you keep the natural skills and just reduce the points you get on building the character, or keep the transformation but set it to curated creature pool and remove the natural skills?

any way a bit more thought into the veto on bogeymen that would require a bunch of changes to get the appeal to go through.

28
DF Announcements / Re: Dwarf Fortress 50.09 Released
« on: June 29, 2023, 07:01:40 am »
Hmm ok so there's an oddity with the settings on classic as it forces you into premium graphics after messing with the settings and closing then restarting the game, the workaround to this is to make the changes you want in the data/init folder and possibly deleting the pref/init file or renaming it as it seems the rest of the pref folder files still work but the one that checks if you want ascii mode toggled on. hope this helps anyone on the classic build of DF50.09

29
Utilities and 3rd Party Applications / Re: DFHack 50.08-r4
« on: June 29, 2023, 05:44:02 am »
poppin in here to say the current Dfhack release does not respect classic build's settings of having ascii mode turn on.
some how the build just forces it self to check it off on start up... even though premium mode would load no art assets and have everything on screen be invisible.
outside of strangely enough some art assets like the grass and some floor tiles... the ui is also hidden outside of the text.


edit: ok so this some how is a vanilla issue which probably being look at... though this does open the door to figuring out a way to patch this with dfhack.

30
Utilities and 3rd Party Applications / Re: DFHack 50.08-r3
« on: June 19, 2023, 12:48:45 am »
Code: ("recruitorder.lua") [Select]
--this is a script that is a modified version of the recruit script as this doesn't randomly select a historical figure but choose one out of a list.
--for this to work you need to send someone off on a mission probably a safe one like exploring ruins and in the middle of the mission run this script.
-- it might take a few tries to see if it works but if you see two printed out messages showcasing the army id and the mission report info then it might have worked.
--oh it also reuses the campboat script for list gui functions   
local dlg=require("gui.dialogs")
function teleportboatnames2()
local Ark={}
for k,v in pairs(df.global.world.nemesis.all) do
BoaName=dfhack.TranslateName(v.figure.name)
table.insert (Ark,{dfhack.TranslateName(v.figure.name).." "..v.figure.name.nickname,nil,v,search_key = BoaName:lower()})
end
local f=function(Name,C)
  OrderRecruit(C[3])
end
dlg.showListPrompt("list of Nemesis havers","Select Being(s) to settle here",COLOR_WHITE,Ark,f,nil,nil,true)
end

function OrderRecruit(Nemes)
for de,oe in pairs(df.global.world.army_controllers.all) do
if oe.mission_report == nil then else
print ( de,oe.mission_report.title)
for e,o in pairs(df.global.world.armies.all) do
if oe.id == o.controller_id then
print (e)
local forv=df.global.world.armies.all[e].members[0]
df.global.world.armies.all[e].members:insert("#",{new=true,nemesis_id=Nemes.id,
stored_fat = forv.stored_fat,
unk_2c= forv.unk_2c,
unk_28= forv.unk_28,
unk_1= forv.unk_1,
unk_30= forv.unk_30,
unk_34= forv.unk_34})
end
end
end
end
end

teleportboatnames2()
ok so here's a modified version of the old recruit script for targeting one nemesis having hist fig in the world.
hmm ok it seems this script will just shove the historical figure into any squad in an active mission so I don't know if this would dupe the being if you have 2 armies out or insert them into a conquer attempt and accidentally migrated someone to a new site?  still don't know if this is stable so user beware on save stability.

Code: ("recruit-inhabitants.lua") [Select]
--modification of the recruit script that uses the squad option in armies to pad out your army troops and to summon 30 unknown no name units at your enemies and possibly sending them back to you.
--these are inhabitants beings with no historical figures so if you got a script that could give them one or retire you're probably going to have some troubles getting them army ready.
--this script requires the squad to be mid mission to work if you don't see 2 printed info then it didn't stick.
function RecruitInhabit(Nemes)
for de,oe in pairs(df.global.world.army_controllers.all) do
if oe.mission_report == nil then else
print ( de,oe.mission_report.title)
for e,o in pairs(df.global.world.armies.all) do
if oe.id == o.controller_id then
print (e)
local forv=df.global.world.armies.all[e].members[0]
local long=df.global.world.nemesis.all[forv.nemesis_id].unit.population_id
df.global.world.armies.all[e].squads:insert("#",{new=true,count=30,race=df.global.plotinfo.race_id,population_id=long,entity_id=df.global.plotinfo.civ_id})
end
end
end
end
end

RecruitInhabit()
edit ok so here's another script that uses a modified recruit script to instead fill out the army's squad data with inhabitants... this holds potential for putting any creature in the game and any creature with any interaction.
so someone could return to the fort with like an army of necromancers or revenants/intel undead... or zombies/werebeasts (and just ruin your fort's day.)
this messes with the inhabitant mechanic that towns uses to pad out the place so these beings returning to the site will be historical figureless citizens that would require figuring out a way to get them historical figures either by having them kill a historical figure in self defense or retiring and unretiring the place... which may or may not also require them to petition to join the fort which also takes like 2 in-game years to pull off. or use a script that speeds up that process.

Pages: 1 [2] 3 4 ... 411