so, here’s some stuff about how villagers in #ACNH move out. this info was collected from the code in 1.2.0, but to my knowledge, the behaviour in 1.2.1 has not changed at all

you must have at least 6 villagers living on your island before any will consider moving out
on a given day, the % chance of somebody asking to move is given by (v * 5) + c, where v is the amount of villagers you have, and c is the 'MoveOutTalkCount', the amount of days since you last told a villager to leave or stay (maxing at 30)

there's a couple of conditions on that
there is a 5-day cooldown after telling a villager to leave or stay - so nobody will ask to move if MoveOutTalkCount <= 5

there is a 15-day cooldown starting on the day the villager has left the island and freed up the plot (this is called the 'MoveOutSkipCount')
if these checks pass, a random villager will be picked who will ask to move out

each villager's chance is based on friendship and calculated by floor((300 - a) / 10) - r

a = average friendship they have with all island residents
r = amount of residents with >200 friendship
friendship is 0-255 (starting at 25), so this starts at 27 for new villagers, going down with higher friendship levels

villagers will be excluded if:
- house is being moved
- birthday was in the last 7 days
- they were picked last time and told to stay
- moved in most recently*
because of anecdotal evidence from people, I wasn't 100% sure about the last point, which is why I've held off for so long on talking about this topic

but it's certainly *supposed* to be the most recent one; the variable is called NewestVillagerIndex
and in 1.2.0, I can't find a way to make it go out of sync - perhaps there was a bug in older versions that got fixed?

either way, that's it. there is no magic method to make villagers move out, sorry. you can manipulate it _slightly_ but it's still heavily chance-based.
you can avoid the 5-day cooldown after telling someone to stay by not initiating the conversation (or by resetting the game before telling them to stay)

the next day, the game will consider letting someone else ask to leave, using the (v * 5) + c % chance I described above
so, fun fact as to why this was so difficult

I have hashes for every field name in the save file, including ‘NewestVillagerIndex’

I didn’t crack it until I switched my desktop’s OS because, for some reason, the word ‘newest’ is not in /usr/share/dict/words on MacOS
You can follow @_Ninji.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: