예제 #1
0
    int Enchanting::getMaxEnchantValue() const
    {
        if (itemEmpty())
            return 0;

        const MWWorld::ESMStore &store = MWBase::Environment::get().getWorld()->getStore();

        return static_cast<int>(mOldItemPtr.getClass().getEnchantmentPoints(mOldItemPtr) * store.get<ESM::GameSetting>().find("fEnchantmentMult")->getFloat());
    }
예제 #2
0
 void Enchanting::setOldItem(MWWorld::Ptr oldItem)
 {
     mOldItemPtr=oldItem;
     if(!itemEmpty())
     {
         mObjectType = mOldItemPtr.getTypeName();
     }
     else
     {
         mObjectType="";
     }
 }
예제 #3
0
    void Enchanting::nextCastStyle()
    {
        if (itemEmpty())
        {
            mCastStyle = ESM::Enchantment::WhenUsed;
            return;
        }

        const bool powerfulSoul = getGemCharge() >= \
                MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find ("iSoulAmountForConstantEffect")->getInt();
        if ((mObjectType == typeid(ESM::Armor).name()) || (mObjectType == typeid(ESM::Clothing).name()))
        { // Armor or Clothing
            switch(mCastStyle)
            {
                case ESM::Enchantment::WhenUsed:
                    if (powerfulSoul)
                        mCastStyle = ESM::Enchantment::ConstantEffect;
                    return;
                default: // takes care of Constant effect too
                    mCastStyle = ESM::Enchantment::WhenUsed;
                    return;
            }
        }
        else if(mObjectType == typeid(ESM::Weapon).name())
        { // Weapon
            switch(mCastStyle)
            {
                case ESM::Enchantment::WhenStrikes:
                    mCastStyle = ESM::Enchantment::WhenUsed;
                    return;
                case ESM::Enchantment::WhenUsed:
                    if (powerfulSoul)
                        mCastStyle = ESM::Enchantment::ConstantEffect;
                    else
                        mCastStyle = ESM::Enchantment::WhenStrikes;
                    return;
                default: // takes care of Constant effect too
                    mCastStyle = ESM::Enchantment::WhenStrikes;
                    return;
            }
        }
        else if(mObjectType == typeid(ESM::Book).name())
        { // Scroll or Book
            mCastStyle = ESM::Enchantment::CastOnce;
            return;
        }

        // Fail case
        mCastStyle = ESM::Enchantment::CastOnce;
    }
예제 #4
0
 void Enchanting::setOldItem(MWWorld::Ptr oldItem)
 {
     mOldItemPtr=oldItem;
     if(!itemEmpty())
     {
         mObjectType = mOldItemPtr.getTypeName();
         mOldItemId = mOldItemPtr.getCellRef().mRefID;
         mOldItemCount = mOldItemPtr.getRefData().getCount();
     }
     else
     {
         mObjectType="";
         mOldItemId="";
     }
 }
예제 #5
0
 float Enchanting::getMaxEnchantValue() const
 {
     if (itemEmpty())
         return 0;
     return MWWorld::Class::get(mOldItemPtr).getEnchantmentPoints(mOldItemPtr);
 }