ship_cmd.c
changeset 1790 47963a0cfca3
parent 1757 89f63a75ffd2
child 1793 b9a37c98b468
--- a/ship_cmd.c	Wed May 11 15:31:10 2005 +0000
+++ b/ship_cmd.c	Wed May 11 16:17:03 2005 +0000
@@ -51,7 +51,7 @@
 	DrawStringMultiCenter(x, y, STR_982E_COST_MAX_SPEED_CAPACITY, maxw);
 }
 
-int GetShipImage(Vehicle *v, byte direction)
+int GetShipImage(const Vehicle *v, byte direction)
 {
 	int spritenum = v->spritenum;
 
@@ -1032,19 +1032,24 @@
 	return 0;
 }
 
+/** Change the service interval for ships.
+ * @param x,y unused
+ * @param p1 vehicle ID that is being service-interval-changed
+ * @param p2 new service interval
+ */
 int32 CmdChangeShipServiceInt(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 {
 	Vehicle *v;
+	uint16 serv_int = GetServiceIntervalClamped(p2); /* Double check the service interval from the user-input */
 
-	if (!IsVehicleIndex(p1)) return CMD_ERROR;
+	if (serv_int != p2 || !IsVehicleIndex(p1)) return CMD_ERROR;
 
 	v = GetVehicle(p1);
 
-	if (v->type != VEH_Ship || !CheckOwnership(v->owner))
-		return CMD_ERROR;
+	if (v->type != VEH_Ship || !CheckOwnership(v->owner)) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
-		v->service_interval = (uint16)p2;
+		v->service_interval = serv_int;
 		InvalidateWindowWidget(WC_VEHICLE_DETAILS, v->index, 7);
 	}