mirror of
https://github.com/OpenMW/openmw.git
synced 2026-01-20 08:00:54 +00:00
Triune Tests of Strength, Block, and Breathing Water. The ending of the words is ALMSIVI.
This commit is contained in:
parent
2c76043cf5
commit
495207e2a5
4 changed files with 25 additions and 18 deletions
|
|
@ -391,19 +391,22 @@ namespace
|
|||
return MWMechanics::MagicApplicationResult::Type::APPLIED;
|
||||
}
|
||||
|
||||
static const std::map<ESM::RefId, std::string> sBoundItemsMap{
|
||||
{ ESM::MagicEffect::BoundBattleAxe, "sMagicBoundBattleAxeID" },
|
||||
{ ESM::MagicEffect::BoundBoots, "sMagicBoundBootsID" },
|
||||
{ ESM::MagicEffect::BoundCuirass, "sMagicBoundCuirassID" },
|
||||
{ ESM::MagicEffect::BoundDagger, "sMagicBoundDaggerID" },
|
||||
{ ESM::MagicEffect::BoundGloves, "sMagicBoundLeftGauntletID" },
|
||||
{ ESM::MagicEffect::BoundHelm, "sMagicBoundHelmID" },
|
||||
{ ESM::MagicEffect::BoundLongbow, "sMagicBoundLongbowID" },
|
||||
{ ESM::MagicEffect::BoundLongsword, "sMagicBoundLongswordID" },
|
||||
{ ESM::MagicEffect::BoundMace, "sMagicBoundMaceID" },
|
||||
{ ESM::MagicEffect::BoundShield, "sMagicBoundShieldID" },
|
||||
{ ESM::MagicEffect::BoundSpear, "sMagicBoundSpearID" },
|
||||
};
|
||||
const std::map<ESM::RefId, std::string>& getBoundItemsMap() {
|
||||
static const std::map<ESM::RefId, std::string> sBoundItemsMap{
|
||||
{ ESM::MagicEffect::BoundBattleAxe, "sMagicBoundBattleAxeID" },
|
||||
{ ESM::MagicEffect::BoundBoots, "sMagicBoundBootsID" },
|
||||
{ ESM::MagicEffect::BoundCuirass, "sMagicBoundCuirassID" },
|
||||
{ ESM::MagicEffect::BoundDagger, "sMagicBoundDaggerID" },
|
||||
{ ESM::MagicEffect::BoundGloves, "sMagicBoundLeftGauntletID" },
|
||||
{ ESM::MagicEffect::BoundHelm, "sMagicBoundHelmID" },
|
||||
{ ESM::MagicEffect::BoundLongbow, "sMagicBoundLongbowID" },
|
||||
{ ESM::MagicEffect::BoundLongsword, "sMagicBoundLongswordID" },
|
||||
{ ESM::MagicEffect::BoundMace, "sMagicBoundMaceID" },
|
||||
{ ESM::MagicEffect::BoundShield, "sMagicBoundShieldID" },
|
||||
{ ESM::MagicEffect::BoundSpear, "sMagicBoundSpearID" },
|
||||
};
|
||||
return sBoundItemsMap;
|
||||
}
|
||||
|
||||
using SpellsPurge = void (MWMechanics::Spells::*)();
|
||||
void purgePermanent(const MWWorld::Ptr& target, SpellsPurge method, ESM::Spell::SpellType type)
|
||||
|
|
@ -668,7 +671,7 @@ namespace MWMechanics
|
|||
{
|
||||
if (!target.getClass().hasInventoryStore(target))
|
||||
return ESM::ActiveEffect::Flag_Invalid;
|
||||
const std::string& item = sBoundItemsMap.at(effect.mEffectId);
|
||||
const std::string& item = getBoundItemsMap().at(effect.mEffectId);
|
||||
const MWWorld::Store<ESM::GameSetting>& gmst = world->getStore().get<ESM::GameSetting>();
|
||||
const ESM::RefId itemId = ESM::RefId::stringRefId(gmst.find(item)->mValue.getString());
|
||||
if (!addBoundItem(itemId, target))
|
||||
|
|
@ -1278,7 +1281,7 @@ namespace MWMechanics
|
|||
effect.mEffectId == ESM::MagicEffect::BoundBoots ||
|
||||
effect.mEffectId == ESM::MagicEffect::BoundShield)
|
||||
{
|
||||
const std::string& item = sBoundItemsMap.at(effect.mEffectId);
|
||||
const std::string& item = getBoundItemsMap().at(effect.mEffectId);
|
||||
removeBoundItem(
|
||||
ESM::RefId::stringRefId(world->getStore().get<ESM::GameSetting>().find(item)->mValue.getString()),
|
||||
target);
|
||||
|
|
|
|||
|
|
@ -172,11 +172,13 @@ namespace MWMechanics
|
|||
effect.mRange = ESM::RT_Self;
|
||||
effect.mArea = 0;
|
||||
|
||||
if (effect.mEffectID < 0)
|
||||
if (effect.mEffectID.empty())
|
||||
return std::nullopt;
|
||||
|
||||
const MWWorld::ESMStore& store = *MWBase::Environment::get().getESMStore();
|
||||
const auto magicEffect = store.get<ESM::MagicEffect>().find(effect.mEffectID);
|
||||
const auto magicEffect = store.get<ESM::MagicEffect>().search(effect.mEffectID);
|
||||
if (!magicEffect)
|
||||
return std::nullopt;
|
||||
const MWMechanics::CreatureStats& creatureStats = caster.getClass().getCreatureStats(caster);
|
||||
|
||||
float x = (caster.getClass().getSkill(caster, ESM::Skill::Alchemy)
|
||||
|
|
|
|||
|
|
@ -447,6 +447,8 @@ namespace
|
|||
refId = ESM::Attribute::Strength;
|
||||
else if constexpr (std::is_same_v<RecordType, ESM::Skill>)
|
||||
refId = ESM::Skill::Block;
|
||||
else if constexpr (std::is_same_v<RecordType, ESM::MagicEffect>)
|
||||
refId = ESM::MagicEffect::WaterBreathing;
|
||||
else
|
||||
refId = ESM::StringRefId(stringId);
|
||||
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ namespace ESM
|
|||
|
||||
for (const auto& [effectId, actor] : mSummonedCreatures)
|
||||
{
|
||||
esm.writeHNT("SUMM", effectId);
|
||||
esm.writeHNT("SUMM", ESM::MagicEffect::refIdToIndex(effectId));
|
||||
esm.writeFormId(actor, true, "ACID");
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue