Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Schedule a holiday  (Read 1189 times)

Erk

  • Bay Watcher
    • View Profile
Schedule a holiday
« on: January 03, 2023, 12:54:54 pm »

Recently I've been making more of a habit of micromanaging my dwarves' jobs to encourage them to take breaks. It frustrates me that this is something they want, but that they won't do themselves (X feels frustrated at not seeing friends, etc). I think there's an increasing need to be able to mandate particular holidays for our dwarves, either as a one-off or as a recurring event. I suggest:

1. First pass: set a holiday.
Pick a calendar date to start and stop. During this time dwarves will only take "idle" jobs (prayer, parties, eating, drinking, etc). Military dwarves stop training but follow other orders. The holiday should have an option to occur once, or recur annually, and should get a procgen name ("the feasts of shaming" here we come).

2. Second pass: job filters
Once the basic framework for getting dwarves to take a break is in we should have filters for certain jobs that still get done. For example, I think most forts would like people to still do Orderly and medical labours on holiday, but sometimes we might want to make sure everyone, even the nurses, gets a break. This might also allow us to choose whether or not military dwarves get a break from training. in my fort I'd leave food hauling on, eg. If a dwarf misses a holiday because they wind up working extra labours, they might have a chance to get a bad thought and memory.

There's a few ways this could be done... Maybe we micromanage which labours are done on which holiday, or maybe each labour detail has a tick box for "observe holidays", and if ticked then that labour disables when the holidays do. I prefer doing it by detail myself, generally, but there's a lot to be said for allowing just your haulers or just your fisher dwarves to get a break, and that would be a feature that requires each holiday to be able to be set individually. Perhaps it should be still done via the work details window, where you can click "observe holidays" or expand to specify which holidays a particular detail is disabled by. Similarly, I think squads should have an "observe holidays" ticky box so that we can keep our trainee squads working hard through dwarfmas because they need to be ready for goblins.

I think this step of implemention is probably needed for the feature to be player released. Steps 3 and 4 would be fun but are flavour, it's feature-complete at this point for playability.

3. Observance details
Next pass is to integrate holidays into dwarf culture. We should be able to define a number of historical events or individuals commemorated by a holiday, and (optionally) associate it with particular materials and foods as well. For example, "The Feasts of Shaming" could commemorate the founding of the fortress Shieldwax and be associated with crowns, nickel, and plump helmet wine. Dwarves will preferentially seek these objects and materials during the festival, and get extra happy thoughts for them. Being unable to get a particular associated food or material should generate a minor bad thought ("Couldn't properly celebrate the Feasts of Shaming without a crown"). This should help discourage players from over-stacking associated materials. However, personally, I think the idea of the Feasts of Shaming ending with your fort drained of plump helmet wine and the meeting hall littered with crowns and sterling silver trinkets that the dwarves discarded as the festival ended is delightful. On the other hand, a simple break from work doesn't need any such associations and will then give no significant extra happy thoughts, but will at least let our dwarves take a dang break.

Three specific types of festivals would be religious, memorial, and trade. Religious festivals are associated with a deity as their historical figure. If you have a temple to that deity, the festival will take place there. Dwarves who follow that deity will get extra happy thoughts, but may get a bad memory for missing. The materials for the festival should be limited to symbols associated with the deity's spheres.

If the festival is a memorial, dwarves who knew the memorialized entity may get extra happy thoughts for participating in a festival dedicated to their friend, or the festival might help reduce bad memories from their death (and vice versa for missing it). This allows us to throw funerals, or even grand annual celebrations of life for that epic hammerdwarf that sacrificed herself against the swamp titan. The choices for materials for the festival should be limited to those that were in the memorialized entity's preferences.

If the festival is dedicated to a trade, it takes place in their guildhall, and associated labour must be disabled automatically. Guild members get extra happiness but also they might put on little demonstrations during the festival, giving attendees a bit of xp in whatever trade is relevant. I think it would be hard to limit materials for this to appropriate ones without making new RAW lists, but it would be very nice if the individual possibilities for guilds had their own lists of appropriate festival symbols.

4. Later developments
Going forward we might see randomly generated festivals in adventure mode, or festivals that are associated with a civilization that are prearranged when you get your fort. It could also be interesting to have other subtypes like "military" which comes with a parade, or "artifact" where dwarves gather around an artifact and commemorate its creation. The same code on a smaller scale might be used to get dwarves to celebrate personal achievements: perhaps there could be random "hidden"festivals dwarves create for themselves for their own personal achievements, which they'd invite friends to. That would probably integrate with the "throw a party" mechanic so that we'd know what the party was about.

For example, a dwarf might set up their own annual party to:
- commemorate the birth of a child or death of a loved one
- celebrate the time they made an artifact or their first masterpiece item
- celebrate killing a particular foe
- remember getting appointed to a position
- sit alone in the inn drinking and dwelling on a recurring bad memory
- remember the time they named an item

The likelihood of this happening would have to be defined by the dwarf's traits, and so would the duration and number of parties. Dwarves with a low work ethic or a high preference for memorializing things may wind up developing a roster of annual celebrations they honour for a few days at a time; this would make them less effective workers, but also, would make them naturally less likely to become frustrated at being overworked.

It might be reasonable to have the dwarf's personal festivals listed somewhere in their examine window, and allow us to toggle certain ones off; if we do so, though, that dwarf should get a fairly significant bad thought for being forced to work through it.
« Last Edit: January 03, 2023, 01:32:15 pm by Erk »
Logged
'River' cancels eat: Food is problematic.

Afghani84

  • Bay Watcher
    • View Profile
Re: Schedule a holiday
« Reply #1 on: January 23, 2023, 03:22:11 pm »

Interesting idea. Not sure how much work this would be in terms of coding. We would also have to find the perfect balance for this feature to be relevant but not take up too much time each year.

Initially, I'd hope for a "quick" fix where dwarves will simply deny further work details when they need their time off work. Bad thoughts should only occur when you manually force them to work anyway, i.e. forced orders. That would alleviate the issue with unhappy dwarves (due to overworking) without the need for micromanagement.
Logged

kynadre

  • Escaped Lunatic
    • View Profile
Re: Schedule a holiday
« Reply #2 on: January 25, 2023, 09:48:30 pm »

Usually how I handle this is to take all my dwarves in their squads (and every dwarf is in a squad, except miners/woodcutters),

and set up a "rotation" schedule
with 1 month to train (for craftdwarves) every 3 months,
or 1 month to not train (for military dwarves) every 3 months.

Over the summer every year, I de-assign everyone from the armor rack so they're forced to socialize and pray and whatnot.

For civilians, this is for 3 months (since they're on rotation to "train" one month in that timeframe).

For military Dwarves, this is for 2 months (just to make sure of things, also since they may have a time off in there).
Logged

jecowa

  • Bay Watcher
    • View Profile
Re: Schedule a holiday
« Reply #3 on: January 27, 2023, 01:20:12 am »

You can sort of do holidays with burrows. Make a burrow that only allows them to visit recreational areas like the tavern/dining hall, temple, and library. Turn the burrow on when you want to have a holiday.
Logged

jipehog

  • Bay Watcher
    • View Profile
Re: Schedule a holiday
« Reply #4 on: January 30, 2023, 12:01:39 pm »

I love the idea of holidays and expansion of group and individual activities. Thoughts on implantation:

(1) It is hard to talk about annual holidayS within DF peculiar time scale can really disrupt fort productivity. Possible solutions:
* Instead of mandating people to not work for a month, have a couple of month of festivities declared in a location (temple for example) which people will prefer to attend at their own idle time, with possible bonuses.
* Instead of annual holidayS have an mayor event you can choose to enact when suitable e.g. commemorate those fallen to the recent attack.

(2) job filters will be hard todo with current approach of UI streamlining.

(3) Dwarf setting up their own annual party sound like a good idea in its own right.
« Last Edit: January 30, 2023, 12:46:28 pm by jipehog »
Logged

Resmisal

  • Bay Watcher
    • View Profile
Re: Schedule a holiday
« Reply #5 on: January 30, 2023, 07:45:16 pm »

Scheduling holidays sounds like a great idea. Besides generated holidays demanding issuing your own for the dwarves can and should come with both free days and festive days such as actively participating in a parade. Make your lackeys citizens linger around or march to the tune of their ruler: you.

Otherwise, making in-game days last for 24 seconds would be more than enough to see a little celebration or commemoration.
Logged

jecowa

  • Bay Watcher
    • View Profile
Re: Schedule a holiday
« Reply #6 on: January 31, 2023, 01:20:49 am »

By default (100 fps), an in-game day lasts 12 seconds. If turn the holiday into a holiweek (like Sukkot, Golden Week, and Holy Week), it would instead last 84 seconds. If you made them holimonths (like Ramadan), they would last 5 minutes and 36 seconds.
Logged

jipehog

  • Bay Watcher
    • View Profile
Re: Schedule a holiday
« Reply #7 on: January 31, 2023, 04:18:09 pm »

When I say time scale in DF is weird, I mean that many daily task like drinking, eating and sleeping (and presumably praying) are often done once every few months.

In case of some mandate activity, you should also consider the time it would take everyone to finish their current task (assuming no cancelation) and reach the location. I remember early on, my military dwarfs often spent a lot of time waiting for all the participants to begin demonstrations, until started utilizing a more optimized layout an changed my schedule to combine train/free periods to have less "shift changes" in between.
Logged

impala

  • Bay Watcher
    • View Profile
Re: Schedule a holiday
« Reply #8 on: February 09, 2023, 06:44:34 am »

I think this would be a good system too as it is. And the dwarves should definitely want to make petitions to celebrate a holiday in the name of, say, the king or holiday of their own church.

Anyway, as I was thinking on this from the perspective of daily schedules (and as jecowa already noted), having a in-game day off wouldn't be enough, as the dwarf would have time only to run home, and the day could be over.

One other option to the problem you described tho could be to simulate a whole "day" over the period of a season. The dwarves could wake up from a 2 day-long sleep, go have a breakfast with their family/ at the tavern, pick up the supplies for the dinner and the day's work (to avoid having to run all across the fort just to do those) and then get to work. In the evening (last month of the season) they could gather at the tavern together, go to the temple and library and whatnot. And of course you could schedule night-shifts and whatnot to maintain a work-force/guard throughout the year.
Logged