diff --git a/Tactical/LogicalBodyTypes/Filter.cpp b/Tactical/LogicalBodyTypes/Filter.cpp index e264bf68..5e5ce4e3 100644 --- a/Tactical/LogicalBodyTypes/Filter.cpp +++ b/Tactical/LogicalBodyTypes/Filter.cpp @@ -189,6 +189,9 @@ bool Filter::Match(SOLDIERTYPE* pSoldier) { case REQ_WEAPON_TYPE: cmp_val = Weapon[pSoldier->inv[HANDPOS].usItem].ubWeaponType; break; + case REQ_LEFT_WEAPON_TYPE: + cmp_val = Weapon[pSoldier->inv[SECONDHANDPOS].usItem].ubWeaponType; + break; case REQ_CALIBRE: cmp_val = Weapon[pSoldier->inv[HANDPOS].usItem].ubCalibre; break; @@ -204,6 +207,9 @@ bool Filter::Match(SOLDIERTYPE* pSoldier) { case REQ_HELMET_AMOR_COVERAGE: cmp_val = Armour[Item[pSoldier->inv[HELMETPOS].usItem].ubClassIndex].ubCoverage; break; + case REQ_WEARING_BACKPACK: + cmp_val = pSoldier->inv[BPACKPOCKPOS].exists(); + break; default: if (q < NUM_REQTYPESINV) { cmp_val = pSoldier->inv[q].usItem; diff --git a/Tactical/LogicalBodyTypes/Filter.h b/Tactical/LogicalBodyTypes/Filter.h index fbe57c0b..ac687087 100644 --- a/Tactical/LogicalBodyTypes/Filter.h +++ b/Tactical/LogicalBodyTypes/Filter.h @@ -57,11 +57,13 @@ public: REQ_WEAPON_IN_HAND, REQ_WEAPON_CLASS, REQ_WEAPON_TYPE, + REQ_LEFT_WEAPON_TYPE, REQ_CALIBRE, REQ_VEST_AMOR_PROTECTION, REQ_VEST_AMOR_COVERAGE, REQ_HELMET_AMOR_PROTECTION, REQ_HELMET_AMOR_COVERAGE, + REQ_WEARING_BACKPACK, NUM_REQTYPES, // 3rd byte is for operator flags _REQ_BTWN = 0x20000, diff --git a/Tactical/LogicalBodyTypes/FilterDB.cpp b/Tactical/LogicalBodyTypes/FilterDB.cpp index 890c72fa..8e848fdc 100644 --- a/Tactical/LogicalBodyTypes/FilterDB.cpp +++ b/Tactical/LogicalBodyTypes/FilterDB.cpp @@ -271,7 +271,7 @@ namespace LogicalBodyTypes { /***************************************** Filter enum criterion types ******************************************/ - LOGBT_ENUMDB_ADD("IntegerFilterCriterionTypes", 32, + LOGBT_ENUMDB_ADD("IntegerFilterCriterionTypes", 33, Filter::REQ_HELMETPOS, Filter::REQ_VESTPOS, Filter::REQ_LEGPOS, @@ -303,20 +303,22 @@ namespace LogicalBodyTypes { Filter::REQ_VEST_AMOR_PROTECTION, Filter::REQ_VEST_AMOR_COVERAGE, Filter::REQ_HELMET_AMOR_PROTECTION, - Filter::REQ_HELMET_AMOR_COVERAGE + Filter::REQ_HELMET_AMOR_COVERAGE, + Filter::REQ_WEARING_BACKPACK ); /***************************************** Filter enum criterion types ******************************************/ - LOGBT_ENUMDB_ADD("EnumFilterCriterionTypes", 7, + LOGBT_ENUMDB_ADD("EnumFilterCriterionTypes", 8, Filter::REQ_SEX, Filter::REQ_MERC_TYPE, Filter::REQ_SOLDIER_CLASS, Filter::REQ_CIVILIANGROUP, Filter::REQ_BODYTYPE, Filter::REQ_WEAPON_CLASS, - Filter::REQ_WEAPON_TYPE + Filter::REQ_WEAPON_TYPE, + Filter::REQ_LEFT_WEAPON_TYPE ); /***************************************** @@ -672,7 +674,7 @@ namespace LogicalBodyTypes { /***************************************** Weapon Type ******************************************/ - LOGBT_ENUMDB_ADD("WEAPON_TYPE", GUN_TYPES_MAX, + LOGBT_ENUMDB_ADD("WEAPON_TYPE", GUN_TYPES_MAX, NOT_GUN, GUN_PISTOL, GUN_M_PISTOL, @@ -684,6 +686,17 @@ namespace LogicalBodyTypes { GUN_SHOTGUN ); + LOGBT_ENUMDB_ADD("LEFT_WEAPON_TYPE", GUN_TYPES_MAX, + NOT_GUN, + GUN_PISTOL, + GUN_M_PISTOL, + GUN_SMG, + GUN_RIFLE, + GUN_SN_RIFLE, + GUN_AS_RIFLE, + GUN_LMG, + GUN_SHOTGUN + ); }; }