1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-10-18 14:16:37 +00:00

Revert bad change, do actual fix

This commit is contained in:
SkyHasACat 2025-08-04 11:09:26 -07:00
parent 1a886db951
commit e74167c7b7

View file

@ -74,13 +74,14 @@ namespace
npc.mHair = ESM::RefId::deserializeText(rec["hair"].get<std::string_view>()); npc.mHair = ESM::RefId::deserializeText(rec["hair"].get<std::string_view>());
if (rec["primaryFaction"] != sol::nil) if (rec["primaryFaction"] != sol::nil)
{ {
const auto str = rec["primaryFaction"].get<std::string>(); auto factionStr = rec["primaryFaction"].get<std::string_view>();
ESM::RefId factionId = ESM::RefId::deserializeText(factionStr);
const auto& factionStore = MWBase::Environment::get().getESMStore()->get<ESM::Faction>(); const auto& factionStore = MWBase::Environment::get().getESMStore()->get<ESM::Faction>();
if (!factionStore.search(factionId))
throw std::runtime_error("Invalid faction '" + std::string(factionStr) + "' in primaryFaction");
if (!factionStore.search(ESM::RefId::deserializeText(str))) npc.mFaction = factionId;
throw std::runtime_error("Invalid faction '" + str + "' in primaryFaction");
npc.mFaction = ESM::RefId::deserializeText(str);
} }
if (rec["isMale"] != sol::nil) if (rec["isMale"] != sol::nil)
{ {
@ -131,9 +132,8 @@ namespace
{ {
if (!npc.mFaction.empty()) if (!npc.mFaction.empty())
{ {
const ESM::RefId factionId = npc.mFaction;
const ESM::Faction* faction const ESM::Faction* faction
= MWBase::Environment::get().getESMStore()->get<ESM::Faction>().find(factionId); = MWBase::Environment::get().getESMStore()->get<ESM::Faction>().find(npc.mFaction);
int luaValue = rec["primaryFactionRank"]; int luaValue = rec["primaryFactionRank"];
int rank = LuaUtil::fromLuaIndex(luaValue); int rank = LuaUtil::fromLuaIndex(luaValue);
@ -142,7 +142,7 @@ namespace
if (rank < 0 || rank >= maxRank) if (rank < 0 || rank >= maxRank)
throw std::runtime_error("primaryFactionRank: Requested rank " + std::to_string(rank) throw std::runtime_error("primaryFactionRank: Requested rank " + std::to_string(rank)
+ " is out of bounds for faction " + factionId.toDebugString()); + " is out of bounds for faction " + npc.mFaction.toDebugString());
npc.mNpdt.mRank = rank; npc.mNpdt.mRank = rank;
} }