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