<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40279 >
Current military base code requires exactly two bases defined. Civ1 ruleset should have no airbase. Currently used attempt to disable airbase from civ1 rules does not work. Attached patch adds 'disabled' field to military base definitions. Disabled bases cannot be built. - ML
diff -Nurd -X.diff_ignore freeciv/common/base.c freeciv/common/base.c --- freeciv/common/base.c 2007-11-27 21:57:32.000000000 +0200 +++ freeciv/common/base.c 2008-06-15 15:13:25.000000000 +0300 @@ -108,6 +108,11 @@ return FALSE; } + if (pbase->disabled) { + /* Base type not in game */ + return FALSE; + } + return are_reqs_active(unit_owner(punit), NULL, NULL, ptile, unit_type(punit), NULL, NULL, &pbase->reqs, RPT_CERTAIN); diff -Nurd -X.diff_ignore freeciv/common/base.h freeciv/common/base.h --- freeciv/common/base.h 2007-08-06 16:41:57.000000000 +0300 +++ freeciv/common/base.h 2008-06-15 15:06:52.000000000 +0300 @@ -47,6 +47,7 @@ struct base_type { Base_type_id item_number; + bool disabled; struct name_translation name; char graphic_str[MAX_LEN_NAME]; char graphic_alt[MAX_LEN_NAME]; diff -Nurd -X.diff_ignore freeciv/data/civ1/terrain.ruleset freeciv/data/civ1/terrain.ruleset --- freeciv/data/civ1/terrain.ruleset 2008-06-14 18:24:47.000000000 +0300 +++ freeciv/data/civ1/terrain.ruleset 2008-06-15 15:10:32.000000000 +0300 @@ -1729,6 +1729,9 @@ ; [fortress] and [airbase]. ; ; name = Name of the base type. +; disabled = Not really in game. This field will be removed +; in future versions when number of +; bases defined is adjustable. ; graphic = tag specifing preferred graphic ; graphic_alt = tag for alternate garphic if preferred graphic is not ; present. Can use eg "-" for no alternate graphic. @@ -1764,12 +1767,15 @@ [airbase] name = _("Airbase") +disabled = 1 graphic = "base.airbase" graphic_alt = "-" activity_gfx = "unit.airbase" reqs = { "type", "name", "range" - "Tech", "Never", "Player" + "Tech", "Radio", "Player" + "TerrainClass", "Land", "Local" + "UnitFlag", "Airbase", "Local" } gui_type = "Airbase" build_time = 3 diff -Nurd -X.diff_ignore freeciv/data/civ2/terrain.ruleset freeciv/data/civ2/terrain.ruleset --- freeciv/data/civ2/terrain.ruleset 2008-06-14 18:24:47.000000000 +0300 +++ freeciv/data/civ2/terrain.ruleset 2008-06-15 15:11:09.000000000 +0300 @@ -1766,6 +1766,9 @@ ; [fortress] and [airbase]. ; ; name = Name of the base type. +; disabled = Not really in game. This field will be removed +; in future versions when number of +; bases defined is adjustable. ; graphic = tag specifing preferred graphic ; graphic_alt = tag for alternate garphic if preferred graphic is not ; present. Can use eg "-" for no alternate graphic. diff -Nurd -X.diff_ignore freeciv/data/default/terrain.ruleset freeciv/data/default/terrain.ruleset --- freeciv/data/default/terrain.ruleset 2008-06-14 18:24:47.000000000 +0300 +++ freeciv/data/default/terrain.ruleset 2008-06-15 15:10:41.000000000 +0300 @@ -1883,6 +1883,9 @@ ; [fortress] and [airbase]. ; ; name = Name of the base type. +; disabled = Not really in game. This field will be removed +; in future versions when number of +; bases defined is adjustable. ; graphic = tag specifing preferred graphic ; graphic_alt = tag for alternate garphic if preferred graphic is not ; present. Can use eg "-" for no alternate graphic. diff -Nurd -X.diff_ignore freeciv/server/ruleset.c freeciv/server/ruleset.c --- freeciv/server/ruleset.c 2008-05-06 03:59:25.000000000 +0300 +++ freeciv/server/ruleset.c 2008-06-15 15:11:47.000000000 +0300 @@ -1954,6 +1954,9 @@ section = "unknown"; } + pbase->disabled = secfile_lookup_bool_default(file, FALSE, + "%s.disabled", section); + sz_strlcpy(pbase->graphic_str, secfile_lookup_str_default(file, "-", "%s.graphic", section)); sz_strlcpy(pbase->graphic_alt,
_______________________________________________ Freeciv-dev mailing list Freeciv-dev@gna.org https://mail.gna.org/listinfo/freeciv-dev