diff client/packhand.c client/packhand.c --- client/packhand.c Sat Jul 1 18:34:54 2000 +++ client/packhand.c Sat Jul 1 16:56:36 2000 @@ -708,7 +708,6 @@ } game.techpenalty=pinfo->techpenalty; game.foodbox=pinfo->foodbox; - game.apollostyle=pinfo->apollostyle; boot_help = (get_client_state() == CLIENT_GAME_RUNNING_STATE && game.spacerace != pinfo->spacerace); diff common/capstr.c common/capstr.c --- common/capstr.c Sat Jul 1 18:34:39 2000 +++ common/capstr.c Sat Jul 1 16:56:37 2000 @@ -70,10 +70,10 @@ * are not directly related to the capability strings discussed here.) */ -#define CAPABILITY "+1.11 +game_ruleset" +#define CAPABILITY "+1.11 game_ruleset" /* "+1.11" is protocol for 1.11.0 stable release - "+game_ruleset: Use of game.ruleset instead of civstyle option. + "game_ruleset: Use of game.ruleset instead of civstyle option. */ void init_our_capability(void) diff common/packets.c common/packets.c --- common/packets.c Sat Jul 1 18:34:54 2000 +++ common/packets.c Sat Jul 1 18:32:33 2000 @@ -1689,7 +1689,25 @@ cptr=put_uint16(cptr, pinfo->global_wonders[i]); cptr=put_uint8(cptr, pinfo->techpenalty); cptr=put_uint8(cptr, pinfo->foodbox); - cptr=put_uint8(cptr, pinfo->apollostyle); + + /* Only thing client _really_ have to know about game.ruleset + is if it should show pillage dialog or not. So, for older clients + we set civstyle based on pillage_select. + Older clients also show production at city center based + on civstyle (eg. ignoring min_city_center_xxx), which may + be incorrect with non-standard rulesets. --Caz + */ + + if(pc) { + if(!has_capability("game_ruleset", pc->capability)) { + freelog(LOG_VERBOSE,"Sending pillage_select based civstyle."); + if(game.pillage_select) + cptr=put_uint8(cptr, 2); + else + cptr=put_uint8(cptr, 1); + } + } + cptr=put_uint8(cptr, pinfo->spacerace); /* computed values */ @@ -1737,7 +1755,24 @@ iget_uint16(&iter, &pinfo->global_wonders[i]); iget_uint8(&iter, &pinfo->techpenalty); iget_uint8(&iter, &pinfo->foodbox); - iget_uint8(&iter, &pinfo->apollostyle); + + /* See comments at send_packet_game_info(). */ + if(!has_capability("game_ruleset", pc->capability)) { + int old_civstyle; + extern int is_server; + freelog(LOG_VERBOSE,"Pillage_select based on civstyle."); + iget_uint8(&iter, &old_civstyle); + + /* This should be done at client/packhand.c, but it would require + new global variable for old_civstyle. --Caz */ + if(!is_server) { + if(old_civstyle==2) + game.pillage_select=1; + else + game.pillage_select=0; + } + } + iget_uint8(&iter, &pinfo->spacerace); /* computed values */ diff common/packets.h common/packets.h --- common/packets.h Sat Jul 1 18:34:54 2000 +++ common/packets.h Sat Jul 1 16:56:36 2000 @@ -715,7 +715,6 @@ *********************************************************/ struct packet_game_info { int gold; - int apollostyle; int tech; int techlevel; int skill_level; diff server/gamehand.c server/gamehand.c --- server/gamehand.c Sat Jul 1 18:34:54 2000 +++ server/gamehand.c Sat Jul 1 17:21:38 2000 @@ -202,7 +202,6 @@ ginfo.heating=game.heating; ginfo.techpenalty=game.techpenalty; ginfo.foodbox = game.foodbox; - ginfo.apollostyle=game.apollostyle; ginfo.spacerace = game.spacerace; for(i=0; iconn->capability)) send_packet_ruleset_game(get_player(to)->conn, &misc_p); } }