Re: (PR#12869) the happiness system
"Jason Short" <[email protected]> Sat, 23 Apr 2005 09:49:43 -0700
| Newsgroups | gmane.games.freeciv.devel,gmane.games.freeciv.data |
|---|---|
| Message-ID | <[email protected]> |
<URL: http://bugs.freeciv.org/Ticket/Display.html?id=12869 > Benoit Hudson wrote: > <URL: http://bugs.freeciv.org/Ticket/Display.html?id=12869 > > > In PR#9480, Jason said: > >>In general, I don't fully understand how happiness, celebration, >>unhappiness, and disorder work. I know I've said this before, but: is >>there some documentation on this that anyone can point me to? > > > I don't know of any, but attached is a document. Note the TODO: > I don't understand angry citizens. Ok, this explains the logic of changing citizen contentness levels. Which is good, except it doesn't include angry citizens or specialists. However I knew all this. This stuff is actually not that complicated since it's all contained within the generic_city_refresh. My quesions are about the rules for celebration or disorder. Basically, celebration and disorder just seem asymmetrical. And these rules are split between the city.c code and the end-of-turn server code. The client also knows something but it seems not very much. 1. If enough people in the city are happy, then the city is "happy". city_happy returns true. Happiness status changes instantly as citizens are moved between jobs. 2. If enough people are unhappy, then the city is "unhappy". city_unhappy returns true. Unhappiness is also instant. Unhappiness is equivalent to disorder. An unhappy city gets some penalties, for instant to output production, which are continuous effects (e.g., gold/science/shield penalty). There are also some events/actions within the end-of-turn handling that are dependent on disorder (revolution-when-disorder). 3. If the city is happy for enough turns (rapturedelay) it will go into celebration. Celebrating cities get certain bonuses (rapture or enhanced output). Celebrating status changes only at the end of a turn and lasts through the next turn (after which it is rechecked). Is this correct? -jason