void MagicEffect::load(ESMReader &esm) { esm.getHNT(mIndex, "INDX"); esm.getHNT(mData, "MEDT", 36); if (esm.getFormat() == 0) { // don't allow mods to change fixed flags in the legacy format mData.mFlags &= (AllowSpellmaking | AllowEnchanting | NegativeLight); if (mIndex>=0 && mIndex<NumberOfHardcodedFlags) mData.mFlags |= HardcodedFlags[mIndex]; } mIcon = esm.getHNOString("ITEX"); mParticle = esm.getHNOString("PTEX"); mBoltSound = esm.getHNOString("BSND"); mCastSound = esm.getHNOString("CSND"); mHitSound = esm.getHNOString("HSND"); mAreaSound = esm.getHNOString("ASND"); mCasting = esm.getHNOString("CVFX"); mBolt = esm.getHNOString("BVFX"); mHit = esm.getHNOString("HVFX"); mArea = esm.getHNOString("AVFX"); mDescription = esm.getHNOString("DESC"); }
void Creature::load(ESMReader &esm) { mPersistent = esm.getRecordFlags() & 0x0400; mModel = esm.getHNString("MODL"); mOriginal = esm.getHNOString("CNAM"); mName = esm.getHNOString("FNAM"); mScript = esm.getHNOString("SCRI"); esm.getHNT(mData, "NPDT", 96); esm.getHNT(mFlags, "FLAG"); mScale = 1.0; esm.getHNOT(mScale, "XSCL"); mInventory.load(esm); mSpells.load(esm); if (esm.isNextSub("AIDT")) { esm.getHExact(&mAiData, sizeof(mAiData)); mHasAI = true; } else mHasAI = false; mAiPackage.load(esm); esm.skipRecord(); }
void SoundGenerator::load(ESMReader &esm) { esm.getHNT(type, "DATA", 4); creature = esm.getHNOString("CNAM"); sound = esm.getHNOString("SNAM"); }
void BirthSign::load(ESMReader &esm) { mName = esm.getHNString("FNAM"); mTexture = esm.getHNOString("TNAM"); mDescription = esm.getHNOString("DESC"); mPowers.load(esm); }
void Ingredient::load(ESMReader &esm) { model = esm.getHNString("MODL"); name = esm.getHNString("FNAM"); esm.getHNT(data, "IRDT", 56); script = esm.getHNOString("SCRI"); icon = esm.getHNOString("ITEX"); }
void load(ESMReader &esm) { model = esm.getHNString("MODL"); name = esm.getHNOString("FNAM"); esm.getHNT(data, "MCDT", 12); script = esm.getHNOString("SCRI"); icon = esm.getHNOString("ITEX"); }
void Door::load(ESMReader &esm) { model = esm.getHNString("MODL"); name = esm.getHNOString("FNAM"); script = esm.getHNOString("SCRI"); openSound = esm.getHNOString("SNAM"); closeSound = esm.getHNOString("ANAM"); }
void Door::load(ESMReader &esm) { mModel = esm.getHNString("MODL"); mName = esm.getHNOString("FNAM"); mScript = esm.getHNOString("SCRI"); mOpenSound = esm.getHNOString("SNAM"); mCloseSound = esm.getHNOString("ANAM"); }
void Weapon::load(ESMReader &esm) { mModel = esm.getHNString("MODL"); mName = esm.getHNOString("FNAM"); esm.getHNT(mData, "WPDT", 32); mScript = esm.getHNOString("SCRI"); mIcon = esm.getHNOString("ITEX"); mEnchant = esm.getHNOString("ENAM"); }
void NPC::load(ESMReader &esm) { mNpdt52.mGold = -10; mPersistent = esm.getRecordFlags() & 0x0400; mModel = esm.getHNOString("MODL"); mName = esm.getHNOString("FNAM"); mRace = esm.getHNString("RNAM"); mClass = esm.getHNString("CNAM"); mFaction = esm.getHNString("ANAM"); mHead = esm.getHNString("BNAM"); mHair = esm.getHNString("KNAM"); mScript = esm.getHNOString("SCRI"); esm.getSubNameIs("NPDT"); esm.getSubHeader(); if (esm.getSubSize() == 52) { mNpdtType = 52; esm.getExact(&mNpdt52, 52); } else if (esm.getSubSize() == 12) { mNpdtType = 12; esm.getExact(&mNpdt12, 12); } else esm.fail("NPC_NPDT must be 12 or 52 bytes long"); esm.getHNT(mFlags, "FLAG"); mInventory.load(esm); mSpells.load(esm); if (esm.isNextSub("AIDT")) { esm.getHExact(&mAiData, sizeof(mAiData)); mHasAI= true; } else mHasAI = false; while (esm.isNextSub("DODT") || esm.isNextSub("DNAM")) { if (esm.retSubName() == 0x54444f44) { // DODT struct Dest dodt; esm.getHExact(&dodt.mPos, 24); mTransport.push_back(dodt); } else if (esm.retSubName() == 0x4d414e44) { // DNAM struct mTransport.back().mCellName = esm.getHString(); } } mAiPackage.load(esm); esm.skipRecord(); }
void Probe::load(ESMReader &esm) { mModel = esm.getHNString("MODL"); mName = esm.getHNOString("FNAM"); esm.getHNT(mData, "PBDT", 16); mScript = esm.getHNOString("SCRI"); mIcon = esm.getHNOString("ITEX"); }
void Book::load(ESMReader &esm) { mModel = esm.getHNString("MODL"); mName = esm.getHNOString("FNAM"); esm.getHNT(mData, "BKDT", 20); mScript = esm.getHNOString("SCRI"); mIcon = esm.getHNOString("ITEX"); mText = esm.getHNOString("TEXT"); mEnchant = esm.getHNOString("ENAM"); }
void load(ESMReader &esm) { while(esm.isNextSub("INDX")) { PartReference pr; esm.getHT(pr.part); // The INDX byte pr.male = esm.getHNOString("BNAM"); pr.female = esm.getHNOString("CNAM"); } }
void load(ESMReader &esm) { model = esm.getHNString("MODL"); name = esm.getHNOString("FNAM"); esm.getHNT(data, "BKDT", 20); script = esm.getHNOString("SCRI"); icon = esm.getHNOString("ITEX"); text = esm.getHNOString("TEXT"); enchant = esm.getHNOString("ENAM"); }
void Class::load(ESMReader &esm) { mName = esm.getHNOString("FNAM"); esm.getHNT(mData, "CLDT", 60); if (mData.mIsPlayable > 1) esm.fail("Unknown bool value"); mDescription = esm.getHNOString("DESC"); }
void load(ESMReader &esm) { model = esm.getHNString("MODL"); name = esm.getHNString("FNAM"); script = esm.getHNOString("SCRI"); esm.getHNT(data, "AODT", 24); icon = esm.getHNOString("ITEX"); parts.load(esm); enchant = esm.getHNOString("ENAM"); }
void Clothing::load(ESMReader &esm) { mModel = esm.getHNString("MODL"); mName = esm.getHNOString("FNAM"); esm.getHNT(mData, "CTDT", 12); mScript = esm.getHNOString("SCRI"); mIcon = esm.getHNOString("ITEX"); mParts.load(esm); mEnchant = esm.getHNOString("ENAM"); }
void Container::load(ESMReader &esm) { mModel = esm.getHNString("MODL"); mName = esm.getHNOString("FNAM"); esm.getHNT(mWeight, "CNDT", 4); esm.getHNT(mFlags, "FLAG", 4); if (mFlags & 0xf4) esm.fail("Unknown flags"); if (!(mFlags & 0x8)) esm.fail("Flag 8 not set"); mScript = esm.getHNOString("SCRI"); mInventory.load(esm); }
void AiEscort::load(ESMReader &esm) { esm.getHNT (mData, "DATA"); mTargetId = esm.getHNString("TARG"); esm.getHNT (mRemainingDuration, "DURA"); mCellId = esm.getHNOString ("CELL"); }
void Race::load(ESMReader &esm) { mName = esm.getHNString("FNAM"); esm.getHNT(mData, "RADT", 140); mPowers.load(esm); mDescription = esm.getHNOString("DESC"); }
void SpellState::load(ESMReader &esm) { while (esm.isNextSub("SPEL")) { std::string id = esm.getHString(); std::map<const int, float> random; while (esm.isNextSub("INDX")) { int index; esm.getHT(index); float magnitude; esm.getHNT(magnitude, "RAND"); random[index] = magnitude; } mSpells[id] = random; } while (esm.isNextSub("USED")) { std::string id = esm.getHString(); TimeStamp time; esm.getHNT(time, "TIME"); mUsedPowers[id] = time; } mSelectedSpell = esm.getHNOString("SLCT"); }
void AiFollow::load(ESMReader &esm) { esm.getHNT (mData, "DATA"); mTargetId = esm.getHNString("TARG"); esm.getHNT (mRemainingDuration, "DURA"); mCellId = esm.getHNOString ("CELL"); esm.getHNT (mAlwaysFollow, "ALWY"); }
void Cell::loadCell(ESMReader &esm, bool saveContext) { mRefNumCounter = 0; if (mData.mFlags & Interior) { // Interior cells if (esm.isNextSub("INTV")) { int waterl; esm.getHT(waterl); mWater = (float) waterl; mWaterInt = true; } else if (esm.isNextSub("WHGT")) { esm.getHT(mWater); } // Quasi-exterior cells have a region (which determines the // weather), pure interior cells have ambient lighting // instead. if (mData.mFlags & QuasiEx) mRegion = esm.getHNOString("RGNN"); else if (esm.isNextSub("AMBI")) esm.getHT(mAmbi); } else { // Exterior cells mRegion = esm.getHNOString("RGNN"); mMapColor = 0; esm.getHNOT(mMapColor, "NAM5"); } if (esm.isNextSub("NAM0")) { esm.getHT(mRefNumCounter); } if (saveContext) { mContextList.push_back(esm.getContext()); esm.skipRecord(); } }
void Skill::load(ESMReader &esm) { esm.getHNT(mIndex, "INDX"); esm.getHNT(mData, "SKDT", 24); mDescription = esm.getHNOString("DESC"); // create an ID from the index and the name (only used in the editor and likely to change in the // future) mId = indexToId (mIndex); }
void ESM::GlobalScript::load (ESMReader &esm) { mId = esm.getHNString ("NAME"); mLocals.load (esm); mRunning = 0; esm.getHNOT (mRunning, "RUN_"); mTargetId = esm.getHNOString ("TARG"); }
void AiFollow::load(ESMReader &esm) { esm.getHNT (mData, "DATA"); mTargetId = esm.getHNString("TARG"); esm.getHNT (mRemainingDuration, "DURA"); mCellId = esm.getHNOString ("CELL"); esm.getHNT (mAlwaysFollow, "ALWY"); mCommanded = false; esm.getHNOT (mCommanded, "CMND"); mActive = false; esm.getHNOT (mActive, "ACTV"); }
void Creature::load(ESMReader &esm, const std::string& id) { mId = id; model = esm.getHNString("MODL"); original = esm.getHNOString("CNAM"); name = esm.getHNOString("FNAM"); script = esm.getHNOString("SCRI"); esm.getHNT(data, "NPDT", 96); esm.getHNT(flags, "FLAG"); scale = 1.0; esm.getHNOT(scale, "XSCL"); inventory.load(esm); if (esm.isNextSub("AIDT")) { esm.getHExact(&AI, sizeof(AI)); hasAI = true; } else hasAI = false; // More subrecords: // AI_W - wander (14 bytes, i don't understand it) // short distance // byte duration // byte timeOfDay // byte idle[10] // // Rest is optional: // AI_T - travel? // AI_F - follow? // AI_E - escort? // AI_A - activate? esm.skipRecord(); }
void ESM::CellRef::loadData(ESMReader &esm) { // Again, UNAM sometimes appears after NAME and sometimes later. // Or perhaps this UNAM means something different? mReferenceBlocked = -1; esm.getHNOT (mReferenceBlocked, "UNAM"); mScale = 1.0; esm.getHNOT (mScale, "XSCL"); mOwner = esm.getHNOString ("ANAM"); mGlobalVariable = esm.getHNOString ("BNAM"); mSoul = esm.getHNOString ("XSOL"); mFaction = esm.getHNOString ("CNAM"); mFactionRank = -2; esm.getHNOT (mFactionRank, "INDX"); mGoldValue = 1; mChargeInt = -1; mEnchantmentCharge = -1; esm.getHNOT (mEnchantmentCharge, "XCHG"); esm.getHNOT (mChargeInt, "INTV"); esm.getHNOT (mGoldValue, "NAM9"); // Present for doors that teleport you to another cell. if (esm.isNextSub ("DODT")) { mTeleport = true; esm.getHT (mDoorDest); mDestCell = esm.getHNOString ("DNAM"); } else mTeleport = false; mLockLevel = 0; //Set to 0 to indicate no lock esm.getHNOT (mLockLevel, "FLTV"); mKey = esm.getHNOString ("KNAM"); mTrap = esm.getHNOString ("TNAM"); esm.getHNOT (mReferenceBlocked, "UNAM"); if (esm.isNextSub("FLTV")) // no longer used esm.skipHSub(); esm.getHNOT(mPos, "DATA", 24); if (esm.isNextSub("NAM0")) esm.skipHSub(); }
void Cell::load(ESMReader &esm) { // Ignore this for now, it might mean we should delete the entire // cell? if (esm.isNextSub("DELE")) esm.skipHSub(); esm.getHNT(data, "DATA", 12); // Water level water = 0; if (data.flags & Interior) { // Interior cells if (esm.isNextSub("INTV") || esm.isNextSub("WHGT")) esm.getHT(water); // Quasi-exterior cells have a region (which determines the // weather), pure interior cells have ambient lighting // instead. if (data.flags & QuasiEx) region = esm.getHNOString("RGNN"); else esm.getHNT(ambi, "AMBI", 16); } else { // Exterior cells region = esm.getHNOString("RGNN"); esm.getHNOT(mapColor, "NAM5"); } // Save position of the cell references and move on context = esm.getContext(); esm.skipRecord(); }
void MagicEffect::load(ESMReader &esm) { esm.getHNT(mIndex, "INDX"); esm.getHNT(mData, "MEDT", 36); if (mIndex>=0 && mIndex<NumberOfHardcodedFlags) mData.mFlags |= HardcodedFlags[mIndex]; mIcon = esm.getHNOString("ITEX"); mParticle = esm.getHNOString("PTEX"); mBoltSound = esm.getHNOString("BSND"); mCastSound = esm.getHNOString("CSND"); mHitSound = esm.getHNOString("HSND"); mAreaSound = esm.getHNOString("ASND"); mCasting = esm.getHNOString("CVFX"); mBolt = esm.getHNOString("BVFX"); mHit = esm.getHNOString("HVFX"); mArea = esm.getHNOString("AVFX"); mDescription = esm.getHNOString("DESC"); }