Fix crash if AI attempts to set order flags of invalid vehicle's order
Fixes: 4c8b358f
This commit is contained in:
@@ -574,11 +574,13 @@ static void _DoCommandReturnSetOrderFlags(class ScriptInstance *instance)
|
|||||||
VehicleID vehicle_id = (VehicleID)ScriptObject::GetCallbackVariable(0);
|
VehicleID vehicle_id = (VehicleID)ScriptObject::GetCallbackVariable(0);
|
||||||
OrderPosition order_position = (OrderPosition)ScriptObject::GetCallbackVariable(1);
|
OrderPosition order_position = (OrderPosition)ScriptObject::GetCallbackVariable(1);
|
||||||
ScriptOrderFlags order_flags = (ScriptOrderFlags)ScriptObject::GetCallbackVariable(2);
|
ScriptOrderFlags order_flags = (ScriptOrderFlags)ScriptObject::GetCallbackVariable(2);
|
||||||
if (_settings_game.order.nonstop_only && ::Vehicle::Get(vehicle_id)->IsGroundVehicle()) order_flags |= OF_NON_STOP_INTERMEDIATE;
|
|
||||||
|
|
||||||
order_position = ScriptOrder::ResolveOrderPosition(vehicle_id, order_position);
|
order_position = ScriptOrder::ResolveOrderPosition(vehicle_id, order_position);
|
||||||
|
|
||||||
EnforcePrecondition(false, IsValidVehicleOrder(vehicle_id, order_position));
|
EnforcePrecondition(false, IsValidVehicleOrder(vehicle_id, order_position));
|
||||||
|
|
||||||
|
if (_settings_game.order.nonstop_only && ::Vehicle::Get(vehicle_id)->IsGroundVehicle()) order_flags |= OF_NON_STOP_INTERMEDIATE;
|
||||||
|
|
||||||
EnforcePrecondition(false, AreOrderFlagsValid(GetOrderDestination(vehicle_id, order_position), order_flags));
|
EnforcePrecondition(false, AreOrderFlagsValid(GetOrderDestination(vehicle_id, order_position), order_flags));
|
||||||
|
|
||||||
const Order *order = ::ResolveOrder(vehicle_id, order_position);
|
const Order *order = ::ResolveOrder(vehicle_id, order_position);
|
||||||
|
Reference in New Issue
Block a user