Well, whaddya know? The little guy made it to the 2.5 year mark.
I was really worried that he'd be lonely, so I figured a little Science might be in order. I'll share the results when everyone makes it through the 10 years.
Here are the deviations from the provided settings. I don't know if any of this will work as intended, but the goal is to lower the population limit on a variety of challenges so that a solo dwarf will still have a chance of seeing them.
None of these appear to affect the generated world at all, but things might turn out a bit more interesting in Fortress Mode.
World generation:
Set Titan Attack Population Requirement to 1. Maybe something interesting will wander into the fortress at teatime?
creature_standard.txt
Reduce population requirement for attacks by setting [ATTACK_TRIGGER:1:x:x], leaving the x's unchanged from the original value. Can't let him miss out on the Fun just because the fort is a bit short on population, right?
entity_default.txt
Lower the siege population thresholds to [PROGRESS_TRIGGER_POP_SIEGE:0] and raise the siege production threshold [PROGRESS_TRIGGER_PROD_SIEGE:3] where applicable.
I also discovered that the [POPULATION_CAP:1] is basically ignored. You can disable migrants AND caravans/liasons by removing all [ACTIVE_SEASON:x] tags from your entity type. But even though these raws were pre-modded to remove all active seasons except for AUTUMN from dwarves, migrants still come annoyingly year-round. Removing that tag during the game works and is reversible, so it's a decent option.
I haven't found a mention of a way to prevent migrants while leaving caravans enabled. I WAS able to make a little .lua script for dfhack that will prevent migrants from coming for the rest of the current season. You have to run it every season that you want to prevent migrants, though.
I don't feel that this is cheating for a Hermit game, because all they do is require endless tedious suicide/murder and burial/slabbing, drain FPS with piles of clothing and body parts, and depopulate the home civilization. I consider this a legitimate workaround to the bug of population not working if set to 1.
stopmigrants.lua:
num_events = #df.global.timed_events
migrants_found = false
for ii = 0,(num_events-1) do
if df.global.timed_events[ii].type == df.timed_event_type.Migrants then
curr_tick = df.global.cur_season_tick
event_dt = df.global.timed_events[ii].season_ticks - df.global.cur_season_tick
print("Migration Event found in " .. event_dt .. " ticks. Deleting it")
df.global.timed_events:erase(ii)
migrants_found = true
break
end
end
if migrants_found == false then
print("No immigrants are scheduled to arrive this season.")
end
If you copy that code into a text file and save it as stopmigrants.lua in your \hack\scripts\ subdirectory, then you can type stopmigrants into dfhack and it will run. That puts off the horde of immigrants for a little while, at least!
EDIT 12/3: Hit the five year mark, also. A relatively boring, safe stretch that plays quickly.
EDIT 12/6: Passed the 7.5 year mark. A few Science results are in:
The above lua script DOES stop migrants if run at the start of each Spring/Summer/Autumn. It does not appear to corrupt anything over several years of use. I'm still unaware of a zero-maintenance permanent solution.
Setting [ATTACK_TRIGGER:1... in the appropriate places in creature_standard.txt DOES bring the relevant Uninvited Guests to visit! This definitely increases the hermit Fun! Thankfully, the swarms of undead finger bones and heads and such distracted my visitor long enough to throw up some defenses against building destroyer:2's. "Guard Cat" is still the first line of defense, which is fine for thieves. It's less great for semi-megabeasts.
Also, Guard Cat has taken over writing the fortress diary, since Hermit McBoring hasn't really left the danger/swimming room in years. Gotta get his strength/agility up to the point where he can start getting work done in a less painfully slow fashion. Maybe production values will get high enough to get some sieges and titans, then! Poor Guard Cat.