[Freeciv-Dev] Angry citizen [PATCH UPDATED] (PR#656)
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
Hi All!,
This is an update of my patch that introduces angry citizen, like in civ
II.
For Raimar : I've tried to rework the patch with the hints you gave me.
Take a look at it.
Thank in advance.
Ciao, Davide diff -urN -Xfreeciv/diff_ignore freeciv-orig/client/cityrepdata.c
freeciv/client/cityrepdata.c
--- freeciv-orig/client/cityrepdata.c Wed Jun 27 13:37:59 2001
+++ freeciv/client/cityrepdata.c Mon Sep 10 13:23:56 2001
@@ -74,10 +74,11 @@
static char *cr_entry_workers(struct city *pcity)
{
static char buf[32];
- my_snprintf(buf, sizeof(buf), "%d/%d/%d",
+ my_snprintf(buf, sizeof(buf), "%d/%d/%d/%d",
pcity->ppl_happy[4],
pcity->ppl_content[4],
- pcity->ppl_unhappy[4]);
+ pcity->ppl_unhappy[4],
+ pcity->ppl_angry[4]);
return buf;
}
@@ -200,8 +201,8 @@
FUNC_TAG(hstate_verbose) },
{ 0, 1, 1, NULL, NULL, N_("Concise *=Rapture, X=Disorder"),
FUNC_TAG(hstate_concise) },
- { 1, 8, 1, N_("Workers"), N_("H/C/U"),
- N_("Workers: Happy, Content, Unhappy"),
+ { 1, 10, 1, N_("Workers"), N_("H/C/U/A"),
+ N_("Workers: Happy, Content, Unhappy,
Angry"),
FUNC_TAG(workers) },
{ 0, 7, 1, N_("Special"), N_("E/S/T"),
N_("Entertainers, Scientists, Taxmen"),
diff -urN -Xfreeciv/diff_ignore freeciv-orig/client/gui-gtk/citydlg.c
freeciv/client/gui-gtk/citydlg.c
--- freeciv-orig/client/gui-gtk/citydlg.c Sat Aug 25 13:56:15 2001
+++ freeciv/client/gui-gtk/citydlg.c Mon Sep 10 13:32:42 2001
@@ -1522,6 +1522,12 @@
i*width, 0, TRUE);
}
+ for (n=0; n<pcity->ppl_angry[4]; n++, i++) {
+ gtk_pixcomm_copyto(GTK_PIXCOMM(pdialog->citizen_pixmap),
+ get_citizen_sprite(9 + i%2),
+ i*width, 0, TRUE);
+ }
+
for (n=0; n<pcity->ppl_unhappy[4]; n++, i++) {
gtk_pixcomm_copyto(GTK_PIXCOMM(pdialog->citizen_pixmap),
get_citizen_sprite(7 + i%2),
diff -urN -Xfreeciv/diff_ignore freeciv-orig/client/packhand.c
freeciv/client/packhand.c
--- freeciv-orig/client/packhand.c Sun Sep 9 07:59:06 2001
+++ freeciv/client/packhand.c Mon Sep 10 13:23:56 2001
@@ -21,6 +21,7 @@
#include <assert.h>
#include "capstr.h"
+#include "capability.h"
#include "events.h"
#include "fcintl.h"
#include "game.h"
@@ -316,6 +317,9 @@
pcity->size=packet->size;
for (i=0;i<5;i++) {
+ if (has_capability("angrycitizen", aconnection.capability))
+ pcity->ppl_angry[i]=packet->ppl_angry[i];
+ else pcity->ppl_angry[i]=0;
pcity->ppl_happy[i]=packet->ppl_happy[i];
pcity->ppl_content[i]=packet->ppl_content[i];
pcity->ppl_unhappy[i]=packet->ppl_unhappy[i];
diff -urN -Xfreeciv/diff_ignore freeciv-orig/client/tilespec.c
freeciv/client/tilespec.c
--- freeciv-orig/client/tilespec.c Fri Aug 24 15:19:17 2001
+++ freeciv/client/tilespec.c Mon Sep 10 13:23:56 2001
@@ -456,6 +456,8 @@
SET_SPRITE(citizen[6], "citizen.happy_1");
SET_SPRITE(citizen[7], "citizen.unhappy_0");
SET_SPRITE(citizen[8], "citizen.unhappy_1");
+ SET_SPRITE(citizen[9], "citizen.angry_0");
+ SET_SPRITE(citizen[10], "citizen.angry_1");
SET_SPRITE(spaceship.solar_panels, "spaceship.solar_panels");
SET_SPRITE(spaceship.life_support, "spaceship.life_support");
diff -urN -Xfreeciv/diff_ignore freeciv-orig/client/tilespec.h
freeciv/client/tilespec.h
--- freeciv-orig/client/tilespec.h Tue Aug 7 13:55:51 2001
+++ freeciv/client/tilespec.h Mon Sep 10 13:23:56 2001
@@ -66,7 +66,7 @@
(!!(e))*BIT_EAST | (!!(w))*BIT_WEST)
#define NUM_TILES_PROGRESS 8
-#define NUM_TILES_CITIZEN 9
+#define NUM_TILES_CITIZEN 11
#define NUM_TILES_HP_BAR 11
#define NUM_TILES_DIGITS 10
diff -urN -Xfreeciv/diff_ignore freeciv-orig/common/capstr.c
freeciv/common/capstr.c
--- freeciv-orig/common/capstr.c Sun Sep 9 07:59:14 2001
+++ freeciv/common/capstr.c Mon Sep 10 13:29:54 2001
@@ -71,7 +71,7 @@
*/
#define CAPABILITY "+1.11.6 conn_info pop_cost turn attributes new_bonus_tech"\
-" fund_added"
+" fund_added angrycitizen"
/* "+1.11.6" is protocol for 1.11.6 beta release.
@@ -90,6 +90,10 @@
like A_PHILOSOPHY
"fund_added" introduces support for fundamentalism form of government.
+
+ "angrycitizen" introduces angry citizens, like those in civilization II
+ they counts as 2 unhappy citizens, they are saved in ppl_angry[], and
+ you must dealt with them before any citizens in a city can become unhappy.
*/
void init_our_capability(void)
diff -urN -Xfreeciv/diff_ignore freeciv-orig/common/city.c freeciv/common/city.c
--- freeciv-orig/common/city.c Sun Sep 9 07:59:14 2001
+++ freeciv/common/city.c Mon Sep 10 13:34:32 2001
@@ -1460,6 +1460,7 @@
**************************************************************************/
static void happy_copy(struct city *pcity, int i)
{
+ pcity->ppl_angry[i + 1] = pcity->ppl_angry[i];
pcity->ppl_unhappy[i + 1] = pcity->ppl_unhappy[i];
pcity->ppl_content[i + 1] = pcity->ppl_content[i];
pcity->ppl_happy[i + 1] = pcity->ppl_happy[i];
@@ -1475,7 +1476,11 @@
workers = pcity->size - city_specialists(pcity);
tmp = content_citizens(city_owner(pcity));
pcity->ppl_content[0] = MAX(0, MIN(workers, tmp));
- pcity->ppl_unhappy[0] = workers - pcity->ppl_content[0];
+ if (game.angrycitizen == 0)
+ pcity->ppl_angry[0] = 0;
+ else
+ pcity->ppl_angry[0] = MIN(MAX(0, -tmp), pcity->size);
+ pcity->ppl_unhappy[0] = workers - pcity->ppl_content[0] -
pcity->ppl_angry[0];
pcity->ppl_happy[0] = 0; /* no one is born happy */
}
@@ -1486,9 +1491,16 @@
{
int x = pcity->luxury_total;
happy_copy(pcity, 0);
- /* make people happy, content are made happy first, then unhappy content,
- etc. each conversions costs 2 luxuries. */
- while (x >= 2 && (pcity->ppl_content[1])) {
+ /* make people happy:
+ angry citizen are eliminated first,
+ then content are made happy, then unhappy content, etc.
+ each conversions costs 2 luxuries. */
+ while (x >= 2 && pcity->ppl_angry[1]) {
+ pcity->ppl_angry[1]--;
+ pcity->ppl_unhappy[1]++;
+ x -= 2;
+ }
+ while (x >= 2 && pcity->ppl_content[1]) {
pcity->ppl_content[1]--;
pcity->ppl_happy[1]++;
x -= 2;
@@ -1496,7 +1508,6 @@
while (x >= 4 && pcity->ppl_unhappy[1]) {
pcity->ppl_unhappy[1]--;
pcity->ppl_happy[1]++;
-/* x-=2; We can't seriously mean this, right? -- Syela */
x -= 4;
}
if (x >= 2 && pcity->ppl_unhappy[1]) {
@@ -1512,26 +1523,24 @@
**************************************************************************/
static void citizen_happy_units(struct city *pcity, int unhap)
{
- int step;
-
+ while (unhap > 0 && pcity->ppl_content[3]) {
+ pcity->ppl_content[3]--;
+ pcity->ppl_unhappy[3]++;
+ unhap--;
+ }
+ while (unhap >= 2 && pcity->ppl_happy[3]) {
+ pcity->ppl_happy[3]--;
+ pcity->ppl_unhappy[3]++;
+ unhap -= 2;
+ }
if (unhap > 0) {
- step = MIN(unhap, pcity->ppl_content[3]);
- pcity->ppl_content[3] -= step;
- pcity->ppl_unhappy[3] += step;
- unhap -= step;
- if (unhap > 0) {
- step = MIN((unhap / 2), pcity->ppl_happy[3]);
- pcity->ppl_happy[3] -= step;
- pcity->ppl_unhappy[3] += step;
- unhap -= step * 2;
- if ((unhap > 0) && pcity->ppl_happy[3]) {
- pcity->ppl_happy[3]--;
- pcity->ppl_content[3]++;
- unhap--;
- }
- }
+ if (pcity->ppl_happy[3] > 0) { /* 1 unhap left */
+ pcity->ppl_happy[3]--;
+ pcity->ppl_content[3]++;
+ unhap--;
+ }
+ /* everyone is unhappy now, units don't make angry citizen */
}
- /* MAKE VERY UNHAPPY CITIZENS WITH THE REST, but that is not documented */
}
/**************************************************************************
@@ -1554,6 +1563,13 @@
faces += get_colosseum_power(pcity);
if (city_got_effect(pcity, B_CATHEDRAL))
faces += get_cathedral_power(pcity);
+ /* make people content (but not happy):
+ get rid of angry first, then make unhappy content. */
+ while (faces && pcity->ppl_angry[2]) {
+ pcity->ppl_angry[2]--;
+ pcity->ppl_unhappy[2]++;
+ faces--;
+ }
while (faces && pcity->ppl_unhappy[2]) {
pcity->ppl_unhappy[2]--;
pcity->ppl_content[2]++;
@@ -1596,18 +1612,26 @@
bonus += 2;
if (city_affected_by_wonder(pcity, B_CURE))
bonus += 1;
+ /* get rid of angry first, then make unhappy content */
+ while (bonus && pcity->ppl_angry[4]) {
+ pcity->ppl_angry[4]--;
+ pcity->ppl_unhappy[4]++;
+ bonus--;
+ }
while (bonus && pcity->ppl_unhappy[4]) {
pcity->ppl_unhappy[4]--;
pcity->ppl_content[4]++;
bonus--;
}
if (city_affected_by_wonder(pcity, B_SHAKESPEARE)) {
- pcity->ppl_content[4] += pcity->ppl_unhappy[4];
+ pcity->ppl_content[4] += pcity->ppl_unhappy[4] + pcity->ppl_angry[4];
pcity->ppl_unhappy[4] = 0;
+ pcity->ppl_angry[4] = 0;
}
if (government_has_flag(get_gov_pcity(pcity), G_NO_UNHAPPY_CITIZENS)) {
- pcity->ppl_content[4] += pcity->ppl_unhappy[4];
+ pcity->ppl_content[4] += pcity->ppl_unhappy[4] + pcity->ppl_angry[4];
pcity->ppl_unhappy[4] = 0;
+ pcity->ppl_angry[4] = 0;
}
}
@@ -1731,9 +1755,17 @@
}
unit_list_iterate_end;
city_units *= g->martial_law_per;
- city_units = MIN(city_units, pcity->ppl_unhappy[3]);
- pcity->ppl_unhappy[3] -= city_units;
- pcity->ppl_content[3] += city_units;
+ /* get rid of angry first, then make unhappy content */
+ while (city_units > 0 && pcity->ppl_angry[3]) {
+ pcity->ppl_angry[3]--;
+ pcity->ppl_unhappy[3]++;
+ city_units--;
+ }
+ while (city_units > 0 && pcity->ppl_unhappy[3]) {
+ pcity->ppl_unhappy[3]--;
+ pcity->ppl_content[3]++;
+ city_units--;
+ }
}
/* loop over units, subtracting appropriate amounts of food, shields,
@@ -1745,7 +1777,7 @@
int food_cost = utype_food_cost(ut, g);
int gold_cost = utype_gold_cost(ut, g);
- /* Save old values so ve can decide if the unit info should be resent */
+ /* Save old values so we can decide if the unit info should be resent */
int old_unhappiness = this_unit->unhappiness;
int old_upkeep = this_unit->upkeep;
int old_upkeep_food = this_unit->upkeep_food;
diff -urN -Xfreeciv/diff_ignore freeciv-orig/common/city.h freeciv/common/city.h
--- freeciv-orig/common/city.h Fri Sep 7 07:56:08 2001
+++ freeciv/common/city.h Mon Sep 10 13:23:56 2001
@@ -212,6 +212,7 @@
ppl_*[2] is distribution after after building effects.
ppl_*[3] is distribution after units enfored martial order.
ppl_*[4] is distribution after wonders. (final result.) */
+ int ppl_angry[5]; /* angry citizen */
int ppl_happy[5], ppl_content[5], ppl_unhappy[5];
/* Specialists */
diff -urN -Xfreeciv/diff_ignore freeciv-orig/common/game.c freeciv/common/game.c
--- freeciv-orig/common/game.c Mon Sep 3 07:55:15 2001
+++ freeciv/common/game.c Mon Sep 10 13:23:56 2001
@@ -699,6 +699,7 @@
game.cityfactor = GAME_DEFAULT_CITYFACTOR;
game.civilwarsize= GAME_DEFAULT_CIVILWARSIZE;
game.unhappysize = GAME_DEFAULT_UNHAPPYSIZE;
+ game.angrycitizen= GAME_DEFAULT_ANGRYCITIZEN;
game.foodbox = GAME_DEFAULT_FOODBOX;
game.aqueductloss= GAME_DEFAULT_AQUEDUCTLOSS;
game.killcitizen = GAME_DEFAULT_KILLCITIZEN;
diff -urN -Xfreeciv/diff_ignore freeciv-orig/common/game.h freeciv/common/game.h
--- freeciv-orig/common/game.h Fri Sep 7 07:56:08 2001
+++ freeciv/common/game.h Mon Sep 10 13:23:56 2001
@@ -80,6 +80,7 @@
int nbarbarians;
int occupychance;
int unhappysize;
+ int angrycitizen;
char *startmessage;
int conn_id; /* client-only: id client known to server as */
int player_idx;
@@ -267,6 +268,10 @@
#define GAME_DEFAULT_UNHAPPYSIZE 4
#define GAME_MIN_UNHAPPYSIZE 1
#define GAME_MAX_UNHAPPYSIZE 6
+
+#define GAME_DEFAULT_ANGRYCITIZEN 0
+#define GAME_MIN_ANGRYCITIZEN 0
+#define GAME_MAX_ANGRYCITIZEN 1
#define GAME_DEFAULT_END_YEAR 2000
#define GAME_MIN_END_YEAR GAME_START_YEAR
diff -urN -Xfreeciv/diff_ignore freeciv-orig/common/packets.c
freeciv/common/packets.c
--- freeciv-orig/common/packets.c Sun Sep 9 07:59:15 2001
+++ freeciv/common/packets.c Mon Sep 10 13:23:56 2001
@@ -1808,6 +1808,8 @@
cptr=put_uint8(cptr, pinfo->freecost);
cptr=put_uint8(cptr, pinfo->conquercost);
cptr=put_uint8(cptr, pinfo->unhappysize);
+ if (pc && has_capability("angrycitizen", pc->capability))
+ cptr=put_uint8(cptr, pinfo->angrycitizen);
for(i=0; i<A_LAST/*game.num_tech_types*/; i++)
cptr=put_uint8(cptr, pinfo->global_advances[i]);
@@ -1863,6 +1865,10 @@
iget_uint8(&iter, &pinfo->freecost);
iget_uint8(&iter, &pinfo->conquercost);
iget_uint8(&iter, &pinfo->unhappysize);
+ if (pc && has_capability("angrycitizen", pc->capability))
+ iget_uint8(&iter, &pinfo->angrycitizen);
+ else
+ pinfo->angrycitizen = 0;
for(i=0; i<A_LAST/*game.num_tech_types*/; i++)
iget_uint8(&iter, &pinfo->global_advances[i]);
@@ -2103,6 +2109,8 @@
cptr=put_uint8(cptr, req->size);
for(data=0;data<5;data++) {
+ if (pc && has_capability("angrycitizen", pc->capability))
+ cptr=put_uint8(cptr, req->ppl_angry[data]);
cptr=put_uint8(cptr, req->ppl_happy[data]);
cptr=put_uint8(cptr, req->ppl_content[data]);
cptr=put_uint8(cptr, req->ppl_unhappy[data]);
@@ -2186,6 +2194,9 @@
iget_uint8(&iter, &packet->size);
for(data=0;data<5;data++) {
+ if (pc && has_capability("angrycitizen", pc->capability))
+ iget_uint8(&iter, &packet->ppl_angry[data]);
+ else packet->ppl_angry[data] = 0;
iget_uint8(&iter, &packet->ppl_happy[data]);
iget_uint8(&iter, &packet->ppl_content[data]);
iget_uint8(&iter, &packet->ppl_unhappy[data]);
diff -urN -Xfreeciv/diff_ignore freeciv-orig/common/packets.h
freeciv/common/packets.h
--- freeciv-orig/common/packets.h Fri Sep 7 07:56:10 2001
+++ freeciv/common/packets.h Mon Sep 10 13:23:56 2001
@@ -330,6 +330,7 @@
char name[MAX_LEN_NAME];
int size;
+ int ppl_angry[5];
int ppl_happy[5], ppl_content[5], ppl_unhappy[5];
int ppl_elvis, ppl_scientist, ppl_taxman;
int food_prod, food_surplus;
@@ -806,6 +807,7 @@
int cooling;
int cityfactor;
int unhappysize;
+ int angrycitizen;
int diplcost,freecost,conquercost;
int global_advances[A_LAST];
int global_wonders[B_LAST];
diff -urN -Xfreeciv/diff_ignore freeciv-orig/data/misc/small.spec
freeciv/data/misc/small.spec
--- freeciv-orig/data/misc/small.spec Mon Jul 10 13:27:22 2000
+++ freeciv/data/misc/small.spec Mon Sep 10 13:23:56 2001
@@ -9,6 +9,7 @@
artists = "
Alexandre Beraud <a_beraud@xxxxxxxx>
Jeff Mallatt <jjm@xxxxxxxxxxxx> (cooling flakes)
+ Davide Pagnin <nightmare@xxxxxxxxxx>
"
[file]
@@ -39,46 +40,48 @@
0, 8, "gov.anarchy"
0, 9, "gov.despotism"
0, 10, "gov.monarchy"
- 0, 11, "gov.communism"
- 0, 12, "gov.republic"
- 0, 13, "gov.democracy"
+ 0, 11, "gov.republic"
+ 0, 12, "gov.communism"
+ 0, 14, "gov.fundamentalism" ;for civII compatibility!
+ 0, 15, "gov.democracy"
; Global warming progress indicators:
- 0, 14, "s.warming_sun_0"
- 0, 15, "s.warming_sun_1"
- 0, 16, "s.warming_sun_2"
- 0, 17, "s.warming_sun_3"
- 0, 18, "s.warming_sun_4"
- 0, 19, "s.warming_sun_5"
- 0, 20, "s.warming_sun_6"
- 0, 21, "s.warming_sun_7"
+ 0, 16, "s.warming_sun_0"
+ 0, 17, "s.warming_sun_1"
+ 0, 18, "s.warming_sun_2"
+ 0, 19, "s.warming_sun_3"
+ 0, 20, "s.warming_sun_4"
+ 0, 21, "s.warming_sun_5"
+ 0, 22, "s.warming_sun_6"
+ 0, 23, "s.warming_sun_7"
; Nuclear winter progress indicators:
- 0, 31, "s.cooling_flake_0"
- 0, 32, "s.cooling_flake_1"
- 0, 33, "s.cooling_flake_2"
- 0, 34, "s.cooling_flake_3"
- 0, 35, "s.cooling_flake_4"
- 0, 36, "s.cooling_flake_5"
- 0, 37, "s.cooling_flake_6"
- 0, 38, "s.cooling_flake_7"
+ 0, 35, "s.cooling_flake_0"
+ 0, 36, "s.cooling_flake_1"
+ 0, 37, "s.cooling_flake_2"
+ 0, 38, "s.cooling_flake_3"
+ 0, 39, "s.cooling_flake_4"
+ 0, 40, "s.cooling_flake_5"
+ 0, 41, "s.cooling_flake_6"
+ 0, 42, "s.cooling_flake_7"
; Citizen icons:
- 0, 22, "citizen.entertainer"
- 0, 23, "citizen.scientist"
- 0, 24, "citizen.tax_collector",
- "gov.fundamentalism" ; ?? need something...
- 0, 25, "citizen.content_0"
- 0, 26, "citizen.content_1"
- 0, 27, "citizen.happy_0"
- 0, 28, "citizen.happy_1"
- 0, 29, "citizen.unhappy_0",
- "citizen.unhappy_1" ; Allow for two
+ 0, 24, "citizen.entertainer"
+ 0, 25, "citizen.scientist"
+ 0, 26, "citizen.tax_collector"
+ 0, 27, "citizen.content_0"
+ 0, 28, "citizen.content_1"
+ 0, 29, "citizen.happy_0"
+ 0, 30, "citizen.happy_1"
+ 0, 31, "citizen.unhappy_0"
+ 0, 32, "citizen.unhappy_1"
+ 0, 33, "citizen.angry_0"
+ 0, 34, "citizen.angry_1"
; Right arrow icon:
- 0, 30, "s.right_arrow"
+ 0, 43, "s.right_arrow"
}
diff -urN -Xfreeciv/diff_ignore freeciv-orig/data/misc/small.xpm
freeciv/data/misc/small.xpm
--- freeciv-orig/data/misc/small.xpm Mon Jul 10 13:27:23 2000
+++ freeciv/data/misc/small.xpm Mon Sep 10 13:23:56 2001
@@ -1,87 +1,87 @@
/* XPM */
static char * small_xpm[] = {
-"585 20 64 1",
+"660 20 64 1",
" c None",
-". c #030408",
-"+ c #248C59",
-"@ c #899A68",
-"# c #A30409",
-"$ c #8DD167",
-"% c #134B54",
-"& c #D69013",
-"* c #CFCFB3",
-"= c #9C5127",
-"- c #5A0206",
-"; c #EDE92B",
-"> c #172F40",
-", c #E45128",
-"' c #624D32",
-") c #AEA651",
-"! c #3AC644",
-"~ c #E7B106",
-"{ c #2EAC52",
-"] c #D4E6E2",
-"^ c #0305F5",
-"/ c #EFEADF",
-"( c #EDD496",
-"_ c #A46D31",
-": c #5F7373",
-"< c #2230DA",
-"[ c #93AABB",
-"} c #FDFDFA",
-"| c #1C724A",
-"1 c #D16E23",
-"2 c #AEAEB2",
-"3 c #ED927B",
-"4 c #2C0E0F",
-"5 c #54D83C",
-"6 c #F90308",
-"7 c #AAEC2F",
-"8 c #70EB2A",
-"9 c #1EFE04",
-"0 c #5E9070",
-"a c #5BB770",
-"b c #5E331C",
-"c c #9F3724",
-"d c #F93621",
-"e c #9594B2",
-"f c #1753AD",
-"g c #5453DA",
-"h c #0A72EA",
-"i c #6574DD",
-"j c #98EBE0",
-"k c #5B93E4",
-"l c #308FD6",
-"m c #EDB1AA",
-"n c #03F2F2",
-"o c #77EAFA",
-"p c #6ECDF0",
-"q c #E8797C",
-"r c #A4D1D0",
-"s c #AE7396",
-"t c #2AAECD",
-"u c #59ACF5",
-"v c #B15A9D",
-"w c #0DCEDE",
-"x c #B18D27",
-"y c #304E52",
-"^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^^^^khiuk^^^^^^^g*gkliuk^g*<^~~~~~~~~~~~~~~~...............^^^^^^^^^^^^^^^666666666666666nnnnnn...wwwwtt<<gie2*/}(m3q,d........................................................................................................................hhhhh>..fhhhhhhy)33syyyyyyyyyyhhhhhl...hhhhhh}}}}}*c=c_}}}}}}}}}}}}}}}}}}}}}}}}}*c=c_}}}}}}}}}}}}}}}}}}}}}3m}}*c=c_}}}}}}}}}}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!",
-"^^^^kf^f^<k^^^^^^^^kf^f^<k^^^^^^^^leeei<k^^^^^^^^iki[i<k^^^^^^^^ike2i<k^^^^^^^^ik****k^^^^^^^^ik****k^^^^^g]eir/}}/u^e*^~~~~~~~~~~~~~~~...1q11=_===...^>^>^>^>^>^>^>^66&6666&d66,&,6nnnnnn...wwtttl<<iie2*//(m3qqd........................................................................................................................hhh>>....fhhhhh:*(m3q>by'e(***hhhhh.....hhhhh}}}}}c=s1c}}}}}}}}}}}*..]}}}}}}}}}}c=s1c}}}}}}}}}}}*..]}}}}}}33q}c=s1c}}}}}}}}}}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!}}}!!!!!!",
-"^^^k<uph^^hk^^^^^^k<uph^^hk^^^^^^uirpi<^hk^^^^^^uirri^^hk<^^^^^uerrr<^hk<^^^^^ue*]r((*k<^^^^^ue*/]/;*k^^^^/eu*}}/}}/u<*e~~~~_'4'bx~~~~~.41&==(~&=11=..^<^^<^^<^^<^^^<6&~&66&~~66&~~6nnnnnn...wtt3tl^ggie**//(m3q,d.............................................................................................................--#6#--....hh>...._=>hhhhhy((m3xyy@@['@yyhhhhhic1clhhhhh}}}}}m3331}}}}}}}}}}*.==.}}}}}}}}}}m3331}}}}}}}}}}*.==.}}}}}}(311m3331}}}}}}}*2}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!!}!!!!!!!!!!!!!!}!!!!!!!",
-"^^^uuog^^^^p<^^^^^uuog^^^^p<^^^^^p*of^^^^p<^^^^^2roi<^^^u<^^^^^pr]r*(2^u<^^^^^p;r**;((p<^^^^^$]/]/}/(p<^^g]^r}}}}}}/]^g]~~~'>'.__'b~~~~.&11=c(~&=c1==.^>~^^>^^>^^>x>^6d~6666~d666~66nnnnn.....tt3+l<<gie2*/}(m3q,d.................................................................................>.>...........44444.......-#-.....-#-..hhf>f3=4qbhhhhhy((33'by[*0y20*hhhhhh33qhhhhhh}}}}}}33q(}}}}}}}}}}/q33v}}}}}}}}}}}qqq(}}}}}}}}}}/q33v}}}}}}}m3q>33q(}}}}}}}222/}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!!}!!!!!!!}!!!!!!}!!!!!!}}!!}!!!}!!!}!!}",
-"^^k<ol^^^^^^l^^^^k<ol^^^^^^l^^^^kerk^^^^^^l^^^^k[oki)2<^^l^^^^k2rr(;(;*^l^^^^k**j(;((;*l^^^^k*]]}}}}}*l^^22k/}}}}}}}/k<*~~b'~'b>~~''~~~.=_1==~~x_=_==.^'~>^^>^^^><1y^66d6666666661d6nnnwww=1=tl33hl^ggie2]//(m3qqd................................................................>>>>>>.........>>%%%>>.......4>bybyb>4....--..44-44..--.hhhhh33'3=kklhhy'm3s'y>'/'y'*ehhhhh%[*mfhhhhh}}}}m##,c,3/}}}}}}}}._33='}}}}}}}}}31d,ss/}}}}}}}}._33='}}}}}}/33.....>:}}}}}2222/}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!}!!!!}}}!!!!}!!}}!!!}}}!!!}}!!}}!!!}}}!!!}}!",
-"^^ihu<^^^^^^u^^^^ihu<^^^^^^u^^^^hru<^^^^^^u^^^^h2ue(((*^^u^^^^ir]*;((((gk^^^^hr]*;//(((u^^^^hr//}}}}}(k^^]eh]}/}}}}}}u^/~xb~~bx'_~~''~~..1111m~&====..^:~'<^^^>^^<&_^666666666666666nnnwwwqq1tl**lf<<iie2*/}(m3q,d.................................................>>%%%>>.......>>%y|f%%>.....>>yfgy:f%>>....4>bb='c'b>4..-#.4-------4.#4hhik..33q222[hhy'//2:yyy:y}yyyhhhhf.>.'.hhhhh}}}3#######,}}}}}}}}>4334.}}}}}}}}es*v3ssv/}}}}}}}>4334.}}}}}}}3b......4e}}}}22[22/}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!}!!!}}}!!!}!!!!}!!!}}}!!!}!!!}}!!!}}}!!!}}!!}}!!!}}}!!!}}!",
-"^^u<f^^^^^^^u^^^^u<f^^^^^^^u^^^^kefgies^<^u^^^^u2i*(**()^u^^^^urr/}];(*eu^^^^kr*/}}};**u^^^^u*}}}}}}}*u^^*gk/}}}}}/}}p^]~b_~~bxx>&~~>_~...==1(~x===...^:~g^y^>^^>'x:^666666666666666nwwwtt1bq+h..|g<qgi22=//(m3q,d......................>.............>>>.........>>||l||>>.....>>f0:00:y%>....>f|:0::::%>...4b'==v=v=='b4.#..---###---..#he3_.>h[22222hhy*}}/*yby=3e>*:hhhh>.e.e.>hhhh}},#########s}}}}}}>|6||#|b}}}}}/sssmdmvsvv}}}}}}>p333el:}}}}}}}>4......3/}}}22e222}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!}!!!}!!!}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!}!!}}!!}!!}}!!}",
-"^^u^^g<^^<i<u^^^^u^^)(2i<i<u^^^^ug<2;(2eigu^^^^k:<(;/(*2eu^^^^u2*;//}}*ru^^^^u[];}}}/*ru^^^^u[]}}}}//*u^^[gu]}}}}}}/}u<e~yx~~>~~='~~&b&.=1111~~&=1=14.^y~x>x<^^x<x&'^666666666666166wwtwtt*b*+l..|g^qgie2c}/(m3qqd.......>>...........%%|%%.........>f|++%>.......%|0aaa0|%.....%y00@@@0:f>>..>%:::e_e::yf>..>b'=,,,,,='b>.-.4-#######--.-h'32lhl22*22e[hy*}}/2:y@(33ye2hhh>..>....fhhh}=##q1#######(}}}}r||6||#|+}}}}/3svv3#mvssv3}}}}]ptt3)ttt/}}}}}//>.4..>333}}}2[)e222/}}}}}!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!}!!}!!}!!!!!!!!}!!}!!}!!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!",
-"^^u^^eg^^ek<p^^^^u^^ee)**u<p^^^^u<<m;(;([kp^^^^u^i((;/;[ep^^^^u^;(;(;/]*p^^^^u*((}/};**p^^^^u*/}}}}}/*p^^ieu]}}}}}/}/peg~bx~~>~~~>&x_.b.1&1_1m~&=1_c'4^'~)x&x^_&_&x'^666,d1~d6666d~6wwtt.........ff<qq,e2==b(m33qd.....%%%%>.........%|+{+|>........|+{a{+f......>|ua$$$a{|>...>%:0@)))@0:%>.>>f::s_1_s@:y%.4b'=,,,,,,,='b4.4--##6#6##--...>222k2222222[hy//}}]22/*2:by:hhf....>....fhh},#v/m####1###}}}]|+|66##||$}}}msvsss#qvsssv*}}/3)tttttt[3/}}}}/}'..../33q(}}22ee[222/}}}}!!!!!!!}!!!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!",
-"^^^l<ie^<lkl<^^^^^l<ge^<kkl<^^^^^k<i2***2u<^^^^^k<22(*[[[<^^^^^u(;((;r][<^^^^^k;;(;/r]2<^^^^^k;}/}/}][<^^g2^[}}/}}}}*<e<~bx_b4'b>4.''>_.q1_1=(~&==_=c>^y~)~&x>x&x&&:^6d~~~&,66666&~dttt....}.....fy^qqqe2==c(m33qd....>%+{+%>........%+!5!+|.......>|{585{+>.....%|a$777$u+%...>f0@)x&))@0f>..%::xs111_s0y%>>bc=,,,d,,,v'b4.4-###6666##-4.fhk2222[[222e@iy]}}2/*/**@y___hh..>.....>..hh}/,#q3####}m##c}}3+{|66##+||r}}ssv(ss,sv/ssvv}}333ptttlr33m}}}}}}2..../}33m}}2[2)ee[22/}}}!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!",
-"^^^u^^2^kp^u^^^^^^u^<e^kp^u^^^^^^u^<@^[p:u^^^^^^u^<@(*$2p^^^^^^u2;];*](p^^^^^^u*(;*]**p^^^^^^u*(;}/](p^^^^2gp(}}/}}}p<2^..4b>_x&~~.~~'x.1111=~~&1=1=bb>g~~~)&&&&&&&_^6~~~~16d&,,&~~6ttl.........yfy<q1,e2='b(m333d....>|{9{|>.......>|{!85{f>......>+a878a+>.....%+a$7;7$a:%...%y0@)&&&)@0y>.>%g:s_1,11s::>.4y==,,d,,d,==b4.4-##666#6##--.>hhl*2e322222[[x/}}}****ssxsxeh%..h.....h..fh}}},3q4<--r},##/33q}|66##+++{}}ssq/ssssv(}ssvm33q/pttltp/33}}}}}}2..../}m3q}}2)ee2eee@}}}}!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!!!!!!!}}}!!!!!!",
-"^^^^l<e<[ip<^^^^^^^k<e<[ip<^^^^^^^l<e<[2r<^^^^^^^l<@e[2p<^^^^^^^l)(r*(p<^^^^^^^l2(*]*r<^^^^^^^l2**](p<^^^^<e^l]}/}/r<ei^~yx~b)~~~~_'~bx.1_111(~&11='=4^y~)~~&&&&&x&:<6~~~&~16d~~~~d6tll..}.}..fyfy<<}}}e2;;;(mb-bd.....%+{|%>........%{!5!+%.......>|{585{|>....4>|a$777$a+%>..>f:@)&~&@@0f%..%|:e1111_s0f%>4b'=,,,,,,,v'y4.4-###666###-4.f%hhhk33222222eh]/}//2khhhhhhhh>.>h.....h%.sh}}}}m<<<<.g}}##(33/}6666##j|+}}33}/sssvv/}/svm33m}patttl}33}}}}/2.....2}}3q}/22e)@ee:/}}}}!!!!!!!}!!!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!!!!!!}!}!}!!!!!",
-"^^^^^ukeeo^^^^^^^^^^ueeeo^^^^^^^^^^ukeeo^^^^^^^^^^uke2j^^^^^^^^^^uke*r^^^^^^^^^^u@e*r^^^^^^^^^^u@e*j^^^^^^^g*^u]/}j^ie^^~=_x>~~~~~xb)bx.1=~(~m~~~(&=c>4:~0)~1#1&x:x_^6d&d6,~~~&d,d66l+l...*3..yfyfy^...e2...(m...d.....>%|%>.........%|+{+|%.......>%+aa{+f>.....>|0a$$$a0|>...>%:0@)))@0:%>.>>y::_s1_e::y%.4>c=,,,,d,,=c>4.4--###6###--4.h>fhhhhl[2222)kh]/]}]rhhhhhhhhh33lh.....hhs3l}}}}e44^><.}}333q/}}6666##}|+}}33}mvvvsv(}}333q/}ruttltl]m3}}}}}'4:(..y}}3q}/22eees@*}}}}}!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!}!!}!!}!!!!!!!!}!!}!!}!!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!",
-"^^^^^^r[e^^^^^^^^^^^^p[e^^^^^^^^^^^^r[e^^^^^^^^^^^^r[e^^^^^^^^^^^^r@[^^^^^^^^^^^^p[@^^^^^^^^^^^^p@e^^^^^^^^^^^^p[e^^^^^^~&>__~~~~~~bb>~.c_m~~~~~~~&'bb^:@+0)6#6&:|::^66d6661~~666666lb-b-b-b-bbb-b><...e2...(m...d.......>>...........>%|%%.........>f|+|%>......>%|{aaa0|%.....%f00@@@00y%...>%::e:xs:::%>.4>''=,,,,===b>.-.--#######-4.-hhf>hhh[2222[ehhr}//]2hhhhhhhhhiehhf...%hh4'h}}}}g<^'<>^}}m333}}}6666##}33}}}}}ssv3sv*}}m333}}pattttta33/}}}/}/*2b..2=b3}/22)e:e/}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!}!!!}!!!}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!!!!}}!!}!!}}!!!}!!}}!!}!!}}!!}",
-"^^^^^^pep^^^^^^^^^^^^p[p^^^^^^^^^^^^p@p^^^^^^^^^^^^p[p^^^^^^^^^^^^pep^^^^^^^^^^^^pep^^^^^^^^^^^^p2p^^^^^^^^^^^^p)p^^^^^^~~>'&~~~~~~).4~.4_~&x(~x&x&bc4^:~0)&16=&&|x_^66666,~&~,66666|h11111111,11%><...e2...(m...d.....................>.>...........>>>>>........>>|:++|%>.....>%y:0:0:f%>....>fy:::0::%>>..4bb======='b4.#..--####---4.#hhhf>h2[222)ehhh]}}}**hhhhhhhhhhhhhh...fh>..h}}}}<44]g4^2}}}}}}}}6666##}3q}}}}}svs3vv(}}}}}}}}uttttltl3q}}}}**sgs24bc=}}}/2eee@/}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!}!!!}}}!!!}!!!!}!!!}}}!!!}!!!}}!!!}}}!!!}}!!}}!!!}}}!!!}}!",
-"^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^~~~._~~~~~~b'~~..==_1m~&=='bb4^:~~~~&~&&&&xx^66661~16d~,6666||_=========1<><...e2...(m...d.................................................>>>%>>........>>fyfy%>>.....>>%:f:yyf>.....4>b'==c'b>4..-#..4------..#4hhhhh[222[2[[hhhr}}]*rhhhhhhhhhhhhhh...fh..>h}}}2<^<}e<4<}}}}}}}}66####}}}}}}}/svs2sv}}}}}}}}]pttttttl}}}}}}b)iyee=b.]}}}/2e0s/}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!}!!!!}}}!!!!}!!}}!!!}}}!!!}}!!}}!!!}}}!!!}}!",
-"^^^^^^*22^^^^^^^^^^^^*2e^^^^^^^^^^^^*2[^^^^^^^^^^^^*2e^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*2e^^^^^^^^^^^^*22^^^^^^~~~~byxxx'>'~~~..b=1=&&&=cbb4.^y_:xxxx)xx:'^^666d&,666d~d666gf1=1_1_1_111>>^...e2...(m...d................................................................>>>>>>........>>>%%%>>>......4>bbbyb4>....--..44-44..#-.hhhhk22[eh22e_hh]}}}2*hhhhhhhhhhhhhh...hh...h}}}<>42}]<4<}}}}}}}}}mq3q}}}}}}}}ssvmqsv}}}}}}}}uatttttt+t}}}}}.>mige_..e}}}/2ee/}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!!}!!!!!!!}!!!!!!}!!!!!!}}!!}!!!}!!!}!!}",
-"^^^^^^*2[^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*2[^^^^^^^^^^^^*2[^^^^^^^^^^^^*22^^^^^^^^^^^^*2e^^^^^^~~~~~_'b''x~~~~...=1===c'c'4..^^^^^^^^^^^<^>^6666666666dd666|f1=,_,1=1_1_>><<gie2*//(m3q,d...................................................................>.............>.>............4444.......-#-.....-#4..hhhhc#=ehhhe##chhur*[hhhhhhhhhhhhhhh...fh...h}}}<^</}}<<./}}}}}}}}3333}}}}}}}}ssv/msv}}}}}}}}ptuuttuttu}}}}}.>22)e[..:}}}/e0/}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!!!!!!!}}}!!!!!!",
-"^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*2e^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^^^^^^^*22^^^^^^~~~~~~~~~~~~~~~...b===='c'b4..<^>^>^>^>^^^^^<666666666666666fy1=1x1111111>><<iie2*}/(m3q,d.............................................................................................................--#6#--....hhfb###f%hhhv##hhh]2hhhhhhhhhhhhhhhh...hh>.>h}_=>4i}}}sbbe}}}}}}}}(3qm}}}}}}}'4>v/s'b:}}}}}}}}}}(33/}}}}}}_=..m2g<e=be}}}}}}}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}!!!!!!!",
-"^^^^^^^2^^^^^^^^^^^^^^2^^^^^^^^^^^^^^2^^^^^^^^^^^^^^[^^^^^^^^^^^^^^e^^^^^^^^^^^^^^2^^^^^^^^^^^^^^[^^^^^^^^^^^^^^2^^^^^^^~~~~~~~~~~~~~~~........444....^^<^^^^^>^>^>^^666666666666666f%1_11_111_11>>^ggie2*//(m3qqd........................................................................................................................hg####bhf%h####hhh...hhhhhhhhhhhhhh.....hhfhh}cbcb_}}}=bb=}}}}}}}}....}}}}}}/...b}24.'}}}}}}}}}}..4.}}}}}}bcbb_)e/=bb=}}}}}}}}}}}}}}}}}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"};
+". c #0305F5",
+"+ c #5B93E4",
+"@ c #0A72EA",
+"# c #6574DD",
+"$ c #59ACF5",
+"% c #5453DA",
+"& c #CFCFB3",
+"* c #308FD6",
+"= c #2230DA",
+"- c #E7B106",
+"; c #030408",
+"> c #03F2F2",
+", c #0DCEDE",
+"' c #2AAECD",
+") c #F90308",
+"! c #FDFDFA",
+"~ c #9594B2",
+"{ c #AEAEB2",
+"] c #EFEADF",
+"^ c #EDD496",
+"/ c #EDB1AA",
+"( c #ED927B",
+"_ c #E8797C",
+": c #E45128",
+"< c #F93621",
+"[ c #172F40",
+"} c #1753AD",
+"| c #304E52",
+"1 c #AEA651",
+"2 c #AE7396",
+"3 c #9F3724",
+"4 c #9C5127",
+"5 c #A46D31",
+"6 c #3AC644",
+"7 c #93AABB",
+"8 c #D4E6E2",
+"9 c #A4D1D0",
+"0 c #D16E23",
+"a c #D69013",
+"b c #5F7373",
+"c c #5E331C",
+"d c #624D32",
+"e c #6ECDF0",
+"f c #EDE92B",
+"g c #2C0E0F",
+"h c #B18D27",
+"i c #5A0206",
+"j c #A30409",
+"k c #899A68",
+"l c #77EAFA",
+"m c #8DD167",
+"n c #248C59",
+"o c #5E9070",
+"p c #B15A9D",
+"q c #98EBE0",
+"r c #134B54",
+"s c #1C724A",
+"t c #5BB770",
+"u c #2EAC52",
+"v c #54D83C",
+"w c #70EB2A",
+"x c #AAEC2F",
+"y c #1EFE04",
+".....+@#$+..........+@#$+..........+@#$+..........+@#$+..........+@#$+..........+@#$+..........+@#$+.......%&%+*#$+.%&=.---------------;;;;;;;;;;;;;;;...............>>>>>>;;;,,,,'')))))))))))))))!!!!!!!!!!!!!!!@@@@@*;;;@@@@@@==%#~{&]!^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@[;;}@@@@@@|1((2||||||||||@@@@@*;;;@@@@@@!!!!!&3435!!!!!!!!!!!!!!!!!!!!!!!!!&3435!!!!!!!!!!!!!!!!!!!!!(/!!&3435!!!!!!!!!!!!!!!!!!!!!(/!!&3435!!!!!!!!!!!!!!!!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!6666666!!!!!!!!!!!!!!!",
+"....+}.}.=+........+}.}.=+........*~~~#=+........#+#7#=+........#+~{#=+........#+&&&&+........#+&&&&+.....%8~#9]!!]$.~&.---------------;;;0_0045444;;;.[.[.[.[.[.[.[.>>>>>>;;;,,'''*))a))))a<)):a:)!!!!!!!!!!!!!!!@@@@@;;;;;@@@@@==##~{&]]^/(__<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@[[;;;;}@@@@@b&^/(_[c|d~^&&&@@@@@;;;;;@@@@@!!!!!34203!!!!!!!!!!!&;;8!!!!!!!!!!34203!!!!!!!!!!!&;;8!!!!!!((_!34203!!!!!!!!!!!&;;8!!!!!!((_!34203!!!!!!!!!!!&;;8!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!6666666666666!!!666666!!!!!!!!!!!!!!!",
+"...+=$e@..@+......+=$e@..@+......$#9e#=.@+......$#99#..@+=.....$~999=.@+=.....$~&89^^&+=.....$~&]8]f&+....]~$&!!]!!]$=&~----5dgdch-----;g0a44^-a4004;;.=..=..=..=...=>>>>>>;;;,''('*)a-a))a--))a--)!!!!!!!!!!!!!!!@@@@@#303*@@@@@.%%#~&&]]^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iij)jii;;;;@@[;;;;54[@@@@@|^^/(h||kk7dk||@@@@@#303*@@@@@!!!!!/(((0!!!!!!!!!!&;44;!!!!!!!!!!/(((0!!!!!!!!!!&;44;!!!!!!^(00/(((0!!!!!!!!!!&;44;!!!!!!^(00/(((0!!!!!!!!!!&;44;!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666!66666666666666!66666666666666!6666666!&{!!!!!!!!!!!!",
+"...$$l%....e=.....$$l%....e=.....e&l}....e=.....{9l#=...$=.....e989&^{.$=.....ef9&&f^^e=.....m8]8]!]^e=..%8.9!!!!!!]8.%8---d[d;55dc----;a0043^-a43044;.[-..[..[..[h[.>>>>>;;;;;''(n*)<-))))-<)))-))!!!!!!!!!!!!!!!@@@@@@((_@@@@@@==%#~{&]!^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[;[;;;;;;;;;;;ggggg;;;;;;;iji;;;;;iji;;@@}[}(4g_c@@@@@|^^((dc|7&o|{o&@@@@@@((_@@@@@@!!!!!!((_^!!!!!!!!!!]_((p!!!!!!!!!!!___^!!!!!!!!!!]_((p!!!!!!!/(_[((_^!!!!!!!!!!]_((p!!!!!!!/(_j((_^!!!!!!!!!!]_((p!!!!!6666666666666666666666666666666666666666666666666666666666666666666!66666666666666!6666666!666666!666666!!66!666!666!66!!{{{]!!!!!!!!!!",
+"..+=l*......*....+=l*......*....+~9+......*....+7l+#1{=..*....+{99^f^f&.*....+&&q^f^^f&*....+&88!!!!!&*..{{+]!!!!!!!]+=&--cd-dc[--dd---;45044--h54544;.d-[..[...[=0|.>>>,,,404'*((@*))<)))))))))0<)!!!!!!!!!!!!!!!@@@@@r7&/}@@@@@.%%#~{8]]^/(__<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[[[[[[;;;;;;;;;[[rrr[[;;;;;;;g[c|c|c[g;;;;ii;;ggigg;;ii;@@@@@((d(4++*@@|d/(2d|[d]d|d&~@@@@@r7&/}@@@@@!!!!/jj:3:(]!!!!!!!!;5((4d!!!!!!!!!(0<:22]!!!!!!!!;5((4d!!!!!!]((;;;;;[b!!!!!!!!;5((4d!!!!!!]((jjjjjjb!!!!!!!!;5((4d!!!!6666666666666666666666666666666666666666666666666666666666666666666!66666666!6666!!!6666!66!!666!!!666!!66!!666!!!666!!6!{{{{]!!!!!!!!!",
+"..#@$=......$....#@$=......$....@9$=......$....@{$~^^^&..$....#98&f^^^^%+....@98&f]]^^^$....@9]]!!!!!^+..8~@8!]!!!!!!$.]-hc--chd5--dd--;;0000/-a4444;;.b-d=...[..=a5.>>>,,,__0'*&&*})))))))))))))))!!!!!!!!!!!!!!!@@@@};[;d;@@@@@==##~{&]!^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[[rrr[[;;;;;;;[[r|s}rr[;;;;;[[|}%|b}r[[;;;;g[cc4d3dc[g;;ij;giiiiiiig;jg@@#+;;((_{{{7@@|d]]{b|||b|!|||@@@@};[;d;@@@@@!!!(jjjjjjj:!!!!!!!![g((g;!!!!!!!!~2&p(22p]!!!!!!![g((g;!!!!!!!(c;;;;;;g~!!!!!!![g((g;!!!!!!!(j))))))j~!!!!!!![g((g;!!!!6666666666666666666666666666666666666666666666666666!666666666!666!!!666!6666!666!!!666!666!!666!!!666!!66!!666!!!666!!6!{{7{{]!!!!!!!!",
+"..$=}.......$....$=}.......$....+~}%#~2.=.$....${#&^&&^1.$....$99]!8f^&~$....+9&]!!!f&&$....$&!!!!!!!&$..&%+]!!!!!]!!e.8-c5--chh[a--[5-;;;440^-h444;;;.b-%.|.[..[dhb.>,,,''0c_n@;;s%)))))))))))))))!!!!!!!!!!!!!!!@@@@[;~;~;[@@@@=_%#{{4]]^/(_:<;;;;;;;;;;;;;;;;;;;;;;[;;;;;;;;;;;;;[[[;;;;;;;;;[[ss*ss[[;;;;;[[}oboob|r[;;;;[}sbobbbbr[;;;gcd44p4p44dcg;j;;iiijjjiii;;j@~(5;[@7{{{{{@@|&!!]&|c|4(~[&b@@@@[;~;~;[@@@@!!:jjjjjjjjj2!!!!!![sjssjsc!!!!!]222/</p2pp!!!!!![e(((~*b!!!!!!![g;;;;;;(]!!!!![s;ss;sc!!!!!!!jj)))))j(]!!!!![s)ss)sc!!!6666666666666666666666666666666666666!6666666666!666!666!666666!!66!66!!666666!!66!66!!666666!!66!66!!666!66!!66!66!!66!!{{~{{{!!!!!!!!",
+"..$..%=..=#=$....$..1^{#=#=$....$%={f^{~#%$....+b=^f]^&{~$....${&f]]!!&9$....$78f!!!]&9$....$78!!!!]]&$..7%$8!!!!!!]!$=~-|h--[--4d--aca;40000--a4040g;.|-h[h=..h=had.,,',''&c&n*;;s%))))))))))))0))!!!!!!!!!!!!!!!@@@[;;[;;;;}@@@._%#~{3!]^/(__<;;;;;;;[[;;;;;;;;;;;rrsrr;;;;;;;;;[}snnr[;;;;;;;rsotttosr;;;;;r|ookkkob}[[;;[rbbb~5~bb|}[;;[cd4:::::4dc[;i;gijjjjjjjii;i@d({*@*{{&{{~7@|&!!]{b|k^((|~{@@@[;;[;;;;}@@@!4jj_0jjjjjjj^!!!!9ssjssjsn!!!!](2pp(j/p22p(!!!!8e''(1''']!!!!!]][;g;;[(((!!!!9ss;ss;sn!!!!!!]]j))))j(((!!!!9ss)ss)sn!!!6666666666666666666666!66666666666!66!66!66666666!66!66!6666666!!66!66!!666666!!66!66!!666666!!66!66!!666666!!66!66!!666!{71~{{{]!!!!!!",
+"..$..~%..~+=e....$..~~1&&$=e....$==/f^f^7+e....$.#^^f]f7~e....$.f^f^f]8&e....$&^^!]!f&&e....$&]!!!!!]&e..#~$8!!!!!]!]e~%-ch--[---[ah5;c;0a050/-a4053dg.d-1hah.5a5ahd.,,'';;;;;;;;;}}))):<0-<))))<-)!!!!!!!!!!!!!!!@@};;;;[;;;;}@@=__:~{44c^/((_<;;;;;rrrr[;;;;;;;;;rsnuns[;;;;;;;;snutun};;;;;;[s$tmmmtus[;;;[rbok111kobr[;[[}bb25052kb|r;gcd4:::::::4dcg;giijj)j)jjii;;;[{{{+{{{{{{{7@|]]!!8{{]&{bc|b@@};;;;[;;;;}@@!:jp]/jjjj0jjj!!!8snsjjjjssm!!!/2p222j_p222p&!!](1''''''7(]!!!!]!d;;;;]((_^!!8sns;;;;ssm!!!!!]!j))))]((_^!!8sns))))ssm!!6666666!666666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!66666!{{~~7{{{]!!!!!",
+"...*=#~.=*+*=.....*=%~.=++*=.....+=#{&&&{$=.....+={{^&777=.....$^f^^f987=.....+ff^f]98{=.....+f!]!]!87=..%{.7!!]!!!!&=~=-ch5cgdc[g;dd[5;_0504^-a44543[.|-1-ah[hahaab.''';;;;!;;;;;}|)<---a:)))))a-<!!!!!!!!!!!!!!!@@;;[;;;;;[;;@@.___~{443^/((_<;;;;[rnunr[;;;;;;;;rn6v6ns;;;;;;;[suvwvun[;;;;;rstmxxxm$nr;;;[}ok1ha11ko}[;;rbbh200052o|r[[c34:::<:::pdcg;gijjj))))jjig;}@+{{{{77{{{~k#|8!!{]&]&&k|555@@;;[;;;;;[;;@@!]:j_(jjjj!/jj3!!(nusjjjjnss9!!22p^22:2p]22pp!!(((e'''*9((/!!!!!!{;;;;]!((/!!(nus;;;;nss9!!!!!!{))))]!((/!!(nus))))nss9!666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666!{7{1~~7{{]!!!!",
+"...$..{.+e.$......$.=~.+e.$......$.=k.7eb$......$.=k^&m{e......${f8f&8^e......$&^f&8&&e......$&^f!]8^e....{%e^!!]!!!e={.;;gc[5ha--;--dh;00004--a0404cc[%---1aaaaaaa5.''*;;;;;;;;;|}|)----0)<a::a--)!!!!!!!!!!!!!!!@r;;@;;;;;@;;}@=_0:~{4dc^/(((<;;;;[suyus[;;;;;;;[su6wvu}[;;;;;;[ntwxwtn[;;;;;rntmxfxmtbr;;;r|ok1aaa1ko|[;[r%b250:002bb[;g|44::<::<:44cg;gijj)))j)jjii;[@@*&{~({{{{{77h]!!!&&&&22h2h~@r;;@;;;;;@;;}@!!!:(_g=ii9!:jj]((_!sjjjjnnnu!!22_]2222p^!22p/((_]e''*'e]((!!!!!!{;;;;]!/(_]((_!s;;;;nnnu!!!!!!{))))]!/(_]((_!s))))nnnu!666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666666666!!!666666!{1~~{~~~k!!!!!",
+"....*=~=7#e=.......+=~=7#e=.......*=~=7{9=.......*=k~7{e=.......*1^9&^e=.......*{^&8&9=.......*{&&8^e=....=~.*8!]!]9=~#.-|h-c1----5d-ch;05000^-a004d4g.|-1--aaaaahab='**;;!;!;;}|}|=)---a-0)<----<)!!!!!!!!!!!!!!!@[;[@;;;;;@r;2@=!!!~{fff^/cic<;;;;;rnusr[;;;;;;;;ru6v6nr;;;;;;;[suvwvus[;;;;g[stmxxxmtnr[;;[}bk1a-akko}r;;rsb~000052o}r[gcd4:::::::pd|g;gijjj)))jjjig;}r@@@+(({{{{{{~@8]!]]{+@@@@@@@@[;[@;;;;;@r;2@!!!!/====;%!!jj^((]!jjjjjjqsn!!((!]222pp]!]2p/((/!et'''*!((!!!!]{;;;;;{!!(_^((]!;;;;;;qsn!!!!]{))))){!!(_^((]!))))))qsn!6666666!666666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!6666666666!6!6!66666]{{~1k~~b]!!!!!",
+".....$+~~l..........$~~~l..........$+~~l..........$+~{q..........$+~&9..........$k~&9..........$k~&q.......%&.$8]!q.#~..-45h[-----hc1ch;04-^-/---^a43[gb-o1-0j0ahbh5.*n*;;;&(;;|}|}|)<a<):---a<:<))!!!!!!!!!!!!!!!@((*@;;;;;@@2(*.;;;~{;;;^/;;;<;;;;;[rsr[;;;;;;;;;rsnunsr;;;;;;;[rnttun}[;;;;;[sotmmmtos[;;;[rbok111kobr[;[[|bb5205~bb|r;g[34::::<::43[g;giijjj)jjjiig;@[}@@@@*7{{{{1+@8]8!89@@@@@@@@@((*@;;;;;@@2(*!!!!~gg.[=;!!(((_]!!jjjjjj!sn!!((!/ppp2p^!!(((_]!9$''*'*8/(!!!!!dgb^;;|!!(_(_]!!;;;;;;!sn!!!!!djb^))j!!(_(_]!!))))))!sn!6666666666666666666666!66666666666!66!66!66666666!66!66!6666666!!66!66!!666666!!66!66!!666666!!66!66!!666666!!66!66!!666]{{~~~2k&!!!!!!",
+"......97~............e7~............97~............97~............9k7............e7k............ek~............e7~......-a[55------cc[-;35/-------adcc.bkno1)j)absbb.*cicicicicccic[))<)))0--))))))!!!!!!!!!!!!!!!@#~@@};;;r@@gd@=;;;~{;;;^/;;;<;;;;;;;[[;;;;;;;;;;;[rsrr;;;;;;;;;[}snsr[;;;;;;[rsutttosr;;;;;r}ookkkoo|r;;;[rbb~bh2bbbr[;g[dd4::::444c[;i;iijjjjjjjig;i@@}[@@@7{{{{7~@@9!]]8{@@@@@@@@@#~@@};;;r@@gd@!!!!%=.d=[.!!/(((!!!jjjjjj!((!!!!!22p(2p&!!/(((!!et'''''t((]!!!]!]&{c;;{4c(((!!!;;;;;;!((!!!!]!]&{c)){4c(((!!!))))))!((!6666666666666666666666666666666666666!6666666666!666!666!666666!!66!66!!666666!!66!66!!666666!!66!66!!666!66!!66!66!!66!]{{1~b~]!!!!!!!",
+"......e~e............e7e............eke............e7e............e~e............e~e............e{e............e1e......--[da------1;g-;g5-ah^-hahac3g.b-o1a0)4aash5.s@00000000:00r[))))):-a-:)))))!!!!!!!!!!!!!!!@@@@@@;;;}@[;;@=;;;~{;;;^/;;;<;;;;;;;;;;;;;;;;;;;;;[;[;;;;;;;;;;;[[[[[;;;;;;;;[[sbnnsr[;;;;;[r|bobob}r[;;;;[}|bbbobbr[[;;gcc4444444dcg;j;;iijjjjiiig;j@@@}[@{7{{{1~@@@8!!!&&@@@@@@@@@@@@@@;;;}@[;;@!!!!=gg8%g.{!!!!!!!!jjjjjj!(_!!!!!2p2(pp^!!!!!!!!$''''*'*(_!!!!&&2%2{gc34!!!!!!!;;;;;;!(_!!!!&&2%2{gc34!!!!!!!))))))!(_!6666666666666666666666666666666666666666666666666666!666666666!666!!!666!6666!666!!!666!666!!666!!!666!!66!!666!!!666!!6]{~~~k]!!!!!!!!",
+"......&{{............&{{............&{{............&{{............&{{............&{{............&{{............&{{......---;5------cd--;;4450/-a44dccg.b----a-aaaahh.ss54444444440=[))))0-0)<-:))))!!!!!!!!!!!!!!!@@@@@@;;;}@;;[@=;;;~{;;;^/;;;<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[[[r[[;;;;;;;;[[}|}|r[[;;;;;[[rb}b||}[;;;;;g[cd443dc[g;;ij;;giiiiii;;jg@@@@@7{{{7{77@@@9!!8&9@@@@@@@@@@@@@@;;;}@;;[@!!!{=.=!~=g=!!!!!!!!jjjjjj!!!!!!!]2p2{2p!!!!!!!!8e''''''*!!!!!!c1#|~~4c;8!!!!!!!;;;;;;!!!!!!!c1#|~~4c)8!!!!!!!))))))!!!!6666666666666666666666666666666666666666666666666666666666666666666!66666666!6666!!!6666!66!!666!!!666!!66!!666!!!666!!6]{~o2]!!!!!!!!!",
+"......&{{............&{~............&{7............&{~............&{{............&{{............&{~............&{{......----c|hhhd[d---;;c404aaa43ccg;.|5bhhhh1hhbd..%}04050505000[[)))<a:)))<-<)))!!!!!!!!!!!!!!!@@@@@@;;;@@;;;@.;;;~{;;;^/;;;<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[[[[[[;;;;;;;;[[[rrr[[[;;;;;;g[ccc|cg[;;;;ii;;ggigg;;ji;@@@@+{{7~@{{~5@@8!!!{&@@@@@@@@@@@@@@;;;@@;;;@!!!=[g{!8=g=!!!!!!!!!/_(_!!!!!!!!22p/_2p!!!!!!!!$t''''''n'!!!!!;[/#%~5;;~!!!!!!!!/_(_!!!!!!!!)j/#%~5))~!!!!!!!!/_(_!!!!!6666666666666666666666666666666666666666666666666666666666666666666!66666666666666!6666666!666666!666666!!66!666!666!66!]{~~]!!!!!!!!!!",
+"......&{7............&{{............&{{............&{{............&{7............&{7............&{{............&{~......-----5dcddh----;;;404443d3dg;;...........=.[.s}04:5:040505[[))))))))))<<)))!!!!!!!!!!!!!!!@@@@@@;;;}@;;;@==%#~{&]]^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[;;;;;;;;;;;;;[;[;;;;;;;;;;;;gggg;;;;;;;iji;;;;;ijg;;@@@@3j4~@@@~jj3@@$9&7@@@@@@@@@@@@@@@;;;}@;;;@!!!=.=]!!==;]!!!!!!!!((((!!!!!!!!22p]/2p!!!!!!!!e'$$''$''$!!!!!;[{{1~7;;b!!!!!!!!((((!!!!!!!!)j{{1~7))b!!!!!!!!((((!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!6666666666666!!!666666]~o]!!!!!!!!!!!",
+"......&{{............&{{............&{~............&{{............&{{............&{{............&{{............&{{......---------------;;;c4444d3dcg;;=.[.[.[.[.....=}|040h0000000[[)))))))))))))))!!!!!!!!!!!!!!!@@@@@@;;;@@[;[@==##~{&!]^/(_:<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iij)jii;;;;@@}cjjj}r@@@pjj@@@8{@@@@@@@@@@@@@@@@;;;@@[;[@!54[g#!!!2cc~!!!!!!!!^(_/!!!!!!!dg[p]2dcb!!!!!!!!!!^((]!!!!!!54;;/{%=~4c~!!!!!!!!^(_/!!!!!!54))/{%=~4j~!!!!!!!!^(_/!!!!!6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!6666666!!!!!!!!!!!!!!!",
+".......{..............{..............{..............7..............~..............{..............7..............{.......---------------;;;;;;;;ggg;;;;..=.....[.[.[..}r05005000500[[)))))))))))))))!!!!!!!!!!!!!!!@@@@@;;;;;@@}@@.%%#~{&]]^/(__<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@%jjjjc@}r@jjjj@@@;;;@@@@@@@@@@@@@@;;;;;@@}@@!3c3c5!!!4cc4!!!!!!!!;;;;!!!!!!];;;c!{g;d!!!!!!!!!!;;g;!!!!!!c3cc51~]4cc4!!!!!!!!;;;;!!!!!!c3cc51~]4cc4!!!!!!!!;;;;!!!!!666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666!!!!!!!!!!!!!!!"};
diff -urN -Xfreeciv/diff_ignore freeciv-orig/server/citytools.c
freeciv/server/citytools.c
--- freeciv-orig/server/citytools.c Sun Sep 9 07:59:27 2001
+++ freeciv/server/citytools.c Mon Sep 10 13:23:56 2001
@@ -828,6 +828,7 @@
pcity->size=1;
pcity->ppl_elvis=1;
pcity->ppl_scientist=pcity->ppl_taxman=0;
+ pcity->ppl_angry[4]=0;
pcity->ppl_happy[4]=0;
pcity->ppl_content[4]=1;
pcity->ppl_unhappy[4]=0;
@@ -1393,6 +1394,7 @@
packet->size=pcity->size;
for (i=0;i<5;i++) {
+ packet->ppl_angry[i]=pcity->ppl_angry[i];
packet->ppl_happy[i]=pcity->ppl_happy[i];
packet->ppl_content[i]=pcity->ppl_content[i];
packet->ppl_unhappy[i]=pcity->ppl_unhappy[i];
diff -urN -Xfreeciv/diff_ignore freeciv-orig/server/gamehand.c
freeciv/server/gamehand.c
--- freeciv-orig/server/gamehand.c Fri Sep 7 07:56:19 2001
+++ freeciv/server/gamehand.c Mon Sep 10 13:23:56 2001
@@ -219,6 +219,7 @@
ginfo.civstyle = game.civstyle;
ginfo.spacerace = game.spacerace;
ginfo.unhappysize = game.unhappysize;
+ ginfo.angrycitizen = game.angrycitizen;
ginfo.cityfactor = game.cityfactor;
for (i = 0; i < A_LAST /*game.num_tech_types */ ; i++)
ginfo.global_advances[i] = game.global_advances[i];
diff -urN -Xfreeciv/diff_ignore freeciv-orig/server/savegame.c
freeciv/server/savegame.c
--- freeciv-orig/server/savegame.c Sun Sep 9 07:59:29 2001
+++ freeciv/server/savegame.c Mon Sep 10 13:23:56 2001
@@ -1992,6 +1992,7 @@
game.nuclearwinter = secfile_lookup_int_default(file, 0,
"game.nuclearwinter");
game.coolinglevel = secfile_lookup_int_default(file, 8,
"game.coolinglevel");
game.unhappysize = secfile_lookup_int(file, "game.unhappysize");
+ game.angrycitizen = secfile_lookup_int_default(file, 0,
"game.angrycitizen");
if (game.version >= 10100) {
game.cityfactor = secfile_lookup_int(file, "game.cityfactor");
@@ -2353,6 +2354,7 @@
secfile_insert_int(file, game.nuclearwinter, "game.nuclearwinter");
secfile_insert_int(file, game.coolinglevel, "game.coolinglevel");
secfile_insert_int(file, game.unhappysize, "game.unhappysize");
+ secfile_insert_int(file, game.angrycitizen, "game.angrycitizen");
secfile_insert_int(file, game.cityfactor, "game.cityfactor");
secfile_insert_int(file, game.civilwarsize, "game.civilwarsize");
secfile_insert_int(file, game.diplcost, "game.diplcost");
diff -urN -Xfreeciv/diff_ignore freeciv-orig/server/stdinhand.c
freeciv/server/stdinhand.c
--- freeciv-orig/server/stdinhand.c Sun Sep 9 07:59:30 2001
+++ freeciv/server/stdinhand.c Mon Sep 10 13:23:56 2001
@@ -498,6 +498,15 @@
"city are content, and subsequent citizens are unhappy. "
"See also cityfactor.") },
+ { "angrycitizen", &game.angrycitizen, NULL, NULL,
+ SSET_RULES, SSET_TO_CLIENT,
+ GAME_MIN_ANGRYCITIZEN, GAME_MAX_ANGRYCITIZEN,
+ GAME_DEFAULT_ANGRYCITIZEN,
+ N_("Whether angry citizens are enabled"),
+ N_("Introduces angry citizens like civilization II. Angry citizens "
+ "have to become unhappy before any other class of citizens may "
+ "be considered. See also unhappysize, cityfactor and governments.") },
+
{ "cityfactor", &game.cityfactor, NULL, NULL,
SSET_RULES, SSET_TO_CLIENT,
GAME_MIN_CITYFACTOR, GAME_MAX_CITYFACTOR, GAME_DEFAULT_CITYFACTOR,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Freeciv-Dev] Angry citizen [PATCH UPDATED] (PR#656),
Davide Pagnin <=
|
|