fix: attachment unique overwrites handling being incorrect

This commit is contained in:
Jan 2024-02-15 21:13:58 +01:00
parent d712cbd2f8
commit 62e08c29bd
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C
2 changed files with 14 additions and 14 deletions

View File

@ -426,26 +426,26 @@ void AssetLoaderWeapon::CalculateWeaponFields(WeaponFullDef* weapon)
weapon->weapVariantDef.fOOPosAnimLength[1] = 1.0f / static_cast<float>(weapon->weapVariantDef.iAdsTransOutTime); weapon->weapVariantDef.fOOPosAnimLength[1] = 1.0f / static_cast<float>(weapon->weapVariantDef.iAdsTransOutTime);
} }
bool AssetLoaderWeapon::IsStringOverride(const char* str1, const char* str2) bool AssetLoaderWeapon::IsStringOverride(const char* baseString, const char* overrideString)
{ {
if ((str1 == nullptr) != (str2 == nullptr)) if (overrideString == nullptr || overrideString[0] == '\0')
return true;
if (str1 == nullptr)
return false; return false;
return strcmp(str1, str2) != 0; if (baseString == nullptr || baseString[0] == '\0')
return true;
return strcmp(baseString, overrideString) != 0;
} }
bool AssetLoaderWeapon::IsFxOverride(const FxEffectDef* effect1, const FxEffectDef* effect2) bool AssetLoaderWeapon::IsFxOverride(const FxEffectDef* baseEffect, const FxEffectDef* overrideEffect)
{ {
if ((effect1 == nullptr) != (effect2 == nullptr)) if (overrideEffect == nullptr)
return true;
if (effect1 == nullptr)
return false; return false;
return strcmp(effect1->name, effect2->name) != 0; if (baseEffect == nullptr)
return true;
return strcmp(baseEffect->name, overrideEffect->name) != 0;
} }
void AssetLoaderWeapon::HandleSoundOverride(WeaponAttachmentUnique* attachmentUnique, void AssetLoaderWeapon::HandleSoundOverride(WeaponAttachmentUnique* attachmentUnique,

View File

@ -11,8 +11,8 @@ namespace T6
{ {
static void LinkWeaponFullDefSubStructs(WeaponFullDef* weapon); static void LinkWeaponFullDefSubStructs(WeaponFullDef* weapon);
static bool IsStringOverride(const char* str1, const char* str2); static bool IsStringOverride(const char* baseString, const char* overrideString);
static bool IsFxOverride(const FxEffectDef* effect1, const FxEffectDef* effect2); static bool IsFxOverride(const FxEffectDef* baseEffect, const FxEffectDef* overrideEffect);
static void static void
HandleSoundOverride(WeaponAttachmentUnique* attachmentUnique, const char* snd1, const char* snd2, eAttachmentOverrideSounds sndOverrideIndex); HandleSoundOverride(WeaponAttachmentUnique* attachmentUnique, const char* snd1, const char* snd2, eAttachmentOverrideSounds sndOverrideIndex);
static void HandleFxOverride(WeaponAttachmentUnique* attachmentUnique, static void HandleFxOverride(WeaponAttachmentUnique* attachmentUnique,