Author: sveinung
Date: Wed Jan 27 15:14:15 2016
New Revision: 31633
URL: http://svn.gna.org/viewcvs/freeciv?rev=31633&view=rev
Log:
Max paratroopers_range is 255.
The network protocol transfers paratroopers_range in an UINT8. This limits
its value to 255.
Add a sanity check that paratroopers_range is in range. Document the
maximum value in ruleset comments.
See patch #6833
Modified:
trunk/common/unittype.h
trunk/data/alien/units.ruleset
trunk/data/civ1/units.ruleset
trunk/data/civ2/units.ruleset
trunk/data/civ2civ3/units.ruleset
trunk/data/classic/units.ruleset
trunk/data/experimental/units.ruleset
trunk/data/multiplayer/units.ruleset
trunk/data/sandbox/units.ruleset
trunk/data/stub/units.ruleset
trunk/server/rssanity.c
Modified: trunk/common/unittype.h
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/common/unittype.h?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/common/unittype.h (original)
+++ trunk/common/unittype.h Wed Jan 27 15:14:15 2016
@@ -36,6 +36,12 @@
* to hold full number of unit types.
* Used in the network protocol. */
#define U_LAST MAX_NUM_ITEMS
+
+/* The largest distance a ruleset can allow a unit to paradrop.
+ * Remember to make sure that the field type of PACKET_RULESET_UNIT's
+ * paratroopers_range field can transfer the new maximum if you increase
+ * it. */
+#define UNIT_MAX_PARADROP_RANGE 255
/* Used in the network protocol. */
#define SPECENUM_NAME unit_class_flag_id
Modified: trunk/data/alien/units.ruleset
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/data/alien/units.ruleset?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/data/alien/units.ruleset (original)
+++ trunk/data/alien/units.ruleset Wed Jan 27 15:14:15 2016
@@ -334,7 +334,8 @@
;
; Following flag strings require extra fields:
; "Paratroopers"
-; paratroopers_range = the maximal range the unit can be paradropped to
+; paratroopers_range = the maximal range the unit can be paradropped to.
+; Max range is 255.
; paratroopers_mr_req = the move rate which is required at least for
; paradropping (whole movement points)
; paratroopers_mr_sub = the move rate which is subtracted after paradropping
Modified: trunk/data/civ1/units.ruleset
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ1/units.ruleset?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/data/civ1/units.ruleset (original)
+++ trunk/data/civ1/units.ruleset Wed Jan 27 15:14:15 2016
@@ -250,7 +250,8 @@
;
; Following flag strings require extra fields: (but do not appear in Civ1)
; "Paratroopers"
-; paratroopers_range = the maximal range the unit can be paradropped to
+; paratroopers_range = the maximal range the unit can be paradropped to.
+; Max range is 255.
; paratroopers_mr_req = the move rate which is required at least for
; paradropping (whole movement points)
; paratroopers_mr_sub = the move rate which is subtracted after paradropping
Modified: trunk/data/civ2/units.ruleset
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ2/units.ruleset?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/data/civ2/units.ruleset (original)
+++ trunk/data/civ2/units.ruleset Wed Jan 27 15:14:15 2016
@@ -262,7 +262,8 @@
;
; Following flag strings require extra fields:
; "Paratroopers"
-; paratroopers_range = the maximal range the unit can be paradropped to
+; paratroopers_range = the maximal range the unit can be paradropped to.
+; Max range is 255.
; paratroopers_mr_req = the move rate which is required at least for
; paradropping (whole movement points)
; paratroopers_mr_sub = the move rate which is subtracted after paradropping
Modified: trunk/data/civ2civ3/units.ruleset
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ2civ3/units.ruleset?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/data/civ2civ3/units.ruleset (original)
+++ trunk/data/civ2civ3/units.ruleset Wed Jan 27 15:14:15 2016
@@ -374,7 +374,8 @@
;
; Following flag strings require extra fields:
; "Paratroopers"
-; paratroopers_range = the maximal range the unit can be paradropped to
+; paratroopers_range = the maximal range the unit can be paradropped to.
+; Max range is 255.
; paratroopers_mr_req = the move rate which is required at least for
; paradropping (whole movement points)
; paratroopers_mr_sub = the move rate which is subtracted after paradropping
Modified: trunk/data/classic/units.ruleset
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/data/classic/units.ruleset?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/data/classic/units.ruleset (original)
+++ trunk/data/classic/units.ruleset Wed Jan 27 15:14:15 2016
@@ -348,7 +348,8 @@
;
; Following flag strings require extra fields:
; "Paratroopers"
-; paratroopers_range = the maximal range the unit can be paradropped to
+; paratroopers_range = the maximal range the unit can be paradropped to.
+; Max range is 255.
; paratroopers_mr_req = the move rate which is required at least for
; paradropping (whole movement points)
; paratroopers_mr_sub = the move rate which is subtracted after paradropping
Modified: trunk/data/experimental/units.ruleset
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/data/experimental/units.ruleset?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/data/experimental/units.ruleset (original)
+++ trunk/data/experimental/units.ruleset Wed Jan 27 15:14:15 2016
@@ -362,7 +362,8 @@
;
; Following flag strings require extra fields:
; "Paratroopers"
-; paratroopers_range = the maximal range the unit can be paradropped to
+; paratroopers_range = the maximal range the unit can be paradropped to.
+; Max range is 255.
; paratroopers_mr_req = the move rate which is required at least for
; paradropping (whole movement points)
; paratroopers_mr_sub = the move rate which is subtracted after paradropping
Modified: trunk/data/multiplayer/units.ruleset
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/data/multiplayer/units.ruleset?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/data/multiplayer/units.ruleset (original)
+++ trunk/data/multiplayer/units.ruleset Wed Jan 27 15:14:15 2016
@@ -347,7 +347,8 @@
;
; Following flag strings require extra fields:
; "Paratroopers"
-; paratroopers_range = the maximal range the unit can be paradropped to
+; paratroopers_range = the maximal range the unit can be paradropped to.
+; Max range is 255.
; paratroopers_mr_req = the move rate which is required at least for
; paradropping (whole movement points)
; paratroopers_mr_sub = the move rate which is subtracted after paradropping
Modified: trunk/data/sandbox/units.ruleset
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/data/sandbox/units.ruleset?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/data/sandbox/units.ruleset (original)
+++ trunk/data/sandbox/units.ruleset Wed Jan 27 15:14:15 2016
@@ -375,7 +375,8 @@
;
; Following flag strings require extra fields:
; "Paratroopers"
-; paratroopers_range = the maximal range the unit can be paradropped to
+; paratroopers_range = the maximal range the unit can be paradropped to.
+; Max range is 255.
; paratroopers_mr_req = the move rate which is required at least for
; paradropping (whole movement points)
; paratroopers_mr_sub = the move rate which is subtracted after paradropping
Modified: trunk/data/stub/units.ruleset
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/data/stub/units.ruleset?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/data/stub/units.ruleset (original)
+++ trunk/data/stub/units.ruleset Wed Jan 27 15:14:15 2016
@@ -266,7 +266,8 @@
;
; Following flag strings require extra fields:
; "Paratroopers"
-; paratroopers_range = the maximal range the unit can be paradropped to
+; paratroopers_range = the maximal range the unit can be paradropped to.
+; Max range is 255.
; paratroopers_mr_req = the move rate which is required at least for
; paradropping (whole movement points)
; paratroopers_mr_sub = the move rate which is subtracted after paradropping
Modified: trunk/server/rssanity.c
URL:
http://svn.gna.org/viewcvs/freeciv/trunk/server/rssanity.c?rev=31633&r1=31632&r2=31633&view=diff
==============================================================================
--- trunk/server/rssanity.c (original)
+++ trunk/server/rssanity.c Wed Jan 27 15:14:15 2016
@@ -738,6 +738,20 @@
}
} unit_type_iterate_end;
+ /* Check that unit type fields are in range. */
+ unit_type_iterate(putype) {
+ if (putype->paratroopers_range < 0
+ || putype->paratroopers_range > UNIT_MAX_PARADROP_RANGE) {
+ /* Paradrop range is limited by the network protocol. */
+ ruleset_error(LOG_ERROR,
+ "The paratroopers_range of the unit type '%s' is %d. "
+ "That is out of range. Max range is %d.",
+ utype_rule_name(putype),
+ putype->paratroopers_range, UNIT_MAX_PARADROP_RANGE);
+ ok = FALSE;
+ }
+ } unit_type_iterate_end;
+
/* Check requirement sets against conflicting requirements.
* Effects use requirement lists */
if (!iterate_effect_cache(effect_list_sanity_cb, NULL)) {
_______________________________________________
Freeciv-commits mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-commits