diff --git a/external/CommonLibSSE b/external/CommonLibSSE index e064bdd..3282565 160000 --- a/external/CommonLibSSE +++ b/external/CommonLibSSE @@ -1 +1 @@ -Subproject commit e064bddac830d8021f3fa196133200475c5e2c92 +Subproject commit 3282565a2c86535036f5a556758fb1cf8ab85225 diff --git a/src/main/ArmorVariant.cpp b/src/main/ArmorVariant.cpp index 4cd07f2..a068957 100644 --- a/src/main/ArmorVariant.cpp +++ b/src/main/ArmorVariant.cpp @@ -25,6 +25,10 @@ auto ArmorVariant::WouldReplace(const RE::TESObjectARMA* a_armorAddon) const -> auto ArmorVariant::WouldReplaceAny(const RE::TESObjectARMO* a_armor) const -> bool { + if (!a_armor) { + return false; + } + for (auto& armorAddon : a_armor->armorAddons) { if (WouldReplace(armorAddon)) { return true; diff --git a/src/main/DynamicArmorManager.cpp b/src/main/DynamicArmorManager.cpp index ae39b07..c77784d 100644 --- a/src/main/DynamicArmorManager.cpp +++ b/src/main/DynamicArmorManager.cpp @@ -253,9 +253,12 @@ void DynamicArmorManager::ApplyVariant(RE::Actor* a_actor, const std::string& a_ } // Consider only armor items affected by the new variant - for (auto& armor : armorItems) { - if (!newVariant.WouldReplaceAny(armor)) { - armorItems.erase(armor); + for (auto armorItemIterator = armorItems.begin(); armorItemIterator != armorItems.end();) { + if (newVariant.WouldReplaceAny(*armorItemIterator)) { + armorItemIterator = armorItems.erase(armorItemIterator); + } + else { + ++armorItemIterator; } } diff --git a/src/main/EnumLookup.h b/src/main/EnumLookup.h index a073d7e..4078279 100644 --- a/src/main/EnumLookup.h +++ b/src/main/EnumLookup.h @@ -66,7 +66,7 @@ class EnumLookup private: inline static const std::unordered_map ActorValueLookup{ - { "AGGRESSION"s, RE::ActorValue::kAggression }, + { "AGGRESSION"s, RE::ActorValue::kAggresion }, { "CONFIDENCE"s, RE::ActorValue::kConfidence }, { "ENERGY"s, RE::ActorValue::kEnergy }, { "MORALITY"s, RE::ActorValue::kMorality }, @@ -95,7 +95,7 @@ class EnumLookup { "STAMINA"s, RE::ActorValue::kStamina }, { "HEALRATE"s, RE::ActorValue::kHealRate }, { "MAGICKARATE"s, RE::ActorValue::kMagickaRate }, - { "STAMINARATE"s, RE::ActorValue::kStaminaRate }, + { "STAMINARATE"s, RE::ActorValue::KStaminaRate }, { "SPEEDMULT"s, RE::ActorValue::kSpeedMult }, { "INVENTORYWEIGHT"s, RE::ActorValue::kInventoryWeight }, { "CARRYWEIGHT"s, RE::ActorValue::kCarryWeight }, @@ -112,20 +112,20 @@ class EnumLookup { "FROSTRESIST"s, RE::ActorValue::kResistFrost }, { "MAGICRESIST"s, RE::ActorValue::kResistMagic }, { "DISEASERESIST"s, RE::ActorValue::kResistDisease }, - { "PERCEPTIONCONDITION"s, RE::ActorValue::kPerceptionCondition }, - { "ENDURANCECONDITION"s, RE::ActorValue::kEnduranceCondition }, - { "LEFTATTACKCONDITION"s, RE::ActorValue::kLeftAttackCondition }, - { "RIGHTATTACKCONDITION"s, RE::ActorValue::kRightAttackCondition }, - { "LEFTMOBILITYCONDITION"s, RE::ActorValue::kLeftMobilityCondition }, - { "RIGHTMOBILITYCONDITION"s, RE::ActorValue::kRightMobilityCondition }, - { "BRAINCONDITION"s, RE::ActorValue::kBrainCondition }, + { "PERCEPTIONCONDITION"s, RE::ActorValue::kUnknown46 }, + { "ENDURANCECONDITION"s, RE::ActorValue::kUnknown47 }, + { "LEFTATTACKCONDITION"s, RE::ActorValue::kUnknown48 }, + { "RIGHTATTACKCONDITION"s, RE::ActorValue::kUnknown49 }, + { "LEFTMOBILITYCONDITION"s, RE::ActorValue::kUnknown50 }, + { "RIGHTMOBILITYCONDITION"s, RE::ActorValue::kUnknown51 }, + { "BRAINCONDITION"s, RE::ActorValue::kUnknown52 }, { "PARALYSIS"s, RE::ActorValue::kParalysis }, { "INVISIBILITY"s, RE::ActorValue::kInvisibility }, { "NIGHTEYE"s, RE::ActorValue::kNightEye }, { "DETECTLIFERANGE"s, RE::ActorValue::kDetectLifeRange }, { "WATERBREATHING"s, RE::ActorValue::kWaterBreathing }, { "WATERWALKING"s, RE::ActorValue::kWaterWalking }, - { "IGNORECRIPPLEDLIMBS"s, RE::ActorValue::kIgnoreCrippledLimbs }, + { "IGNORECRIPPLEDLIMBS"s, RE::ActorValue::kUnknown59 }, { "FAME"s, RE::ActorValue::kFame }, { "INFAMY"s, RE::ActorValue::kInfamy }, { "JUMPINGBONUS"s, RE::ActorValue::kJumpingBonus }, @@ -228,7 +228,7 @@ class EnumLookup { "VAMPIREPERKS"s, RE::ActorValue::kVampirePerks }, { "GRABACTOROFFSET"s, RE::ActorValue::kGrabActorOffset }, { "GRABBED"s, RE::ActorValue::kGrabbed }, - { "DEPRECATED05"s, RE::ActorValue::kDEPRECATED05 }, + { "DEPRECATED05"s, RE::ActorValue::kUnknown162 }, { "REFLECTDAMAGE"s, RE::ActorValue::kReflectDamage }, }; }; diff --git a/tools/BethesdaCMakeModules b/tools/BethesdaCMakeModules index 528de08..72fb6a3 160000 --- a/tools/BethesdaCMakeModules +++ b/tools/BethesdaCMakeModules @@ -1 +1 @@ -Subproject commit 528de081cfe43bd30f9a9e7b16c3cc502f31b936 +Subproject commit 72fb6a3d67ef8974850aea7805030caaac4a807f diff --git a/tools/SKSE-CMakeModules b/tools/SKSE-CMakeModules index c134ad3..e559058 160000 --- a/tools/SKSE-CMakeModules +++ b/tools/SKSE-CMakeModules @@ -1 +1 @@ -Subproject commit c134ad3c6c71d9817d42052234f1a4859c0c0032 +Subproject commit e559058ed5908224fb12ea9b64d3206e636228ec