<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
[email protected]
https://mail.gna.org/listinfo/freeciv-dev