<URL: http://bugs.freeciv.org/Ticket/Display.html?id=37321 >
On 3/3/07, Per I. Mathisen <[EMAIL PROTECTED]> wrote: > So, anyone care to make a patch? ;-) Untested. Normal upgrade already kept veteran levels and autoupgrade had ruleset option. This patch simply adds ruleset option for normal upgrade also. - ML
diff -Nurd -X.diff_ignore freeciv/common/packets.def freeciv/common/packets.def --- freeciv/common/packets.def 2007-03-03 23:02:08.000000000 +0200 +++ freeciv/common/packets.def 2007-03-04 00:10:49.000000000 +0200 @@ -438,6 +438,7 @@ UINT8 tech_leakage; YEAR tech_cost_double_year; BOOL killstack; + UINT8 upgrade_veteran_loss; UINT8 autoupgrade_veteran_loss; UINT16 incite_improvement_factor; UINT16 incite_unit_factor; diff -Nurd -X.diff_ignore freeciv/data/civ1/game.ruleset freeciv/data/civ1/game.ruleset --- freeciv/data/civ1/game.ruleset 2006-07-17 23:56:23.000000000 +0300 +++ freeciv/data/civ1/game.ruleset 2007-03-04 00:14:11.000000000 +0200 @@ -23,6 +23,8 @@ min_city_center_shield = 0 min_city_center_trade = 0 +; Number of veteran levels lost when upgrading a unit +upgrade_veteran_loss = 255 ; Number of veteran levels lost when auto-upgrading a unit autoupgrade_veteran_loss = 255 diff -Nurd -X.diff_ignore freeciv/data/civ2/game.ruleset freeciv/data/civ2/game.ruleset --- freeciv/data/civ2/game.ruleset 2006-07-17 23:56:23.000000000 +0300 +++ freeciv/data/civ2/game.ruleset 2007-03-04 00:14:28.000000000 +0200 @@ -23,6 +23,8 @@ min_city_center_shield = 1 min_city_center_trade = 0 +; Number of veteran levels lost when upgrading a unit +upgrade_veteran_loss = 255 ; Number of veteran levels lost when auto-upgrading a unit autoupgrade_veteran_loss = 255 diff -Nurd -X.diff_ignore freeciv/data/default/game.ruleset freeciv/data/default/game.ruleset --- freeciv/data/default/game.ruleset 2006-07-17 23:56:23.000000000 +0300 +++ freeciv/data/default/game.ruleset 2007-03-04 00:11:56.000000000 +0200 @@ -42,6 +42,8 @@ min_city_center_shield = 1 min_city_center_trade = 0 +; Number of veteran levels lost when upgrading a unit +upgrade_veteran_loss = 0 ; Number of veteran levels lost when auto-upgrading a unit autoupgrade_veteran_loss = 0 diff -Nurd -X.diff_ignore freeciv/server/ruleset.c freeciv/server/ruleset.c --- freeciv/server/ruleset.c 2007-03-03 23:02:08.000000000 +0200 +++ freeciv/server/ruleset.c 2007-03-04 00:11:43.000000000 +0200 @@ -2724,6 +2724,9 @@ game.info.tech_cost_double_year = secfile_lookup_int_default(&file, 1, "civstyle.tech_cost_double_year"); + game.info.upgrade_veteran_loss + = secfile_lookup_int(&file, "civstyle.upgrade_veteran_loss"); + game.info.autoupgrade_veteran_loss = secfile_lookup_int(&file, "civstyle.autoupgrade_veteran_loss"); diff -Nurd -X.diff_ignore freeciv/server/unittools.c freeciv/server/unittools.c --- freeciv/server/unittools.c 2007-02-28 23:02:37.000000000 +0200 +++ freeciv/server/unittools.c 2007-03-04 00:09:36.000000000 +0200 @@ -259,17 +259,6 @@ unit_type(punit)->name, upgrade_type->name, get_location_str_in(pplayer, punit->tile)); - - /* For historical reasons some veteran status may be lost while - * upgrading. Note that the upgraded unit may have the NoVeteran - * flag set. */ - if (unit_type_flag(upgrade_type, F_NO_VETERAN)) { - punit->veteran = 0; - } else { - punit->veteran = MAX(punit->veteran - - game.info.autoupgrade_veteran_loss, 0); - } - assert(test_unit_upgrade(punit, TRUE) == UR_OK); upgrade_unit(punit, upgrade_type, TRUE); unit_list_unlink(candidates, punit); upgrades--; @@ -1267,6 +1256,16 @@ punit->hp = MAX(punit->hp * unit_type(punit)->hp / old_hp, 1); punit->moves_left = punit->moves_left * unit_move_rate(punit) / old_mr; + if (unit_type_flag(to_unit, F_NO_VETERAN)) { + punit->veteran = 0; + } else if (is_free) { + punit->veteran = MAX(punit->veteran + - game.info.autoupgrade_veteran_loss, 0); + } else { + punit->veteran = MAX(punit->veteran + - game.info.upgrade_veteran_loss, 0); + } + conn_list_do_buffer(pplayer->connections); unit_refresh_vision(punit); diff -Nurd -X.diff_ignore freeciv/version.in freeciv/version.in --- freeciv/version.in 2007-03-03 23:02:09.000000000 +0200 +++ freeciv/version.in 2007-03-04 00:11:04.000000000 +0200 @@ -24,4 +24,4 @@ # - Avoid adding a new manditory capbility to the development branch for # as long as possible. We want to maintain network compatibility with # the stable branch for as long as possible. -FREECIV_NETWORK_CAPSTRING("+Freeciv.Devel.2007.Mar.03") +FREECIV_NETWORK_CAPSTRING("+Freeciv.Devel.2007.Mar.04")
_______________________________________________ Freeciv-dev mailing list Freeciv-dev@gna.org https://mail.gna.org/listinfo/freeciv-dev