diff --git a/code/parse/sexp.cpp b/code/parse/sexp.cpp index cfbb2cbaba8..fd9f2da21cc 100644 --- a/code/parse/sexp.cpp +++ b/code/parse/sexp.cpp @@ -2577,15 +2577,19 @@ int check_sexp_syntax(int node, int return_type, int recursive, int *bad_node, s if (type2 != SEXP_ATOM_STRING) { return SEXP_CHECK_TYPE_MISMATCH; } - if (ship_name_lookup(CTEXT(node), 1) < 0) { - if (Fred_running || !mission_check_ship_yet_to_arrive(CTEXT(node))) { - return SEXP_CHECK_INVALID_SHIP; - } + if (ship_name_lookup(CTEXT(node), 1) >= 0) { + break; } - if (prop_name_lookup(CTEXT(node)) < 0) { - return SEXP_CHECK_INVALID_PROP; + if (prop_name_lookup(CTEXT(node)) >= 0) { + break; } - break; + + // also check arrival list if we're running the game + if (!Fred_running && mission_check_ship_yet_to_arrive(CTEXT(node))) { + break; + } + + return SEXP_CHECK_INVALID_SHIP_PROP; case OPF_AWACS_SUBSYSTEM: case OPF_ROTATING_SUBSYSTEM: @@ -35290,6 +35294,9 @@ const char *sexp_error_message(int num) case SEXP_CHECK_INVALID_SHIP_WING: return "Invalid ship or wing name"; + case SEXP_CHECK_INVALID_SHIP_PROP: + return "Invalid ship or prop name"; + case SEXP_CHECK_INVALID_SHIP_TYPE: return "Invalid ship type"; diff --git a/code/parse/sexp.h b/code/parse/sexp.h index 93a41923c07..abe08dbfd91 100644 --- a/code/parse/sexp.h +++ b/code/parse/sexp.h @@ -1199,6 +1199,7 @@ enum sexp_error_check SEXP_CHECK_INVALID_POINT, // invalid point SEXP_CHECK_NEGATIVE_NUM, // negative number wasn't allowed SEXP_CHECK_INVALID_SHIP_WING, // invalid ship/wing + SEXP_CHECK_INVALID_SHIP_PROP, // invalid ship/prop SEXP_CHECK_INVALID_SHIP_TYPE, // invalid ship type SEXP_CHECK_UNKNOWN_MESSAGE, // invalid message SEXP_CHECK_INVALID_PRIORITY, // invalid priority for a message diff --git a/code/prop/prop.cpp b/code/prop/prop.cpp index 13acac3c24e..80d7c014192 100644 --- a/code/prop/prop.cpp +++ b/code/prop/prop.cpp @@ -322,7 +322,7 @@ void parse_prop_table(const char* filename) } if (!flag_found) { - Warning(LOCATION, "Bogus string in ship flags: %s\n", cur_flag); + Warning(LOCATION, "Bogus string in prop flags: %s\n", cur_flag); } } }