diff -Nur -Xno.diff freeciv/data/default/nations.ruleset freeciv-df/data/default/nations.ruleset --- freeciv/data/default/nations.ruleset Sat Sep 18 12:43:39 1999 +++ freeciv-df/data/default/nations.ruleset Sun Sep 19 21:36:54 1999 @@ -46,6 +46,24 @@ ; section [misc] currently contains cities suggested when ; you run out of default cities for your nation ; +; +; +; [default] section specifies the default values for some entries +; note that you do not have default values for: name, plural, leader, +; leader_sex, flag and cities because they should be unique for every nation. +; + +[default] + +flag_alt = "-" +attack = 2 +expand = 2 +civilized = 0 +advisors=100,100,100,100,100,100,100 +tech_goals = "The Republic", "The Wheel", "Iron Working", "Construction", + "Railroad" +wonder="Pyramids" +government="Republic" [nation0] diff -Nur -Xno.diff freeciv/server/ruleset.c freeciv-df/server/ruleset.c --- freeciv/server/ruleset.c Mon Sep 20 14:25:45 1999 +++ freeciv-df/server/ruleset.c Mon Sep 20 14:27:39 1999 @@ -1264,11 +1264,45 @@ int *res, dim, i, j; char temp_name[MAX_LEN_NAME]; char **cities, **techs, **leaders; + int def_attack, def_civ, def_exp, def_adv[ADV_LAST], def_tech_num; + char def_flag_alt[MAX_LEN_NAME], def_gov[MAX_LEN_NAME], def_wonder[MAX_LEN_NAME]; + char def_tech[MAX_NUM_TECH_GOALS][MAX_LEN_NAME]; filename = openload_ruleset_file(&file, ruleset_subdir, "nations"); datafile_options = check_ruleset_capabilities(&file, "+1.8.2", filename); section_file_lookup(&file,"datafile.description"); /* unused */ + /* read the default section */ + + strcpy( def_flag_alt, secfile_lookup_str(&file, "default.flag_alt") ); + def_attack = secfile_lookup_int(&file, "default.attack"); + def_civ = secfile_lookup_int(&file, "default.civilized"); + def_exp = secfile_lookup_int(&file, "default.expand"); + strcpy( def_gov, secfile_lookup_str(&file, "default.government") ); + strcpy( def_wonder, secfile_lookup_str(&file, "default.wonder") ); + res = secfile_lookup_int_vec(&file, &dim, "default.advisors"); + if( dim != ADV_LAST ) { + freelog( LOG_FATAL, "Number of default advisors must be %d but is %d", + ADV_LAST, dim); + exit(1); + } + for ( j=0; j MAX_NUM_TECH_GOALS ) { + freelog( LOG_VERBOSE, "Only %d techs can used from %d default", + MAX_NUM_TECH_GOALS, def_tech_num); + def_tech_num = MAX_NUM_TECH_GOALS; + } + for ( j=0; jflag_graphic_str, secfile_lookup_str(&file, "nation%d.flag", i)); strcpy(pl->flag_graphic_alt, - secfile_lookup_str(&file, "nation%d.flag_alt", i)); + secfile_lookup_str_default(&file, def_flag_alt, "nation%d.flag_alt", i)); - pl->attack = secfile_lookup_int_default(&file, 2, "nation%d.attack", i); - pl->expand = secfile_lookup_int_default(&file, 2, "nation%d.expand", i); - pl->civilized = secfile_lookup_int_default(&file, 2, "nation%d.civilized", i); + pl->attack = secfile_lookup_int_default(&file, def_attack, "nation%d.attack", i); + pl->expand = secfile_lookup_int_default(&file, def_exp, "nation%d.expand", i); + pl->civilized = secfile_lookup_int_default(&file, def_civ, "nation%d.civilized", i); res = secfile_lookup_int_vec(&file, &dim, "nation%d.advisors", i); - if( dim != ADV_LAST ) { - freelog( LOG_FATAL, "Nation %d number of advisors must be %d but is %d", - i, ADV_LAST, dim); - exit(1); - } - for ( j=0; jadvisors[j] = res[j]; - if(res) free(res); + if( dim == 0 ) { + for ( j=0; jadvisors[j] = def_adv[j]; + } + else { + if( dim != ADV_LAST ) { + freelog( LOG_FATAL, "Nation %d number of advisors must be %d but is %d", + i, ADV_LAST, dim); + exit(1); + } + else { + for ( j=0; jadvisors[j] = res[j]; + free(res); + } + } techs = secfile_lookup_str_vec(&file, &dim, "nation%d.tech_goals", i); if( dim > MAX_NUM_TECH_GOALS ) { @@ -1359,19 +1401,27 @@ MAX_NUM_TECH_GOALS, dim, pl->name_plural); dim = MAX_NUM_TECH_GOALS; } - for ( j=0; jgoals_str.tech[j] = fc_calloc((strlen(techs[j])+1), sizeof(char)); - strcpy( pl->goals_str.tech[j], techs[j]); + if( dim == 0) { + for ( j=0; jgoals_str.tech[j] = fc_calloc((strlen(def_tech[j])+1), sizeof(char)); + strcpy( pl->goals_str.tech[j], def_tech[j]); + } + } + else { + for ( j=0; jgoals_str.tech[j] = fc_calloc((strlen(techs[j])+1), sizeof(char)); + strcpy( pl->goals_str.tech[j], techs[j]); + } } while( j < MAX_NUM_TECH_GOALS ) pl->goals_str.tech[j++] = ""; if (techs) free(techs); - strcpy( temp_name, secfile_lookup_str(&file, "nation%d.wonder", i)); + strcpy( temp_name, secfile_lookup_str_default(&file, def_wonder, "nation%d.wonder", i)); pl->goals_str.wonder = fc_calloc((strlen(temp_name)+1), sizeof(char)); strcpy( pl->goals_str.wonder, temp_name); - strcpy( temp_name, secfile_lookup_str(&file, "nation%d.government", i)); + strcpy( temp_name, secfile_lookup_str_default(&file, def_gov, "nation%d.government", i)); pl->goals_str.government = fc_calloc((strlen(temp_name)+1), sizeof(char)); strcpy( pl->goals_str.government, temp_name);