Skip to content

Commit 14b4fd3

Browse files
authored
Fix weapon flags +override handling wrt spawn flag (#5488)
* fix wep flags +override wrt spawn * Revert "fix wep flags +override wrt spawn" This reverts commit 08a2bee. * parse +override ahead of time * use string list instead * hopefully fix whitespace???
1 parent 275f96d commit 14b4fd3

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

code/weapon/weapons.cpp

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -627,15 +627,26 @@ void parse_wi_flags(weapon_info *weaponp, flagset<Weapon::Info_Flags> preset_wi_
627627
if (!optional_string("$Flags:"))
628628
return;
629629

630+
// have to do this slightly out of order in order to handle spawn properly
631+
// skip OVER flags, check for +override and reset num_spawn_weapons_defined
632+
// otherwise if done afterward, new and old spawn weapons can get mixed up
633+
pause_parse();
634+
SCP_vector<SCP_string> flags;
635+
stuff_string_list(flags);
636+
if (optional_string("+override")) {
637+
// resetting the flag values if set to override the existing flags
638+
weaponp->wi_flags = preset_wi_flags;
639+
weaponp->num_spawn_weapons_defined = 0;
640+
}
641+
unpause_parse();
642+
630643
// To make sure +override doesn't overwrite previously parsed values we parse the flags into a separate flagset
631644
SCP_vector<SCP_string> unparsed;
632645
flagset<Weapon::Info_Flags> parsed_flags;
633646
parse_string_flag_list_special(parsed_flags, Weapon_Info_Flags, &unparsed, weaponp, parsed_flags);
634647

635-
if (optional_string("+override")) {
636-
// resetting the flag values if set to override the existing flags
637-
weaponp->wi_flags = preset_wi_flags;
638-
}
648+
optional_string("+override"); // already parsed above
649+
639650
// Now add the parsed flags to the weapon flags
640651
weaponp->wi_flags |= parsed_flags;
641652

0 commit comments

Comments
 (0)