Example #1
0
bool DOORRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 7: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 8: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 9: //script
            SCRI.value = *(FORMID *)FieldValue;
            return true;
        case 10: //soundOpen
            SNAM.value = *(FORMID *)FieldValue;
            return true;
        case 11: //soundClose
            ANAM.value = *(FORMID *)FieldValue;
            return true;
        case 12: //soundLoop
            BNAM.value = *(FORMID *)FieldValue;
            return true;
        case 13: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 14: //destinations
            TNAM.resize(ArraySize);
            for(UINT32 x = 0; x < ArraySize; ++x)
                TNAM.value[x] = ((FORMIDARRAY)FieldValue)[x];
            return true;
        default:
            break;
        }
    return false;
    }
Example #2
0
bool EYESRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(uint16_t *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //full
            FULL.Copy((char *)FieldValue);
            break;
        case 8: //iconPath
            ICON.Copy((char *)FieldValue);
            break;
        case 9: //flags
            SetFlagMask(*(uint8_t *)FieldValue);
            break;
        default:
            break;
        }
    return false;
    }
Example #3
0
bool FURNRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 7: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 8: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 9: //script
            SCRI.value = *(FORMID *)FieldValue;
            return true;
        case 10: //flags
            SetFlagMask(*(UINT32 *)FieldValue);
            break;
        default:
            break;
        }
    return false;
    }
Example #4
0
bool ALCHRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(uint16_t *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //boundX1
            OBND->x1 = *(int16_t *)FieldValue;
            break;
        case 8: //boundY1
            OBND->y1 = *(int16_t *)FieldValue;
            break;
        case 9: //boundZ1
            OBND->z1 = *(int16_t *)FieldValue;
            break;
        case 10: //boundX2
            OBND->x2 = *(int16_t *)FieldValue;
            break;
        case 11: //boundY2
            OBND->y2 = *(int16_t *)FieldValue;
            break;
        case 12: //boundZ2
            OBND->z2 = *(int16_t *)FieldValue;
            break;
        case 13: //full
            FULL.Copy((char *)FieldValue);
            break;
        case 14: //keywords
            KWDA.resize(ArraySize);
            for (uint32_t i = 0; i < ArraySize; ++i)
                KWDA.value[i] = ((FORMIDARRAY)FieldValue)[i];
            return true;
        case 15: //description
            DESC.Copy((char *)FieldValue);
            break;
        case 16: //modPath
            MODL.Load();
            MODL->MODL.Copy((char *)FieldValue);
            break;
        case 17: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 18: //altTextures
            MODL.Load();
            if (ListFieldID == 0) // altTextures
            {
                MODL->Textures.resize(ArraySize);
                return false;
            }

            if (ListIndex >= MODL->Textures.MODS.size())
                break;

            switch (ListFieldID)
            {
            case 1: //name
                delete[]MODL->Textures.MODS[ListIndex]->name;
                MODL->Textures.MODS[ListIndex]->name = NULL;
                if (FieldValue != NULL)
                {
                    ArraySize = (uint32_t)strlen((char *)FieldValue) + 1;
                    MODL->Textures.MODS[ListIndex]->name = new char[ArraySize];
                    strcpy_s(MODL->Textures.MODS[ListIndex]->name, ArraySize, (char *)FieldValue);
                }
                break;
            case 2: //texture
                MODL->Textures.MODS[ListIndex]->texture = *(FORMID *)FieldValue;
                return true;
            case 3: //index
                MODL->Textures.MODS[ListIndex]->index = *(int32_t *)FieldValue;
                break;
            default:
                break;
            }
            break;
        case 19: //destructableHealth
            Destructable.Load();
            Destructable->DEST->health = *(int32_t *)FieldValue;
            break;
        case 20: //destructableCount
            Destructable.Load();
            Destructable->DEST->count = *(uint8_t *)FieldValue;
            break;
        case 21: //destructableFlags
            Destructable.Load();
            Destructable->DEST->flags = *(uint8_t *)FieldValue;
            break;
        case 22: //destructableUnused1
            if (ArraySize != 2)
                break;
            Destructable.Load();
            Destructable->DEST->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            Destructable->DEST->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 23: //destructableStages
            Destructable.Load();
            if (ListFieldID == 0) //destructableStagesSize
            {
                Destructable->Stages.resize(ArraySize);
                return false;
            }

            if (ListIndex >= Destructable->Stages.value.size())
                break;

            switch (ListFieldID)
            {
            case 1: //health
                Destructable->Stages.value[ListIndex]->DSTD->health = *(uint8_t *)FieldValue;
                break;
            case 2: //index
                Destructable->Stages.value[ListIndex]->DSTD->index = *(uint8_t *)FieldValue;
                break;
            case 3: //stage
                Destructable->Stages.value[ListIndex]->DSTD->stage = *(uint8_t *)FieldValue;
                break;
            case 4: //flags
                Destructable->Stages.value[ListIndex]->DSTD->flags = *(uint8_t *)FieldValue;
                break;
            case 5: //dps
                Destructable->Stages.value[ListIndex]->DSTD->dps = *(int32_t *)FieldValue;
                break;
            case 6: //explosion
                Destructable->Stages.value[ListIndex]->DSTD->explosion = *(FORMID *)FieldValue;
                return true;
            case 7: //debris
                Destructable->Stages.value[ListIndex]->DSTD->debris = *(FORMID *)FieldValue;
                return true;
            case 8: //debrisCount
                Destructable->Stages.value[ListIndex]->DSTD->debrisCount = *(int32_t *)FieldValue;
                break;
            case 9: //modPath
                Destructable->Stages.value[ListIndex]->DMDL.Copy((char *)FieldValue);
                break;
            case 10: //modt_p
                Destructable->Stages.value[ListIndex]->DMDT.Copy((UINT8ARRAY)FieldValue, ArraySize);
                break;
            case 11: //altTextures
                if (ListX2FieldID == 0) //altTexturesSize
                {
                    Destructable->Stages.value[ListIndex]->DMDS.resize(ArraySize);
                    return false;
                }

                if (ListX2Index >= Destructable->Stages.value[ListIndex]->DMDS.MODS.size())
                    break;

                switch (ListX2FieldID)
                {
                case 1: //name
                    delete[] Destructable->Stages.value[ListIndex]->DMDS.MODS[ListX2Index]->name;
                    Destructable->Stages.value[ListIndex]->DMDS.MODS[ListX2Index]->name = NULL;
                    if (FieldValue != NULL)
                    {
                        ArraySize = (uint32_t)strlen((char *)FieldValue) + 1;
                        Destructable->Stages.value[ListIndex]->DMDS.MODS[ListX2Index]->name = new char[ArraySize];
                        strcpy_s(Destructable->Stages.value[ListIndex]->DMDS.MODS[ListX2Index]->name, ArraySize, (char *)FieldValue);
                    }
                    break;
                case 2: //texture
                    Destructable->Stages.value[ListIndex]->DMDS.MODS[ListX2Index]->texture = *(FORMID *)FieldValue;
                    return true;
                case 3: //index
                    Destructable->Stages.value[ListIndex]->DMDS.MODS[ListX2Index]->index = *(int32_t *)FieldValue;
                    break;
                default:
                    break;
                }
                break;
            default:
                break;
            }
            break;
        case 24: //iconPath
            ICON.Copy((char *)FieldValue);
            break;
        case 25: //smallIconPath
            MICO.Copy((char *)FieldValue);
            break;
        case 26: //pickupSound
            YNAM.value = *(FORMID *)FieldValue;
            return true;
        case 27: //drop Sound
            ZNAM.value = *(FORMID *)FieldValue;
            return true;
        case 28: //equipmentType
            ETYP.value = *(FORMID *)FieldValue;
            return true;
        case 29: //wieght
            DATA.value = *(float *)FieldValue;
            break;
        case 30: //value
            ENIT->value = *(int32_t *)FieldValue;
            break;
        case 31: //flags
            SetFlagMask(*(uint8_t *)FieldValue);
            break;
        case 32: //withdrawalEffect
            ENIT->withdrawalEffect = *(FORMID *)FieldValue;
            return true;
        case 33: //addictionChance
            ENIT->addictionChance = *(float *)FieldValue;
            break;
        case 34: //consumeSound
            ENIT->consumeSound = *(FORMID *)FieldValue;
            return true;
        case 35: //effects
            if (ListFieldID == 0) //effectsSize
            {
                Effects.resize(ArraySize);
                return false;
            }

            if (ListIndex >= Effects.value.size())
                break;

            switch (ListFieldID)
            {
            case 1: //effect
                Effects.value[ListIndex]->EFID.value = *(FORMID *)FieldValue;
                return true;
            case 2: //magnitude
                Effects.value[ListIndex]->EFIT->magnitude = *(float *)FieldValue;
                break;
            case 3: //area
                Effects.value[ListIndex]->EFIT->area = *(uint32_t *)FieldValue;
                break;
            case 4: //duration
                Effects.value[ListIndex]->EFIT->duration = *(uint32_t *)FieldValue;
                break;
            case 5: //conditions
                if (ListX2FieldID == 0) //conditionsSize
                {
                    Effects.value[ListIndex]->CTDA.resize(ArraySize);
                    return false;
                }

                if (ListX2Index >= Effects.value[ListIndex]->CTDA.value.size())
                    break;

                switch (ListX2FieldID)
                {
                case 1: //operType
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->operType = *(uint8_t *)FieldValue;
                    break;
                case 2: //unused1
                    if (ArraySize != 3)
                        break;
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
                    break;
                case 3: //compValue
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->compValue = *(FORMID_OR_FLOAT32 *)FieldValue;
                    return true;
                case 4: //ifunc
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->ifunc = *(uint16_t *)FieldValue;
                    return true;
                case 5: //unused2
                    if (ArraySize != 2)
                        break;
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->unused2[0] = ((UINT8ARRAY)FieldValue)[0];
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->unused2[1] = ((UINT8ARRAY)FieldValue)[1];
                    break;
                case 6: //param1
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->param1 = *(FORMID_OR_UINT32 *)FieldValue;
                    return true;
                case 7: //param2
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->param2 = *(FORMID_OR_UINT32 *)FieldValue;
                    return true;
                case 8: //runOnType
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->runOnType = *(uint32_t *)FieldValue;
                    true;
                case 9: //reference
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->reference = *(FORMID_OR_UINT32 *)FieldValue;
                    return true;
                case 10: //param3
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CTDA->param3 = *(int32_t *)FieldValue;
                    break;
                case 11: //cis1
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CIS1.Copy((char *)FieldValue);
                    return true; // affects how param1 is interpreted
                case 12: //cis2
                    Effects.value[ListIndex]->CTDA.value[ListX2Index]->CIS2.Copy((char *)FieldValue);
                    return true; // affects how param2 is interpreted
                default:
                    break;
                }
                break;
            default:
                break;
            }
            break;
        default:
            break;
        }
    return false;
}
Example #5
0
bool PROJRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(UINT16 *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //boundX1
            OBND.value.x1 = *(SINT16 *)FieldValue;
            break;
        case 8: //boundY1
            OBND.value.y1 = *(SINT16 *)FieldValue;
            break;
        case 9: //boundZ1
            OBND.value.z1 = *(SINT16 *)FieldValue;
            break;
        case 10: //boundX2
            OBND.value.x2 = *(SINT16 *)FieldValue;
            break;
        case 11: //boundY2
            OBND.value.y2 = *(SINT16 *)FieldValue;
            break;
        case 12: //boundZ2
            OBND.value.z2 = *(SINT16 *)FieldValue;
            break;
        case 13: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 14: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 15: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 16: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 17: //altTextures
            MODL.Load();
            if(ListFieldID == 0) //altTexturesSize
                {
                MODL->Textures.resize(ArraySize);
                return false;
                }

            if(ListIndex >= MODL->Textures.MODS.size())
                break;

            switch(ListFieldID)
                {
                case 1: //name
                    delete []MODL->Textures.MODS[ListIndex]->name;
                    MODL->Textures.MODS[ListIndex]->name = NULL;
                    if(FieldValue != NULL)
                        {
                        ArraySize = (UINT32)strlen((STRING)FieldValue) + 1;
                        MODL->Textures.MODS[ListIndex]->name = new char[ArraySize];
                        strcpy_s(MODL->Textures.MODS[ListIndex]->name, ArraySize, (STRING)FieldValue);
                        }
                    break;
                case 2: //texture
                    MODL->Textures.MODS[ListIndex]->texture = *(FORMID *)FieldValue;
                    return true;
                case 3: //index
                    MODL->Textures.MODS[ListIndex]->index = *(SINT32 *)FieldValue;
                    break;
                default:
                    break;
                }
            break;
        case 18: //modelFlags
            MODL.Load();
            MODL->SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 19: //destructableHealth
            Destructable.Load();
            Destructable->DEST.value.health = *(SINT32 *)FieldValue;
            break;
        case 20: //destructableCount
            Destructable.Load();
            Destructable->DEST.value.count = *(UINT8 *)FieldValue;
            break;
        case 21: //destructableFlags
            Destructable.Load();
            Destructable->SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 22: //destructableUnused1
            if(ArraySize != 2)
                break;
            Destructable.Load();
            Destructable->DEST.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            Destructable->DEST.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 23: //destructableStages
            Destructable.Load();
            if(ListFieldID == 0) //destructableStagesSize
                {
                Destructable->Stages.resize(ArraySize);
                return false;
                }

            if(ListIndex >= Destructable->Stages.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //health
                    Destructable->Stages.value[ListIndex]->DSTD.value.health = *(UINT8 *)FieldValue;
                    break;
                case 2: //index
                    Destructable->Stages.value[ListIndex]->DSTD.value.index = *(UINT8 *)FieldValue;
                    break;
                case 3: //stage
                    Destructable->Stages.value[ListIndex]->DSTD.value.stage = *(UINT8 *)FieldValue;
                    break;
                case 4: //flags
                    Destructable->Stages.value[ListIndex]->SetFlagMask(*(UINT8 *)FieldValue);
                    break;
                case 5: //dps
                    Destructable->Stages.value[ListIndex]->DSTD.value.dps = *(SINT32 *)FieldValue;
                    break;
                case 6: //explosion
                    Destructable->Stages.value[ListIndex]->DSTD.value.explosion = *(FORMID *)FieldValue;
                    return true;
                case 7: //debris
                    Destructable->Stages.value[ListIndex]->DSTD.value.debris = *(FORMID *)FieldValue;
                    return true;
                case 8: //debrisCount
                    Destructable->Stages.value[ListIndex]->DSTD.value.debrisCount = *(SINT32 *)FieldValue;
                    break;
                case 9: //modPath
                    Destructable->Stages.value[ListIndex]->DMDL.Copy((STRING)FieldValue);
                    break;
                case 10: //modt_p
                    Destructable->Stages.value[ListIndex]->DMDT.Copy((UINT8ARRAY)FieldValue, ArraySize);
                    break;
                default:
                    break;
                }
            break;
        case 24: //flags
            SetFlagMask(*(UINT16 *)FieldValue);
            break;
        case 25: //projType
            SetType(*(UINT16 *)FieldValue);
            break;
        case 26: //gravity
            DATA.value.gravity = *(FLOAT32 *)FieldValue;
            break;
        case 27: //speed
            DATA.value.speed = *(FLOAT32 *)FieldValue;
            break;
        case 28: //range
            DATA.value.range = *(FLOAT32 *)FieldValue;
            break;
        case 29: //light
            DATA.value.light = *(FORMID *)FieldValue;
            return true;
        case 30: //flash
            DATA.value.flash = *(FORMID *)FieldValue;
            return true;
        case 31: //tracerChance
            DATA.value.tracerChance = *(FLOAT32 *)FieldValue;
            break;
        case 32: //altExplProximityTrigger
            DATA.value.altExplProximityTrigger = *(FLOAT32 *)FieldValue;
            break;
        case 33: //altExplProximityTimer
            DATA.value.altExplProximityTimer = *(FLOAT32 *)FieldValue;
            break;
        case 34: //explosion
            DATA.value.explosion = *(FORMID *)FieldValue;
            return true;
        case 35: //sound
            DATA.value.sound = *(FORMID *)FieldValue;
            return true;
        case 36: //flashDuration
            DATA.value.flashDuration = *(FLOAT32 *)FieldValue;
            break;
        case 37: //fadeDuration
            DATA.value.fadeDuration = *(FLOAT32 *)FieldValue;
            break;
        case 38: //impactForce
            DATA.value.impactForce = *(FLOAT32 *)FieldValue;
            break;
        case 39: //soundCountdown
            DATA.value.soundCountdown = *(FORMID *)FieldValue;
            return true;
        case 40: //soundDisable
            DATA.value.soundDisable = *(FORMID *)FieldValue;
            return true;
        case 41: //defaultWeaponSource
            DATA.value.defaultWeaponSource = *(FORMID *)FieldValue;
            return true;
        case 42: //rotX
            DATA.value.rotX = *(FLOAT32 *)FieldValue;
            break;
        case 43: //rotY
            DATA.value.rotY = *(FLOAT32 *)FieldValue;
            break;
        case 44: //rotZ
            DATA.value.rotZ = *(FLOAT32 *)FieldValue;
            break;
        case 45: //bouncyMult
            DATA.value.bouncyMult = *(FLOAT32 *)FieldValue;
            break;
        case 46: //modelPath
            NAM1.Copy((STRING)FieldValue);
            break;
        case 47: //nam2_p
            NAM2.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 48: //soundLevel
            SetSoundLevelType(*(UINT32 *)FieldValue);
            break;
        default:
            break;
        }
    return false;
    }
Example #6
0
bool PMISRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(UINT16 *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //base
            NAME.value = *(FORMID *)FieldValue;
            return true;
        case 8: //encounterZone
            XEZN.value = *(FORMID *)FieldValue;
            return true;
        case 9: //xrgd_p
            XRGD.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 10: //xrgb_p
            XRGB.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 11: //idleTime
            Patrol.Load();
            Patrol->XPRD.value = *(FLOAT32 *)FieldValue;
            break;
        case 12: //idle
            Patrol.Load();
            Patrol->INAM.value = *(FORMID *)FieldValue;
            return true;
        case 13: //unused1
            if(ArraySize != 4)
                break;
            Patrol.Load();
            Patrol->SCHR.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            Patrol->SCHR.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            Patrol->SCHR.value.unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            Patrol->SCHR.value.unused1[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 14: //numRefs
            Patrol.Load();
            Patrol->SCHR.value.numRefs = *(UINT32 *)FieldValue;
            break;
        case 15: //compiledSize
            Patrol.Load();
            Patrol->SCHR.value.compiledSize = *(UINT32 *)FieldValue;
            break;
        case 16: //lastIndex
            Patrol.Load();
            Patrol->SCHR.value.lastIndex = *(UINT32 *)FieldValue;
            break;
        case 17: //scriptType
            Patrol.Load();
            Patrol->SetType(*(UINT16 *)FieldValue);
            break;
        case 18: //scriptFlags
            Patrol.Load();
            Patrol->SetScriptFlagMask(*(UINT16 *)FieldValue);
            break;
        case 19: //compiled_p
            Patrol.Load();
            Patrol->SCDA.Copy((UINT8ARRAY)FieldValue, ArraySize);
            Patrol->SCHR.value.compiledSize = ArraySize;
            break;
        case 20: //scriptText
            Patrol.Load();
            Patrol->SCTX.Copy((STRING)FieldValue);
            break;
        case 21: //vars
            Patrol.Load();
            if(ListFieldID == 0) //varsSize
                {
                Patrol->VARS.resize(ArraySize);
                return false;
                }

            if(ListIndex >= Patrol->VARS.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //index
                    Patrol->VARS.value[ListIndex]->SLSD.value.index = *(UINT32 *)FieldValue;
                    break;
                case 2: //unused1
                    if(ArraySize != 12)
                        break;
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[2] = ((UINT8ARRAY)FieldValue)[2];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[3] = ((UINT8ARRAY)FieldValue)[3];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[4] = ((UINT8ARRAY)FieldValue)[4];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[5] = ((UINT8ARRAY)FieldValue)[5];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[6] = ((UINT8ARRAY)FieldValue)[6];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[7] = ((UINT8ARRAY)FieldValue)[7];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[8] = ((UINT8ARRAY)FieldValue)[8];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[9] = ((UINT8ARRAY)FieldValue)[9];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[10] = ((UINT8ARRAY)FieldValue)[10];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[11] = ((UINT8ARRAY)FieldValue)[11];
                    break;
                case 3: //flags
                    Patrol->VARS.value[ListIndex]->SetFlagMask(*(UINT8 *)FieldValue);
                    break;
                case 4: //unused2
                    if(ArraySize != 7)
                        break;
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[0] = ((UINT8ARRAY)FieldValue)[0];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[1] = ((UINT8ARRAY)FieldValue)[1];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[2] = ((UINT8ARRAY)FieldValue)[2];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[3] = ((UINT8ARRAY)FieldValue)[3];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[4] = ((UINT8ARRAY)FieldValue)[4];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[5] = ((UINT8ARRAY)FieldValue)[5];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[6] = ((UINT8ARRAY)FieldValue)[6];
                    break;
                case 5: //name
                    Patrol->VARS.value[ListIndex]->SCVR.Copy((STRING)FieldValue);
                    break;
                default:
                    break;
                }
            break;
        case 22: //references
            Patrol.Load();
            if(ListFieldID == 0) //referencesSize
                {
                Patrol->SCR_.resize(ArraySize);
                return false;
                }

            if(ListIndex >= Patrol->SCR_.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //reference
                    //Borrowing ArraySize to flag if the new value is a formID
                    Patrol->SCR_.value[ListIndex]->reference = *(UINT32 *)FieldValue;
                    Patrol->SCR_.value[ListIndex]->isSCRO = ArraySize ? true : false;
                    return ArraySize != 0;
                default:
                    break;
                }
            break;
        case 23: //topic
            Patrol.Load();
            Patrol->TNAM.value = *(FORMID *)FieldValue;
            return true;
        case 24: //owner
            Ownership.Load();
            Ownership->XOWN.value = *(FORMID *)FieldValue;
            return true;
        case 25: //rank
            Ownership.Load();
            *Ownership->XRNK.value = *(SINT32 *)FieldValue;
            break;
        case 26: //count
            XCNT.value = *(SINT32 *)FieldValue;
            break;
        case 27: //radius
            XRDS.value = *(FLOAT32 *)FieldValue;
            break;
        case 28: //health
            XHLP.value = *(FLOAT32 *)FieldValue;
            break;
        case 29: //decals
            if(ListFieldID == 0) //decalsSize
                {
                XDCR.resize(ArraySize);
                return false;
                }

            if(ListIndex >= XDCR.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //reference
                    XDCR.value[ListIndex]->reference = *(FORMID *)FieldValue;
                    return true;
                case 2: //unknown1
                    if(ArraySize != 24)
                        break;
                    XDCR.value[ListIndex]->unknown1[0] = ((UINT8ARRAY)FieldValue)[0];
                    XDCR.value[ListIndex]->unknown1[1] = ((UINT8ARRAY)FieldValue)[1];
                    XDCR.value[ListIndex]->unknown1[2] = ((UINT8ARRAY)FieldValue)[2];
                    XDCR.value[ListIndex]->unknown1[3] = ((UINT8ARRAY)FieldValue)[3];
                    XDCR.value[ListIndex]->unknown1[4] = ((UINT8ARRAY)FieldValue)[4];
                    XDCR.value[ListIndex]->unknown1[5] = ((UINT8ARRAY)FieldValue)[5];
                    XDCR.value[ListIndex]->unknown1[6] = ((UINT8ARRAY)FieldValue)[6];
                    XDCR.value[ListIndex]->unknown1[7] = ((UINT8ARRAY)FieldValue)[7];
                    XDCR.value[ListIndex]->unknown1[8] = ((UINT8ARRAY)FieldValue)[8];
                    XDCR.value[ListIndex]->unknown1[9] = ((UINT8ARRAY)FieldValue)[9];
                    XDCR.value[ListIndex]->unknown1[10] = ((UINT8ARRAY)FieldValue)[10];
                    XDCR.value[ListIndex]->unknown1[11] = ((UINT8ARRAY)FieldValue)[11];
                    XDCR.value[ListIndex]->unknown1[12] = ((UINT8ARRAY)FieldValue)[12];
                    XDCR.value[ListIndex]->unknown1[13] = ((UINT8ARRAY)FieldValue)[13];
                    XDCR.value[ListIndex]->unknown1[14] = ((UINT8ARRAY)FieldValue)[14];
                    XDCR.value[ListIndex]->unknown1[15] = ((UINT8ARRAY)FieldValue)[15];
                    XDCR.value[ListIndex]->unknown1[16] = ((UINT8ARRAY)FieldValue)[16];
                    XDCR.value[ListIndex]->unknown1[17] = ((UINT8ARRAY)FieldValue)[17];
                    XDCR.value[ListIndex]->unknown1[18] = ((UINT8ARRAY)FieldValue)[18];
                    XDCR.value[ListIndex]->unknown1[19] = ((UINT8ARRAY)FieldValue)[19];
                    XDCR.value[ListIndex]->unknown1[20] = ((UINT8ARRAY)FieldValue)[20];
                    XDCR.value[ListIndex]->unknown1[21] = ((UINT8ARRAY)FieldValue)[21];
                    XDCR.value[ListIndex]->unknown1[22] = ((UINT8ARRAY)FieldValue)[22];
                    XDCR.value[ListIndex]->unknown1[23] = ((UINT8ARRAY)FieldValue)[23];
                    break;
                default:
                    break;
                }
            break;
        case 30: //linkedReference
            XLKR.value = *(FORMID *)FieldValue;
            return true;
        case 31: //startRed
            XCLP.Load();
            XCLP->start.red = *(UINT8 *)FieldValue;
            break;
        case 32: //startGreen
            XCLP.Load();
            XCLP->start.green = *(UINT8 *)FieldValue;
            break;
        case 33: //startBlue
            XCLP.Load();
            XCLP->start.blue = *(UINT8 *)FieldValue;
            break;
        case 34: //unused2
            if(ArraySize != 1)
                break;
            XCLP.Load();
            XCLP->start.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 35: //endRed
            XCLP.Load();
            XCLP->end.red = *(UINT8 *)FieldValue;
            break;
        case 36: //endGreen
            XCLP.Load();
            XCLP->end.green = *(UINT8 *)FieldValue;
            break;
        case 37: //endBlue
            XCLP.Load();
            XCLP->end.blue = *(UINT8 *)FieldValue;
            break;
        case 38: //unused3
            if(ArraySize != 1)
                break;
            XCLP.Load();
            XCLP->end.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 39: //activateParentFlags
            ActivateParents.Load();
            ActivateParents->SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 40: //activateParentRefs
            ActivateParents.Load();
            if(ListFieldID == 0) //activateParentRefsSize
                {
                ActivateParents->XAPR.resize(ArraySize);
                return false;
                }

            if(ListIndex >= ActivateParents->XAPR.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //reference
                    ActivateParents->XAPR.value[ListIndex]->reference = *(FORMID *)FieldValue;
                    return true;
                case 2: //delay
                    ActivateParents->XAPR.value[ListIndex]->delay = *(FLOAT32 *)FieldValue;
                    break;
                default:
                    break;
                }
            break;
        case 41: //prompt
            XATO.Copy((STRING)FieldValue);
            break;
        case 42: //parent
            XESP.Load();
            XESP->parent = *(FORMID *)FieldValue;
            return true;
        case 43: //parentFlags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 44: //unused4
            if(ArraySize != 3)
                break;
            XESP.Load();
            XESP->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            XESP->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            XESP->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 45: //emittance
            XEMI.value = *(FORMID *)FieldValue;
            return true;
        case 46: //boundRef
            XMBR.value = *(FORMID *)FieldValue;
            return true;
        case 47: //reflrefrs
            if(ListFieldID == 0) //reflrefrsSize
                {
                XPWR.resize(ArraySize);
                return false;
                }

            if(ListIndex >= XPWR.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //reference
                    XPWR.value[ListIndex]->reference = *(FORMID *)FieldValue;
                    return true;
                case 2: //type
                    XPWR.value[ListIndex]->type = *(UINT32 *)FieldValue;
                    break;
                default:
                    break;
                }
            break;
        case 48: //ignoredBySandbox
            XIBS.value = *(UINT8 *)FieldValue;
            break;
        case 49: //scale
            XSCL.value = *(FLOAT32 *)FieldValue;
            break;
        case 50: //posX
            DATA.value.posX = *(FLOAT32 *)FieldValue;
            break;
        case 51: //posY
            DATA.value.posY = *(FLOAT32 *)FieldValue;
            break;
        case 52: //posZ
            DATA.value.posZ = *(FLOAT32 *)FieldValue;
            break;
        case 53: //rotX
            DATA.value.rotX = *(FLOAT32 *)FieldValue;
            break;
        case 54: //rotY
            DATA.value.rotY = *(FLOAT32 *)FieldValue;
            break;
        case 55: //rotZ
            DATA.value.rotZ = *(FLOAT32 *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
Example #7
0
bool CELLRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(uint16_t *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //full
            FULL.Copy((char *)FieldValue);
            break;
        case 8: //flags
            SetFlagMask(*(uint8_t *)FieldValue);
            break;
        case 9: //posX
            if(IsInterior())
                break;
            XCLC.Load();
            XCLC->posX = *(int32_t *)FieldValue;
            break;
        case 10: //posY
            if(IsInterior())
                break;
            XCLC.Load();
            XCLC->posY = *(int32_t *)FieldValue;
            break;
        case 11: //quadFlags
            if(IsInterior())
                break;
            SetQuadFlagMask(*(uint32_t *)FieldValue);
            break;
#if 0
        case 12: //ambientRed
            XCLL.Load();
            XCLL->ambient.red = *(uint8_t *)FieldValue;
            break;
        case 13: //ambientGreen
            XCLL.Load();
            XCLL->ambient.green = *(uint8_t *)FieldValue;
            break;
        case 14: //ambientBlue
            XCLL.Load();
            XCLL->ambient.blue = *(uint8_t *)FieldValue;
            break;
        case 15: //unused1
            if(ArraySize != 1)
                break;
            XCLL.Load();
            XCLL->ambient.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 16: //directionalRed
            XCLL.Load();
            XCLL->directional.red = *(uint8_t *)FieldValue;
            break;
        case 17: //directionalGreen
            XCLL.Load();
            XCLL->directional.green = *(uint8_t *)FieldValue;
            break;
        case 18: //directionalBlue
            XCLL.Load();
            XCLL->directional.blue = *(uint8_t *)FieldValue;
            break;
        case 19: //unused2
            if(ArraySize != 1)
                break;
            XCLL.Load();
            XCLL->directional.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 20: //fogRed
            XCLL.Load();
            XCLL->fog.red = *(uint8_t *)FieldValue;
            break;
        case 21: //fogGreen
            XCLL.Load();
            XCLL->fog.green = *(uint8_t *)FieldValue;
            break;
        case 22: //fogBlue
            XCLL.Load();
            XCLL->fog.blue = *(uint8_t *)FieldValue;
            break;
        case 23: //unused3
            if(ArraySize != 1)
                break;
            XCLL.Load();
            XCLL->fog.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 24: //fogNear
            XCLL.Load();
            XCLL->fogNear = *(float *)FieldValue;
            break;
        case 25: //fogFar
            XCLL.Load();
            XCLL->fogFar = *(float *)FieldValue;
            break;
        case 26: //directionalXY
            XCLL.Load();
            XCLL->directionalXY = *(int32_t *)FieldValue;
            break;
        case 27: //directionalZ
            XCLL.Load();
            XCLL->directionalZ = *(int32_t *)FieldValue;
            break;
        case 28: //directionalFade
            XCLL.Load();
            XCLL->directionalFade = *(float *)FieldValue;
            break;
        case 29: //fogClip
            XCLL.Load();
            XCLL->fogClip = *(float *)FieldValue;
            break;
        case 30: //fogPower
            XCLL.Load();
            XCLL->fogPower = *(float *)FieldValue;
            break;
#endif
        case 31: //swappedImpacts
            if(ListFieldID == 0) //swappedImpactsSize
                {
                IMPS.resize(ArraySize);
                return false;
                }

            if(ListIndex >= IMPS.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //material
                    IMPS.value[ListIndex]->material = *(uint32_t *)FieldValue;
                    break;
                case 2: //oldImpact
                    IMPS.value[ListIndex]->oldImpact = *(FORMID *)FieldValue;
                    return true;
                case 3: //newImpact
                    IMPS.value[ListIndex]->newImpact = *(FORMID *)FieldValue;
                    return true;
                default:
                    break;
                }
            break;
        case 32: //concSolid
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->concSolid[0], 0x00, sizeof(IMPF->concSolid));
            memcpy(&IMPF->concSolid[0], FieldValue, ArraySize);
            break;
        case 33: //concBroken
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->concBroken[0], 0x00, sizeof(IMPF->concBroken));
            memcpy(&IMPF->concBroken[0], FieldValue, ArraySize);
            break;
        case 34: //metalSolid
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->metalSolid[0], 0x00, sizeof(IMPF->metalSolid));
            memcpy(&IMPF->metalSolid[0], FieldValue, ArraySize);
            break;
        case 35: //metalHollow
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->metalHollow[0], 0x00, sizeof(IMPF->metalHollow));
            memcpy(&IMPF->metalHollow[0], FieldValue, ArraySize);
            break;
        case 36: //metalSheet
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->metalSheet[0], 0x00, sizeof(IMPF->metalSheet));
            memcpy(&IMPF->metalSheet[0], FieldValue, ArraySize);
            break;
        case 37: //wood
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->wood[0], 0x00, sizeof(IMPF->wood));
            memcpy(&IMPF->wood[0], FieldValue, ArraySize);
            break;
        case 38: //sand
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->sand[0], 0x00, sizeof(IMPF->sand));
            memcpy(&IMPF->sand[0], FieldValue, ArraySize);
            break;
        case 39: //dirt
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->dirt[0], 0x00, sizeof(IMPF->dirt));
            memcpy(&IMPF->dirt[0], FieldValue, ArraySize);
            break;
        case 40: //grass
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->grass[0], 0x00, sizeof(IMPF->grass));
            memcpy(&IMPF->grass[0], FieldValue, ArraySize);
            break;
        case 41: //water
            if(FieldValue == NULL)
                break;
            ArraySize = (uint32_t)strlen((char *)FieldValue);
            if(ArraySize > 29)
                break;
            IMPF.Load();
            memset(&IMPF->water[0], 0x00, sizeof(IMPF->water));
            memcpy(&IMPF->water[0], FieldValue, ArraySize);
            break;
        case 42: //lightTemplate
            LTMP.value = *(FORMID *)FieldValue;
            return true;
        case 43: //lightFlags
            SetLightFlagMask(*(uint32_t *)FieldValue);
            break;
        case 44: //waterHeight
            XCLW.value = *(float *)FieldValue;
            break;
        case 45: //waterNoisePath
            XNAM.Copy((char *)FieldValue);
            break;
        case 46: //regions
            XCLR.value.resize(ArraySize);
            for(uint32_t x = 0; x < ArraySize; x++)
                XCLR.value[x] = ((FORMIDARRAY)FieldValue)[x];
            return true;
        case 47: //imageSpace
            XCIM.value = *(FORMID *)FieldValue;
            return true;
        case 48: //xcet_p
            XCET.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 49: //encounterZone
            XEZN.value = *(FORMID *)FieldValue;
            return true;
        case 50: //climate
            XCCM.value = *(FORMID *)FieldValue;
            return true;
        case 51: //water
            XCWT.value = *(FORMID *)FieldValue;
            return true;
#if 0
        case 52: //owner
            Ownership.Load();
            Ownership->XOWN.value = *(FORMID *)FieldValue;
            return true;
        case 53: //rank
            Ownership.Load();
            Ownership->XRNK.Load();
            *Ownership->XRNK.value = *(int32_t *)FieldValue;
            break;
#endif
        case 54: //acousticSpace
            XCAS.value = *(FORMID *)FieldValue;
            return true;
        case 55: //xcmt_p
            XCMT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 56: //music
            XCMO.value = *(FORMID *)FieldValue;
            return true;
        default:
            break;
        }
    return false;
    }
Example #8
0
bool EXPLRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(uint16_t *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //boundX1
            OBND.value.x1 = *(int16_t *)FieldValue;
            break;
        case 8: //boundY1
            OBND.value.y1 = *(int16_t *)FieldValue;
            break;
        case 9: //boundZ1
            OBND.value.z1 = *(int16_t *)FieldValue;
            break;
        case 10: //boundX2
            OBND.value.x2 = *(int16_t *)FieldValue;
            break;
        case 11: //boundY2
            OBND.value.y2 = *(int16_t *)FieldValue;
            break;
        case 12: //boundZ2
            OBND.value.z2 = *(int16_t *)FieldValue;
            break;
        case 13: //full
            FULL.Copy((char *)FieldValue);
            break;
        case 14: //modPath
            MODL.Load();
            MODL->MODL.Copy((char *)FieldValue);
            break;
        case 15: //modb
            MODL.Load();
            MODL->MODB.value = *(float *)FieldValue;
            break;
        case 16: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 17: //altTextures
            MODL.Load();
            if(ListFieldID == 0) //altTexturesSize
                {
                MODL->Textures.resize(ArraySize);
                return false;
                }

            if(ListIndex >= MODL->Textures.MODS.size())
                break;

            switch(ListFieldID)
                {
                case 1: //name
                    delete []MODL->Textures.MODS[ListIndex]->name;
                    MODL->Textures.MODS[ListIndex]->name = NULL;
                    if(FieldValue != NULL)
                        {
                        ArraySize = (uint32_t)strlen((char *)FieldValue) + 1;
                        MODL->Textures.MODS[ListIndex]->name = new char[ArraySize];
                        strcpy_s(MODL->Textures.MODS[ListIndex]->name, ArraySize, (char *)FieldValue);
                        }
                    break;
                case 2: //texture
                    MODL->Textures.MODS[ListIndex]->texture = *(FORMID *)FieldValue;
                    return true;
                case 3: //index
                    MODL->Textures.MODS[ListIndex]->index = *(int32_t *)FieldValue;
                    break;
                default:
                    break;
                }
            break;
        case 18: //modelFlags
            MODL.Load();
            MODL->SetFlagMask(*(uint8_t *)FieldValue);
            break;
        case 19: //effect
            EITM.value = *(FORMID *)FieldValue;
            return true;
        case 20: //imageSpace
            MNAM.value = *(FORMID *)FieldValue;
            return true;
        case 21: //force
            DATA.value.force = *(float *)FieldValue;
            break;
        case 22: //damage
            DATA.value.damage = *(float *)FieldValue;
            break;
        case 23: //radius
            DATA.value.radius = *(float *)FieldValue;
            break;
        case 24: //light
            DATA.value.light = *(FORMID *)FieldValue;
            return true;
        case 25: //sound1
            DATA.value.sound1 = *(FORMID *)FieldValue;
            return true;
        case 26: //flags
            SetFlagMask(*(uint32_t *)FieldValue);
            break;
        case 27: //ISRadius
            DATA.value.ISRadius = *(float *)FieldValue;
            break;
        case 28: //impactDataSet
            DATA.value.impactDataSet = *(FORMID *)FieldValue;
            return true;
        case 29: //sound2
            DATA.value.sound2 = *(FORMID *)FieldValue;
            return true;
        case 30: //radLevel
            DATA.value.radLevel = *(float *)FieldValue;
            break;
        case 31: //radTime
            DATA.value.radTime = *(float *)FieldValue;
            break;
        case 32: //radRadius
            DATA.value.radRadius = *(float *)FieldValue;
            break;
        case 33: //soundLevel
            DATA.value.soundLevel = *(uint32_t *)FieldValue;
            break;
        case 34: //impact
            INAM.value = *(FORMID *)FieldValue;
            return true;
        default:
            break;
        }
    return false;
    }
Example #9
0
void SPELRecord::DeleteField(FIELD_IDENTIFIERS)
    {
    SPELSPIT defaultSPIT;
    FNVCTDA defaultCTDA;
    FNVEffect defaultEffect;
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(0);
            return;
        case 3: //versionControl1
            flagsUnk = 0;
            return;
        case 4: //eid
            EDID.Unload();
            return;
        case 5: //formVersion
            formVersion = 0;
            return;
        case 6: //versionControl2
            versionControl2[0] = 0;
            versionControl2[1] = 0;
            return;
        case 7: //full
            FULL.Unload();
            return;
        case 8: //spellType
            SetType(defaultSPIT.spellType);
            return;
        case 9: //costUnused
            SPIT.value.cost = defaultSPIT.cost;
            return;
        case 10: //levelTypeUnused
            SPIT.value.levelType = defaultSPIT.levelType;
            return;
        case 11: //flags
            SetFlagMask(defaultSPIT.flags);
            return;
        case 12: //unused1
            SPIT.value.unused1[0] = defaultSPIT.unused1[0];
            SPIT.value.unused1[1] = defaultSPIT.unused1[1];
            SPIT.value.unused1[2] = defaultSPIT.unused1[2];
            return;
        case 13: //effects
            if(ListFieldID == 0) //effectsSize
                {
                Effects.Unload();
                return;
                }

            if(ListIndex >= Effects.value.size())
                return;

            switch(ListFieldID)
                {
                case 1: //effect
                    Effects.value[ListIndex]->EFID.value = defaultEffect.EFID.value;
                    return;
                case 2: //magnitude
                    Effects.value[ListIndex]->EFIT.value.magnitude = defaultEffect.EFIT.value.magnitude;
                    return;
                case 3: //area
                    Effects.value[ListIndex]->EFIT.value.area = defaultEffect.EFIT.value.area;
                    return;
                case 4: //duration
                    Effects.value[ListIndex]->EFIT.value.duration = defaultEffect.EFIT.value.duration;
                    return;
                case 5: //rangeType
                    Effects.value[ListIndex]->SetRange(defaultEffect.EFIT.value.rangeType);
                    return;
                case 6: //actorValue
                    Effects.value[ListIndex]->EFIT.value.actorValue = defaultEffect.EFIT.value.actorValue;
                    return;
                case 7: //conditions
                    if(ListX2FieldID == 0) //conditionsSize
                        {
                        Effects.value[ListIndex]->CTDA.Unload();
                        return;
                        }

                    if(ListX2Index >= Effects.value[ListIndex]->CTDA.value.size())
                        return;

                    switch(ListX2FieldID)
                        {
                        case 1: //operType
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->operType = defaultCTDA.operType;
                            return;
                        case 2: //unused1
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->unused1[0] = defaultCTDA.unused1[0];
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->unused1[1] = defaultCTDA.unused1[1];
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->unused1[2] = defaultCTDA.unused1[2];
                            return;
                        case 3: //compValue
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->compValue = defaultCTDA.compValue;
                            return;
                        case 4: //ifunc
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->ifunc = defaultCTDA.ifunc;
                            return;
                        case 5: //param1
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->param1 = defaultCTDA.param1;
                            return;
                        case 6: //param2
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->param2 = defaultCTDA.param2;
                            return;
                        case 7: //runOnType
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->runOnType = defaultCTDA.runOnType;
                            return;
                        case 8: //reference
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->reference = defaultCTDA.reference;
                            return;
                        default:
                            return;
                        }
                    return;
                default:
                    return;
                }
            return;
        default:
            return;
        }
    }
Example #10
0
bool SPELRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(UINT16 *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 8: //spellType
            SetType(*(UINT32 *)FieldValue);
            break;
        case 9: //costUnused
            SPIT.value.cost = *(UINT32 *)FieldValue;
            break;
        case 10: //levelTypeUnused
            SPIT.value.levelType = *(UINT32 *)FieldValue;
            break;
        case 11: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 12: //unused1
            if(ArraySize != 3)
                break;
            SPIT.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            SPIT.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            SPIT.value.unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 13: //effects
            if(ListFieldID == 0) //effectsSize
                {
                Effects.resize(ArraySize);
                return false;
                }

            if(ListIndex >= Effects.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //effect
                    Effects.value[ListIndex]->EFID.value = *(FORMID *)FieldValue;
                    return true;
                case 2: //magnitude
                    Effects.value[ListIndex]->EFIT.value.magnitude = *(UINT32 *)FieldValue;
                    break;
                case 3: //area
                    Effects.value[ListIndex]->EFIT.value.area = *(UINT32 *)FieldValue;
                    break;
                case 4: //duration
                    Effects.value[ListIndex]->EFIT.value.duration = *(UINT32 *)FieldValue;
                    break;
                case 5: //rangeType
                    Effects.value[ListIndex]->SetRange(*(UINT32 *)FieldValue);
                    break;
                case 6: //actorValue
                    Effects.value[ListIndex]->EFIT.value.actorValue = *(SINT32 *)FieldValue;
                    break;
                case 7: //conditions
                    if(ListX2FieldID == 0) //conditionsSize
                        {
                        Effects.value[ListIndex]->CTDA.resize(ArraySize);
                        return false;
                        }

                    if(ListX2Index >= Effects.value[ListIndex]->CTDA.value.size())
                        break;

                    switch(ListX2FieldID)
                        {
                        case 1: //operType
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->operType = *(UINT8 *)FieldValue;
                            break;
                        case 2: //unused1
                            if(ArraySize != 3)
                                break;
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
                            break;
                        case 3: //compValue
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->compValue = *(FORMID_OR_FLOAT32 *)FieldValue;
                            return true;
                        case 4: //ifunc
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->ifunc = *(UINT32 *)FieldValue;
                            return true;
                        case 5: //param1
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->param1 = *(FORMID_OR_UINT32 *)FieldValue;
                            return true;
                        case 6: //param2
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->param2 = *(FORMID_OR_UINT32 *)FieldValue;
                            return true;
                        case 7: //runOnType
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->runOnType = *(UINT32 *)FieldValue;
                            return true;
                        case 8: //reference
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->reference = *(FORMID_OR_UINT32 *)FieldValue;
                            return true;
                        default:
                            break;
                        }
                    break;
                default:
                    break;
                }
            break;
        default:
            break;
        }
    return false;
    }
Example #11
0
bool MGEFRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 2: //fid
            formID = *(FORMID *)FieldValue;
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //text
            DESC.Copy((STRING)FieldValue);
            break;
        case 7: //iconPath
            ICON.Copy((STRING)FieldValue);
            break;
        case 8: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 9: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 10: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 11: //flags
            SetFlagMask(*(UINT32 *)FieldValue);
            break;
        case 12: //baseCost
            DATA.value.baseCost = *(FLOAT32 *)FieldValue;
            break;
        case 13: //associated
            DATA.value.associated = *(FORMID_OR_MGEFCODE_OR_ACTORVALUE_OR_UINT32 *)FieldValue;
            return true;
        case 14: //school
            DATA.value.schoolType = *(UINT32 *)FieldValue;
            break;
        case 15: //resistValue
            DATA.value.resistValue = *(FORMID *)FieldValue;
            return true;
        case 16: //numCounters
            DATA.value.numCounters = *(UINT16 *)FieldValue;
            ESCE.value.resize(*(UINT16 *)FieldValue);
            break;
        case 17: //unused1
            if(ArraySize != 2)
                break;
            DATA.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            DATA.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 18: //light
            DATA.value.light = *(FORMID *)FieldValue;
            return true;
        case 19: //projectileSpeed
            DATA.value.projectileSpeed = *(FLOAT32 *)FieldValue;
            break;
        case 20: //effectShader
            DATA.value.effectShader = *(FORMID *)FieldValue;
            return true;
        case 21: //enchantEffect
            DATA.value.enchantEffect = *(FORMID *)FieldValue;
            return true;
        case 22: //castingSound
            DATA.value.castingSound = *(FORMID *)FieldValue;
            return true;
        case 23: //boltSound
            DATA.value.boltSound = *(FORMID *)FieldValue;
            return true;
        case 24: //hitSound
            DATA.value.hitSound = *(FORMID *)FieldValue;
            return true;
        case 25: //areaSound
            DATA.value.areaSound = *(FORMID *)FieldValue;
            return true;
        case 26: //cefEnchantment
            DATA.value.cefEnchantment = *(FLOAT32 *)FieldValue;
            break;
        case 27: //cefBarter
            DATA.value.cefBarter = *(FLOAT32 *)FieldValue;
            break;
        case 28: //counterEffects
            ESCE.resize(ArraySize);
            for(UINT32 x = 0; x < ArraySize; x++)
                ESCE.value[x] = ((MGEFCODEARRAY)FieldValue)[x];
            return true;
        //OBME Fields
        case 29: //recordVersion
            OBME.Load();
            OBME->OBME.value.recordVersion = *(UINT8 *)FieldValue;
            break;
        case 30: //betaVersion
            OBME.Load();
            OBME->OBME.value.betaVersion = *(UINT8 *)FieldValue;
            break;
        case 31: //minorVersion
            OBME.Load();
            OBME->OBME.value.minorVersion = *(UINT8 *)FieldValue;
            break;
        case 32: //majorVersion
            OBME.Load();
            OBME->OBME.value.majorVersion = *(UINT8 *)FieldValue;
            break;
        case 33: //mgefParamAInfo
            OBME.Load();
            OBME->OBME.value.mgefParamAInfo = *(UINT8 *)FieldValue;
            return true;
        case 34: //mgefParamBInfo
            OBME.Load();
            OBME->OBME.value.mgefParamBInfo = *(UINT8 *)FieldValue;
            return true;
        case 35: //reserved1
            if(ArraySize != 0x2)
                break;
            OBME.Load();
            OBME->OBME.value.reserved1[0] = ((UINT8ARRAY)FieldValue)[0];
            OBME->OBME.value.reserved1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 36: //handlerCode
            OBME.Load();
            OBME->OBME.value.handlerCode = *(UINT32 *)FieldValue;
            break;
        case 37: //OBMEFlags
            SetOBMEFlagMask(*(UINT32 *)FieldValue);
            break;
        case 38: //mgefParamB
            OBME.Load();
            OBME->OBME.value.mgefParamB = *(FORMID_OR_MGEFCODE_OR_ACTORVALUE_OR_UINT32 *)FieldValue;
            return true;
        case 39: //reserved2
            if(ArraySize != 0x1C)
                break;
            OBME.Load();
            memcpy(&OBME->OBME.value.reserved2[0], &((UINT8ARRAY)FieldValue)[0], sizeof(OBME->OBME.value.reserved2));
            break;
        case 40: //mgefCode
            OBME.Load();
            OBME->EDDX.Load();
            memcpy(&OBME->EDDX.value.mgefCode[0], FieldValue, sizeof(OBME->EDDX.value.mgefCode) - 1);
            OBME->EDDX.value.mgefCode[4] = 0;
            return true;
        case 41: //datx_p
            if(ArraySize != 0x20)
                break;
            OBME.Load();
            OBME->DATX.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        default:
            break;
        }
    return false;
    }
Example #12
0
bool FACTRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(UINT16 *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 8: //relations
            if(ListFieldID == 0) //relationsSize
                {
                XNAM.resize(ArraySize);
                return false;
                }

            if(ListIndex >= XNAM.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //faction
                    XNAM.value[ListIndex]->faction = *(FORMID *)FieldValue;
                    return true;
                case 2: //mod
                    XNAM.value[ListIndex]->mod = *(SINT32 *)FieldValue;
                    break;
                case 3: //groupReactionType
                    XNAM.value[ListIndex]->SetType(*(UINT32 *)FieldValue);
                    break;
                default:
                    break;
                }
            break;
        case 9: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 10: //unused1
            if(ArraySize != 2)
                break;
            DATA.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            DATA.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 11: //crimeGoldMultiplier
            CNAM.Load();
            *CNAM.value = *(FLOAT32 *)FieldValue;
            break;
        case 12: //ranks
            if(ListFieldID == 0) //ranksSize
                {
                RNAM.resize(ArraySize);
                return false;
                }

            if(ListIndex >= RNAM.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //rank
                    RNAM.value[ListIndex]->RNAM.value = *(SINT32 *)FieldValue;
                    break;
                case 2: //male
                    RNAM.value[ListIndex]->MNAM.Copy((STRING)FieldValue);
                    break;
                case 3: //female
                    RNAM.value[ListIndex]->FNAM.Copy((STRING)FieldValue);
                    break;
                case 4: //insigniaPath
                    RNAM.value[ListIndex]->INAM.Copy((STRING)FieldValue);
                    break;
                default:
                    break;
                }
            break;
        case 13: //reputation
            WMI1.value = *(FORMID *)FieldValue;
            return true;
        default:
            break;
        }
    return false;
    }
Example #13
0
bool ACHRRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //base
            NAME.value = *(FORMID *)FieldValue;
            return true;
        case 6: //unknownXPCIFormID
            XPCI.Load();
            XPCI->XPCI.value = *(FORMID *)FieldValue;
            return true;
        case 7: //unknownXPCIString
            XPCI.Load();
            XPCI->FULL.Copy((STRING)FieldValue);
            break;
        case 8: //lod1
            XLOD.Load();
            XLOD->lod1 = *(FLOAT32 *)FieldValue;
            break;
        case 9: //lod2
            XLOD.Load();
            XLOD->lod2 = *(FLOAT32 *)FieldValue;
            break;
        case 10: //lod3
            XLOD.Load();
            XLOD->lod3 = *(FLOAT32 *)FieldValue;
            break;
        case 11: //parent
            XESP.Load();
            XESP->parent = *(FORMID *)FieldValue;
            return true;
        case 12: //parentFlags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 13: //unused1
            if(ArraySize != 3)
                break;
            XESP.Load();
            XESP->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            XESP->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            XESP->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 14: //merchantContainer
            XMRC.value = *(FORMID *)FieldValue;
            return true;
        case 15: //horse
            XHRS.Load();
            XHRS.value = *(FORMID *)FieldValue;
            return true;
        case 16: //xrgd_p
            XRGD.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 17: //scale
            XSCL.Load();
            XSCL.value = *(FLOAT32 *)FieldValue;
            break;
        case 18: //posX
            DATA.value.posX = *(FLOAT32 *)FieldValue;
            break;
        case 19: //posY
            DATA.value.posY = *(FLOAT32 *)FieldValue;
            break;
        case 20: //posZ
            DATA.value.posZ = *(FLOAT32 *)FieldValue;
            break;
        case 21: //rotX
            DATA.value.rotX = *(FLOAT32 *)FieldValue;
            break;
        case 22: //rotY
            DATA.value.rotY = *(FLOAT32 *)FieldValue;
            break;
        case 23: //rotZ
            DATA.value.rotZ = *(FLOAT32 *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
Example #14
0
void CSTYRecord::DeleteField(FIELD_IDENTIFIERS)
    {
    CSTYCSTD defaultCSTD;
    CSTYCSAD defaultCSAD;
    CSTYCSSD defaultCSSD;
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(0);
            return;
        case 3: //versionControl1
            flagsUnk = 0;
            return;
        case 4: //eid
            EDID.Unload();
            return;
        case 5: //formVersion
            formVersion = 0;
            return;
        case 6: //versionControl2
            versionControl2[0] = 0;
            versionControl2[1] = 0;
            return;
        case 7: //dodgeChance
            CSTD.value.dodgeChance = defaultCSTD.dodgeChance;
            return;
        case 8: //lrChance
            CSTD.value.lrChance = defaultCSTD.lrChance;
            return;
        case 9: //unused1
            CSTD.value.unused1[0] = defaultCSTD.unused1[0];
            CSTD.value.unused1[1] = defaultCSTD.unused1[1];
            return;
        case 10: //lrTimerMin
            CSTD.value.lrTimerMin = defaultCSTD.lrTimerMin;
            return;
        case 11: //lrTimerMax
            CSTD.value.lrTimerMax = defaultCSTD.lrTimerMax;
            return;
        case 12: //forTimerMin
            CSTD.value.forTimerMin = defaultCSTD.forTimerMin;
            return;
        case 13: //forTimerMax
            CSTD.value.forTimerMax = defaultCSTD.forTimerMax;
            return;
        case 14: //backTimerMin
            CSTD.value.backTimerMin = defaultCSTD.backTimerMin;
            return;
        case 15: //backTimerMax
            CSTD.value.backTimerMax = defaultCSTD.backTimerMax;
            return;
        case 16: //idleTimerMin
            CSTD.value.idleTimerMin = defaultCSTD.idleTimerMin;
            return;
        case 17: //idleTimerMax
            CSTD.value.idleTimerMax = defaultCSTD.idleTimerMax;
            return;
        case 18: //blkChance
            CSTD.value.blkChance = defaultCSTD.blkChance;
            return;
        case 19: //atkChance
            CSTD.value.atkChance = defaultCSTD.atkChance;
            return;
        case 20: //unused2
            CSTD.value.unused2[0] = defaultCSTD.unused2[0];
            CSTD.value.unused2[1] = defaultCSTD.unused2[1];
            return;
        case 21: //atkBRecoil
            CSTD.value.atkBRecoil = defaultCSTD.atkBRecoil;
            return;
        case 22: //atkBUnc
            CSTD.value.atkBUnc = defaultCSTD.atkBUnc;
            return;
        case 23: //atkBh2h
            CSTD.value.atkBh2h = defaultCSTD.atkBh2h;
            return;
        case 24: //pAtkChance
            CSTD.value.pAtkChance = defaultCSTD.pAtkChance;
            return;
        case 25: //unused3
            CSTD.value.unused3[0] = defaultCSTD.unused3[0];
            CSTD.value.unused3[1] = defaultCSTD.unused3[1];
            CSTD.value.unused3[2] = defaultCSTD.unused3[2];
            return;
        case 26: //pAtkBRecoil
            CSTD.value.pAtkBRecoil = defaultCSTD.pAtkBRecoil;
            return;
        case 27: //pAtkBUnc
            CSTD.value.pAtkBUnc = defaultCSTD.pAtkBUnc;
            return;
        case 28: //pAtkNormal
            CSTD.value.pAtkNormal = defaultCSTD.pAtkNormal;
            return;
        case 29: //pAtkFor
            CSTD.value.pAtkFor = defaultCSTD.pAtkFor;
            return;
        case 30: //pAtkBack
            CSTD.value.pAtkBack = defaultCSTD.pAtkBack;
            return;
        case 31: //pAtkL
            CSTD.value.pAtkL = defaultCSTD.pAtkL;
            return;
        case 32: //pAtkR
            CSTD.value.pAtkR = defaultCSTD.pAtkR;
            return;
        case 33: //unused4
            CSTD.value.unused4[0] = defaultCSTD.unused4[0];
            CSTD.value.unused4[1] = defaultCSTD.unused4[1];
            CSTD.value.unused4[2] = defaultCSTD.unused4[2];
            return;
        case 34: //holdTimerMin
            CSTD.value.holdTimerMin = defaultCSTD.holdTimerMin;
            return;
        case 35: //holdTimerMax
            CSTD.value.holdTimerMax = defaultCSTD.holdTimerMax;
            return;
        case 36: //flags
            SetFlagMask(defaultCSTD.flags);
            return;
        case 37: //unused5
            CSTD.value.unused5[0] = defaultCSTD.unused5[0];
            CSTD.value.unused5[1] = defaultCSTD.unused5[1];
            return;
        case 38: //acroDodge
            CSTD.value.acroDodge = defaultCSTD.acroDodge;
            return;
        case 39: //rushChance
            CSTD.value.rushChance = defaultCSTD.rushChance;
            return;
        case 40: //unused6
            CSTD.value.unused6[0] = defaultCSTD.unused6[0];
            CSTD.value.unused6[1] = defaultCSTD.unused6[1];
            return;
        case 41: //rushMult
            CSTD.value.rushMult = defaultCSTD.rushMult;
            return;
        case 42: //dodgeFMult
            CSAD.value.dodgeFMult = defaultCSAD.dodgeFMult;
            return;
        case 43: //dodgeFBase
            CSAD.value.dodgeFBase = defaultCSAD.dodgeFBase;
            return;
        case 44: //encSBase
            CSAD.value.encSBase = defaultCSAD.encSBase;
            return;
        case 45: //encSMult
            CSAD.value.encSMult = defaultCSAD.encSMult;
            return;
        case 46: //dodgeAtkMult
            CSAD.value.dodgeAtkMult = defaultCSAD.dodgeAtkMult;
            return;
        case 47: //dodgeNAtkMult
            CSAD.value.dodgeNAtkMult = defaultCSAD.dodgeNAtkMult;
            return;
        case 48: //dodgeBAtkMult
            CSAD.value.dodgeBAtkMult = defaultCSAD.dodgeBAtkMult;
            return;
        case 49: //dodgeBNAtkMult
            CSAD.value.dodgeBNAtkMult = defaultCSAD.dodgeBNAtkMult;
            return;
        case 50: //dodgeFAtkMult
            CSAD.value.dodgeFAtkMult = defaultCSAD.dodgeFAtkMult;
            return;
        case 51: //dodgeFNAtkMult
            CSAD.value.dodgeFNAtkMult = defaultCSAD.dodgeFNAtkMult;
            return;
        case 52: //blockMult
            CSAD.value.blockMult = defaultCSAD.blockMult;
            return;
        case 53: //blockBase
            CSAD.value.blockBase = defaultCSAD.blockBase;
            return;
        case 54: //blockAtkMult
            CSAD.value.blockAtkMult = defaultCSAD.blockAtkMult;
            return;
        case 55: //blockNAtkMult
            CSAD.value.blockNAtkMult = defaultCSAD.blockNAtkMult;
            return;
        case 56: //atkMult
            CSAD.value.atkMult = defaultCSAD.atkMult;
            return;
        case 57: //atkBase
            CSAD.value.atkBase = defaultCSAD.atkBase;
            return;
        case 58: //atkAtkMult
            CSAD.value.atkAtkMult = defaultCSAD.atkAtkMult;
            return;
        case 59: //atkNAtkMult
            CSAD.value.atkNAtkMult = defaultCSAD.atkNAtkMult;
            return;
        case 60: //atkBlockMult
            CSAD.value.atkBlockMult = defaultCSAD.atkBlockMult;
            return;
        case 61: //pAtkFBase
            CSAD.value.pAtkFBase = defaultCSAD.pAtkFBase;
            return;
        case 62: //pAtkFMult
            CSAD.value.pAtkFMult = defaultCSAD.pAtkFMult;
            return;
        case 63: //coverRadius
            CSSD.value.coverRadius = defaultCSSD.coverRadius;
            return;
        case 64: //coverChance
            CSSD.value.coverChance = defaultCSSD.coverChance;
            return;
        case 65: //waitTimerMin
            CSSD.value.waitTimerMin = defaultCSSD.waitTimerMin;
            return;
        case 66: //waitTimerMax
            CSSD.value.waitTimerMax = defaultCSSD.waitTimerMax;
            return;
        case 67: //waitFireTimerMin
            CSSD.value.waitFireTimerMin =defaultCSSD.waitFireTimerMin;
            break;
        case 68: //waitFireTimerMax
            CSSD.value.waitFireTimerMax = defaultCSSD.waitFireTimerMax;
            break;
        case 69: //fireTimerMin
            CSSD.value.fireTimerMin = defaultCSSD.fireTimerMin;
            return;
        case 70: //fireTimerMax
            CSSD.value.fireTimerMax = defaultCSSD.fireTimerMax;
            return;
        case 71: //rangedRangeMultMin
            CSSD.value.rangedRangeMultMin = defaultCSSD.rangedRangeMultMin;
            return;
        case 72: //unused7
            CSSD.value.unused1[0] = defaultCSSD.unused1[0];
            CSSD.value.unused1[1] = defaultCSSD.unused1[1];
            CSSD.value.unused1[2] = defaultCSSD.unused1[2];
            CSSD.value.unused1[3] = defaultCSSD.unused1[3];
            return;
        case 73: //weaponRestrictions
            SetType(defaultCSSD.weaponRestrictions);
            return;
        case 74: //rangedRangeMultMax
            CSSD.value.rangedRangeMultMax = defaultCSSD.rangedRangeMultMax;
            return;
        case 75: //targetMaxFOV
            CSSD.value.targetMaxFOV = defaultCSSD.targetMaxFOV;
            return;
        case 76: //combatRadius
            CSSD.value.combatRadius = defaultCSSD.combatRadius;
            return;
        case 77: //semiAutoFireDelayMultMin
            CSSD.value.semiAutoFireDelayMultMin = defaultCSSD.semiAutoFireDelayMultMin;
            return;
        case 78: //semiAutoFireDelayMultMax
            CSSD.value.semiAutoFireDelayMultMax = defaultCSSD.semiAutoFireDelayMultMax;
            return;
        default:
            return;
        }
    }
Example #15
0
bool CSTYRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(uint16_t *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //dodgeChance
            CSTD.value.dodgeChance = *(uint8_t *)FieldValue;
            break;
        case 8: //lrChance
            CSTD.value.lrChance = *(uint8_t *)FieldValue;
            break;
        case 9: //unused1
            if(ArraySize != 2)
                break;
            CSTD.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            CSTD.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 10: //lrTimerMin
            CSTD.value.lrTimerMin = *(float *)FieldValue;
            break;
        case 11: //lrTimerMax
            CSTD.value.lrTimerMax = *(float *)FieldValue;
            break;
        case 12: //forTimerMin
            CSTD.value.forTimerMin = *(float *)FieldValue;
            break;
        case 13: //forTimerMax
            CSTD.value.forTimerMax = *(float *)FieldValue;
            break;
        case 14: //backTimerMin
            CSTD.value.backTimerMin = *(float *)FieldValue;
            break;
        case 15: //backTimerMax
            CSTD.value.backTimerMax = *(float *)FieldValue;
            break;
        case 16: //idleTimerMin
            CSTD.value.idleTimerMin = *(float *)FieldValue;
            break;
        case 17: //idleTimerMax
            CSTD.value.idleTimerMax = *(float *)FieldValue;
            break;
        case 18: //blkChance
            CSTD.value.blkChance = *(uint8_t *)FieldValue;
            break;
        case 19: //atkChance
            CSTD.value.atkChance = *(uint8_t *)FieldValue;
            break;
        case 20: //unused2
            if(ArraySize != 2)
                break;
            CSTD.value.unused2[0] = ((UINT8ARRAY)FieldValue)[0];
            CSTD.value.unused2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 21: //atkBRecoil
            CSTD.value.atkBRecoil = *(float *)FieldValue;
            break;
        case 22: //atkBUnc
            CSTD.value.atkBUnc = *(float *)FieldValue;
            break;
        case 23: //atkBh2h
            CSTD.value.atkBh2h = *(float *)FieldValue;
            break;
        case 24: //pAtkChance
            CSTD.value.pAtkChance = *(uint8_t *)FieldValue;
            break;
        case 25: //unused3
            if(ArraySize != 3)
                break;
            CSTD.value.unused3[0] = ((UINT8ARRAY)FieldValue)[0];
            CSTD.value.unused3[1] = ((UINT8ARRAY)FieldValue)[1];
            CSTD.value.unused3[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 26: //pAtkBRecoil
            CSTD.value.pAtkBRecoil = *(float *)FieldValue;
            break;
        case 27: //pAtkBUnc
            CSTD.value.pAtkBUnc = *(float *)FieldValue;
            break;
        case 28: //pAtkNormal
            CSTD.value.pAtkNormal = *(uint8_t *)FieldValue;
            break;
        case 29: //pAtkFor
            CSTD.value.pAtkFor = *(uint8_t *)FieldValue;
            break;
        case 30: //pAtkBack
            CSTD.value.pAtkBack = *(uint8_t *)FieldValue;
            break;
        case 31: //pAtkL
            CSTD.value.pAtkL = *(uint8_t *)FieldValue;
            break;
        case 32: //pAtkR
            CSTD.value.pAtkR = *(uint8_t *)FieldValue;
            break;
        case 33: //unused4
            if(ArraySize != 3)
                break;
            CSTD.value.unused4[0] = ((UINT8ARRAY)FieldValue)[0];
            CSTD.value.unused4[1] = ((UINT8ARRAY)FieldValue)[1];
            CSTD.value.unused4[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 34: //holdTimerMin
            CSTD.value.holdTimerMin = *(float *)FieldValue;
            break;
        case 35: //holdTimerMax
            CSTD.value.holdTimerMax = *(float *)FieldValue;
            break;
        case 36: //flags
            SetFlagMask(*(uint16_t *)FieldValue);
            break;
        case 37: //unused5
            if(ArraySize != 2)
                break;
            CSTD.value.unused5[0] = ((UINT8ARRAY)FieldValue)[0];
            CSTD.value.unused5[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 38: //acroDodge
            CSTD.value.acroDodge = *(uint8_t *)FieldValue;
            break;
        case 39: //rushChance
            CSTD.value.rushChance = *(uint8_t *)FieldValue;
            break;
        case 40: //unused6
            if(ArraySize != 2)
                break;
            CSTD.value.unused6[0] = ((UINT8ARRAY)FieldValue)[0];
            CSTD.value.unused6[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 41: //rushMult
            CSTD.value.rushMult = *(float *)FieldValue;
            break;
        case 42: //dodgeFMult
            CSAD.value.dodgeFMult = *(float *)FieldValue;
            break;
        case 43: //dodgeFBase
            CSAD.value.dodgeFBase = *(float *)FieldValue;
            break;
        case 44: //encSBase
            CSAD.value.encSBase = *(float *)FieldValue;
            break;
        case 45: //encSMult
            CSAD.value.encSMult = *(float *)FieldValue;
            break;
        case 46: //dodgeAtkMult
            CSAD.value.dodgeAtkMult = *(float *)FieldValue;
            break;
        case 47: //dodgeNAtkMult
            CSAD.value.dodgeNAtkMult = *(float *)FieldValue;
            break;
        case 48: //dodgeBAtkMult
            CSAD.value.dodgeBAtkMult = *(float *)FieldValue;
            break;
        case 49: //dodgeBNAtkMult
            CSAD.value.dodgeBNAtkMult = *(float *)FieldValue;
            break;
        case 50: //dodgeFAtkMult
            CSAD.value.dodgeFAtkMult = *(float *)FieldValue;
            break;
        case 51: //dodgeFNAtkMult
            CSAD.value.dodgeFNAtkMult = *(float *)FieldValue;
            break;
        case 52: //blockMult
            CSAD.value.blockMult = *(float *)FieldValue;
            break;
        case 53: //blockBase
            CSAD.value.blockBase = *(float *)FieldValue;
            break;
        case 54: //blockAtkMult
            CSAD.value.blockAtkMult = *(float *)FieldValue;
            break;
        case 55: //blockNAtkMult
            CSAD.value.blockNAtkMult = *(float *)FieldValue;
            break;
        case 56: //atkMult
            CSAD.value.atkMult = *(float *)FieldValue;
            break;
        case 57: //atkBase
            CSAD.value.atkBase = *(float *)FieldValue;
            break;
        case 58: //atkAtkMult
            CSAD.value.atkAtkMult = *(float *)FieldValue;
            break;
        case 59: //atkNAtkMult
            CSAD.value.atkNAtkMult = *(float *)FieldValue;
            break;
        case 60: //atkBlockMult
            CSAD.value.atkBlockMult = *(float *)FieldValue;
            break;
        case 61: //pAtkFBase
            CSAD.value.pAtkFBase = *(float *)FieldValue;
            break;
        case 62: //pAtkFMult
            CSAD.value.pAtkFMult = *(float *)FieldValue;
            break;
        case 63: //coverRadius
            CSSD.value.coverRadius = *(float *)FieldValue;
            break;
        case 64: //coverChance
            CSSD.value.coverChance = *(float *)FieldValue;
            break;
        case 65: //waitTimerMin
            CSSD.value.waitTimerMin = *(float *)FieldValue;
            break;
        case 66: //waitTimerMax
            CSSD.value.waitTimerMax = *(float *)FieldValue;
            break;
        case 67: //waitFireTimerMin
            CSSD.value.waitFireTimerMin = *(float *)FieldValue;
            break;
        case 68: //waitFireTimerMax
            CSSD.value.waitFireTimerMax = *(float *)FieldValue;
            break;
        case 69: //fireTimerMin
            CSSD.value.fireTimerMin = *(float *)FieldValue;
            break;
        case 70: //fireTimerMax
            CSSD.value.fireTimerMax = *(float *)FieldValue;
            break;
        case 71: //rangedRangeMultMin
            CSSD.value.rangedRangeMultMin = *(float *)FieldValue;
            break;
        case 72: //unused7
            if(ArraySize != 4)
                break;
            CSSD.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            CSSD.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            CSSD.value.unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            CSSD.value.unused1[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 73: //weaponRestrictions
            SetType(*(uint32_t *)FieldValue);
            break;
        case 74: //rangedRangeMultMax
            CSSD.value.rangedRangeMultMax = *(float *)FieldValue;
            break;
        case 75: //targetMaxFOV
            CSSD.value.targetMaxFOV = *(float *)FieldValue;
            break;
        case 76: //combatRadius
            CSSD.value.combatRadius = *(float *)FieldValue;
            break;
        case 77: //semiAutoFireDelayMultMin
            CSSD.value.semiAutoFireDelayMultMin = *(float *)FieldValue;
            break;
        case 78: //semiAutoFireDelayMultMax
            CSSD.value.semiAutoFireDelayMultMax = *(float *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
Example #16
0
bool LVLIRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //chanceNone
            LVLD.value = *(UINT8 *)FieldValue;
            if((LVLD.value & fAltCalcFromAllLevels) != 0)
                {
                LVLD.value &= ~fAltCalcFromAllLevels;
                IsCalcFromAllLevels(true);
                }
            break;
        case 6: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 9: //entries
            if(ListFieldID == 0) //entriesSize
                {
                Entries.resize(ArraySize);
                return false;
                }

            if(ListIndex >= Entries.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //level
                    Entries.value[ListIndex]->level = *(SINT16 *)FieldValue;
                    break;
                case 2: //unused1
                    if(ArraySize != 2)
                        break;
                    Entries.value[ListIndex]->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                    Entries.value[ListIndex]->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                    break;
                case 3: //listId
                    Entries.value[ListIndex]->listId = *(FORMID *)FieldValue;
                    return true;
                case 4: //count
                    Entries.value[ListIndex]->count = *(SINT16 *)FieldValue;
                    break;
                case 5: //unused2
                    if(ArraySize != 2)
                        break;
                    Entries.value[ListIndex]->unused2[0] = ((UINT8ARRAY)FieldValue)[0];
                    Entries.value[ListIndex]->unused2[1] = ((UINT8ARRAY)FieldValue)[1];
                    break;
                default:
                    break;
                }
            break;
        default:
            break;
        }
    return false;
    }
Example #17
0
bool TXSTRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(uint16_t *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //boundX1
            OBND.value.x1 = *(int16_t *)FieldValue;
            break;
        case 8: //boundY1
            OBND.value.y1 = *(int16_t *)FieldValue;
            break;
        case 9: //boundZ1
            OBND.value.z1 = *(int16_t *)FieldValue;
            break;
        case 10: //boundX2
            OBND.value.x2 = *(int16_t *)FieldValue;
            break;
        case 11: //boundY2
            OBND.value.y2 = *(int16_t *)FieldValue;
            break;
        case 12: //boundZ2
            OBND.value.z2 = *(int16_t *)FieldValue;
            break;
        case 13: //baseImageOrTransparency
            TX00.Copy((char *)FieldValue);
            break;
        case 14: //normalMapOrSpecular
            TX01.Copy((char *)FieldValue);
            break;
        case 15: //envMapMaskOrUnk
            TX02.Copy((char *)FieldValue);
            break;
        case 16: //glowMapOrUnused
            TX03.Copy((char *)FieldValue);
            break;
        case 17: //parallaxMapOrUnused
            TX04.Copy((char *)FieldValue);
            break;
        case 18: //envMapOrUnused
            TX05.Copy((char *)FieldValue);
            break;
        case 19: //decalMinWidth
            DODT.Load();
            DODT->minWidth = *(float *)FieldValue;
            break;
        case 20: //decalMaxWidth
            DODT.Load();
            DODT->maxWidth = *(float *)FieldValue;
            break;
        case 21: //decalMinHeight
            DODT.Load();
            DODT->minHeight = *(float *)FieldValue;
            break;
        case 22: //decalMaxHeight
            DODT.Load();
            DODT->maxHeight = *(float *)FieldValue;
            break;
        case 23: //decalDepth
            DODT.Load();
            DODT->depth = *(float *)FieldValue;
            break;
        case 24: //decalShininess
            DODT.Load();
            DODT->shininess = *(float *)FieldValue;
            break;
        case 25: //decalScale
            DODT.Load();
            DODT->scale = *(float *)FieldValue;
            break;
        case 26: //decalPasses
            DODT.Load();
            DODT->passes = *(uint8_t *)FieldValue;
            break;
        case 27: //decalFlags
            DODT.Load();
            DODT->flags = *(uint8_t *)FieldValue;
            break;
        case 28: //decalUnused1
            if(ArraySize != 2)
                break;
            DODT.Load();
            DODT->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            DODT->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 29: //decalRed
            DODT.Load();
            DODT->red = *(uint8_t *)FieldValue;
            break;
        case 30: //decalGreen
            DODT.Load();
            DODT->green = *(uint8_t *)FieldValue;
            break;
        case 31: //decalBlue
            DODT.Load();
            DODT->blue = *(uint8_t *)FieldValue;
            break;
        case 32: //decalUnused2
            if(ArraySize != 1)
                break;
            DODT.Load();
            DODT->unused2 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 33: //flags
            SetFlagMask(*(uint16_t *)FieldValue);
            break;
        default:
            break;
        }
    return false;
    }
Example #18
0
bool IDLMRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(uint16_t *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //boundX1
            OBND.value.x1 = *(int16_t *)FieldValue;
            break;
        case 8: //boundY1
            OBND.value.y1 = *(int16_t *)FieldValue;
            break;
        case 9: //boundZ1
            OBND.value.z1 = *(int16_t *)FieldValue;
            break;
        case 10: //boundX2
            OBND.value.x2 = *(int16_t *)FieldValue;
            break;
        case 11: //boundY2
            OBND.value.y2 = *(int16_t *)FieldValue;
            break;
        case 12: //boundZ2
            OBND.value.z2 = *(int16_t *)FieldValue;
            break;
        case 13: //flags
            SetFlagMask(*(uint8_t *)FieldValue);
            break;
        case 14: //count
            IDLC.value = *(uint8_t *)FieldValue;
            break;
        case 15: //timer
            IDLT.value = *(float *)FieldValue;
            break;
        case 16: //animations
            IDLA.resize(ArraySize);
            for(uint32_t x = 0; x < ArraySize; x++)
                IDLA.value[x] = ((FORMIDARRAY)FieldValue)[x];
            return true;
        default:
            break;
        }
    return false;
    }
Example #19
0
void EXPLRecord::DeleteField(FIELD_IDENTIFIERS)
    {
    GENOBND defaultOBND;
    FNVMODS defaultMODS;
    EXPLDATA defaultDATA;
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(0);
            return;
        case 3: //versionControl1
            flagsUnk = 0;
            return;
        case 4: //eid
            EDID.Unload();
            return;
        case 5: //formVersion
            formVersion = 0;
            return;
        case 6: //versionControl2
            versionControl2[0] = 0;
            versionControl2[1] = 0;
            return;
        case 7: //boundX1
            OBND.value.x1 = defaultOBND.x1;
            return;
        case 8: //boundY1
            OBND.value.y1 = defaultOBND.y1;
            return;
        case 9: //boundZ1
            OBND.value.z1 = defaultOBND.z1;
            return;
        case 10: //boundX2
            OBND.value.x2 = defaultOBND.x2;
            return;
        case 11: //boundY2
            OBND.value.y2 = defaultOBND.y2;
            return;
        case 12: //boundZ2
            OBND.value.z2 = defaultOBND.z2;
            return;
        case 13: //full
            FULL.Unload();
            return;
        case 14: //modPath
            if(MODL.IsLoaded())
                MODL->MODL.Unload();
            return;
        case 15: //modb
            if(MODL.IsLoaded())
                MODL->MODB.Unload();
            return;
        case 16: //modt_p
            if(MODL.IsLoaded())
                MODL->MODT.Unload();
            return;
        case 17: //altTextures
            if(MODL.IsLoaded())
                {
                if(ListFieldID == 0) //altTextures
                    {
                    MODL->Textures.Unload();
                    return;
                    }

                if(ListIndex >= MODL->Textures.MODS.size())
                    return;

                switch(ListFieldID)
                    {
                    case 1: //name
                        delete []MODL->Textures.MODS[ListIndex]->name;
                        MODL->Textures.MODS[ListIndex]->name = NULL;
                        return;
                    case 2: //texture
                        MODL->Textures.MODS[ListIndex]->texture = defaultMODS.texture;
                        return;
                    case 3: //index
                        MODL->Textures.MODS[ListIndex]->index = defaultMODS.index;
                        return;
                    default:
                        return;
                    }
                }
            return;
        case 18: //modelFlags
            if(MODL.IsLoaded())
                MODL->MODD.Unload();
            return;
        case 19: //effect
            EITM.Unload();
            return;
        case 20: //imageSpace
            MNAM.Unload();
            return;
        case 21: //force
            DATA.value.force = defaultDATA.force;
            return;
        case 22: //damage
            DATA.value.damage = defaultDATA.damage;
            return;
        case 23: //radius
            DATA.value.radius = defaultDATA.radius;
            return;
        case 24: //light
            DATA.value.light = defaultDATA.light;
            return;
        case 25: //sound1
            DATA.value.sound1 = defaultDATA.sound1;
            return;
        case 26: //flags
            SetFlagMask(defaultDATA.flags);
            return;
        case 27: //ISRadius
            DATA.value.ISRadius = defaultDATA.ISRadius;
            return;
        case 28: //impactDataSet
            DATA.value.impactDataSet = defaultDATA.impactDataSet;
            return;
        case 29: //sound2
            DATA.value.sound2 = defaultDATA.sound2;
            return;
        case 30: //radLevel
            DATA.value.radLevel = defaultDATA.radLevel;
            return;
        case 31: //radTime
            DATA.value.radTime = defaultDATA.radTime;
            return;
        case 32: //radRadius
            DATA.value.radRadius = defaultDATA.radRadius;
            return;
        case 33: //soundLevel
            DATA.value.soundLevel = defaultDATA.soundLevel;
            return;
        case 34: //impact
            INAM.Unload();
            return;
        default:
            return;
        }
    }
Example #20
0
bool FACTRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 6: //relations
            if(ListFieldID == 0) //relationsSize
                {
                XNAM.resize(ArraySize);
                return false;
                }

            if(ListIndex >= XNAM.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //faction
                    XNAM.value[ListIndex]->faction = *(FORMID *)FieldValue;
                    return true;
                case 2: //mod
                    XNAM.value[ListIndex]->mod = *(SINT32 *)FieldValue;
                    break;
                default:
                    break;
                }
            break;
        case 7: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 8: //crimeGoldMultiplier
            CNAM.Load();
            *CNAM.value = *(FLOAT32 *)FieldValue;
            break;
        case 9: //ranks
            if(ListFieldID == 0) //ranksSize
                {
                RNAM.resize(ArraySize);
                return false;
                }

            if(ListIndex >= RNAM.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //rank
                    RNAM.value[ListIndex]->RNAM.value = *(SINT32 *)FieldValue;
                    break;
                case 2: //male
                    RNAM.value[ListIndex]->MNAM.Copy((STRING)FieldValue);
                    break;
                case 3: //female
                    RNAM.value[ListIndex]->FNAM.Copy((STRING)FieldValue);
                    break;
                case 4: //insigniaPath
                    RNAM.value[ListIndex]->INAM.Copy((STRING)FieldValue);
                    break;
                default:
                    break;
                }
            break;
        default:
            break;
        }
    return false;
    }
Example #21
0
bool WATRRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //texturePath
            TNAM.Copy((STRING)FieldValue);
            break;
        case 6: //opacity
            ANAM.value = *(UINT8 *)FieldValue;
            break;
        case 7: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 8: //materialPath
            MNAM.Copy((STRING)FieldValue);
            break;
        case 9: //sound
            SNAM.value = *(FORMID *)FieldValue;
            return true;
        case 10: //windVelocity
            DATA.Load();
            DATA->windVelocity = *(FLOAT32 *)FieldValue;
            break;
        case 11: //windDirection
            DATA.Load();
            DATA->windDirection = *(FLOAT32 *)FieldValue;
            break;
        case 12: //waveAmp
            DATA.Load();
            DATA->waveAmp = *(FLOAT32 *)FieldValue;
            break;
        case 13: //waveFreq
            DATA.Load();
            DATA->waveFreq = *(FLOAT32 *)FieldValue;
            break;
        case 14: //sunPower
            DATA.Load();
            DATA->sunPower = *(FLOAT32 *)FieldValue;
            break;
        case 15: //reflectAmt
            DATA.Load();
            DATA->reflectAmt = *(FLOAT32 *)FieldValue;
            break;
        case 16: //fresnelAmt
            DATA.Load();
            DATA->fresnelAmt = *(FLOAT32 *)FieldValue;
            break;
        case 17: //xSpeed
            DATA.Load();
            DATA->xSpeed = *(FLOAT32 *)FieldValue;
            break;
        case 18: //ySpeed
            DATA.Load();
            DATA->ySpeed = *(FLOAT32 *)FieldValue;
            break;
        case 19: //fogNear
            DATA.Load();
            DATA->fogNear = *(FLOAT32 *)FieldValue;
            break;
        case 20: //fogFar
            DATA.Load();
            DATA->fogFar = *(FLOAT32 *)FieldValue;
            break;
        case 21: //shallowRed
            DATA.Load();
            DATA->shallow.red = *(UINT8 *)FieldValue;
            break;
        case 22: //shallowGreen
            DATA.Load();
            DATA->shallow.green = *(UINT8 *)FieldValue;
            break;
        case 23: //shallowBlue
            DATA.Load();
            DATA->shallow.blue = *(UINT8 *)FieldValue;
            break;
        case 24: //unused1
            if(ArraySize != 1)
                break;
            DATA.Load();
            DATA->shallow.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 25: //deepRed
            DATA.Load();
            DATA->deep.red = *(UINT8 *)FieldValue;
            break;
        case 26: //deepGreen
            DATA.Load();
            DATA->deep.green = *(UINT8 *)FieldValue;
            break;
        case 27: //deepBlue
            DATA.Load();
            DATA->deep.blue = *(UINT8 *)FieldValue;
            break;
        case 28: //unused2
            if(ArraySize != 1)
                break;
            DATA.Load();
            DATA->deep.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 29: //reflRed
            DATA.Load();
            DATA->refl.red = *(UINT8 *)FieldValue;
            break;
        case 30: //reflGreen
            DATA.Load();
            DATA->refl.green = *(UINT8 *)FieldValue;
            break;
        case 31: //reflBlue
            DATA.Load();
            DATA->refl.blue = *(UINT8 *)FieldValue;
            break;
        case 32: //unused3
            if(ArraySize != 1)
                break;
            DATA.Load();
            DATA->refl.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 33: //blend
            DATA.Load();
            DATA->blend = *(UINT8 *)FieldValue;
            break;
        case 34: //unused4
            if(ArraySize != 3)
                break;
            DATA.Load();
            DATA->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            DATA->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            DATA->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 35: //rainForce
            DATA.Load();
            DATA->rainForce = *(FLOAT32 *)FieldValue;
            break;
        case 36: //rainVelocity
            DATA.Load();
            DATA->rainVelocity = *(FLOAT32 *)FieldValue;
            break;
        case 37: //rainFalloff
            DATA.Load();
            DATA->rainFalloff = *(FLOAT32 *)FieldValue;
            break;
        case 38: //rainDampner
            DATA.Load();
            DATA->rainDampner = *(FLOAT32 *)FieldValue;
            break;
        case 39: //rainSize
            DATA.Load();
            DATA->rainSize = *(FLOAT32 *)FieldValue;
            break;
        case 40: //dispForce
            DATA.Load();
            DATA->dispForce = *(FLOAT32 *)FieldValue;
            break;
        case 41: //dispVelocity
            DATA.Load();
            DATA->dispVelocity = *(FLOAT32 *)FieldValue;
            break;
        case 42: //dispFalloff
            DATA.Load();
            DATA->dispFalloff = *(FLOAT32 *)FieldValue;
            break;
        case 43: //dispDampner
            DATA.Load();
            DATA->dispDampner = *(FLOAT32 *)FieldValue;
            break;
        case 44: //dispSize
            DATA.Load();
            DATA->dispSize = *(FLOAT32 *)FieldValue;
            break;
        case 45: //damage
            DATA.Load();
            DATA->damage = *(UINT16 *)FieldValue;
            break;
        case 46: //dayWater
            GNAM.Load();
            GNAM->dayWater = *(FORMID *)FieldValue;
            return true;
        case 47: //nightWater
            GNAM.Load();
            GNAM->nightWater = *(FORMID *)FieldValue;
            return true;
        case 48: //underWater
            GNAM.Load();
            GNAM->underWater = *(FORMID *)FieldValue;
            return true;
        default:
            break;
        }
    return false;
    }
Example #22
0
bool BOOKRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //full
            FULL.Copy((char *)FieldValue);
            break;
        case 6: //modPath
            MODL.Load();
            MODL->MODL.Copy((char *)FieldValue);
            break;
        case 7: //modb
            MODL.Load();
            MODL->MODB.value = *(float *)FieldValue;
            break;
        case 8: //modt_p
            MODL.Load();
            MODL->MODT.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 9: //iconPath
            ICON.Copy((char *)FieldValue);
            break;
        case 10: //text
            DESC.Copy((char *)FieldValue);
            break;
        case 11: //script
            SCRI.value = *(FORMID *)FieldValue;
            return true;
        case 12: //enchantment
            ENAM.value = *(FORMID *)FieldValue;
            return true;
        case 13: //enchantPoints
            ANAM.value = *(uint16_t *)FieldValue;
            break;
        case 14: //flags
            SetFlagMask(*(uint8_t *)FieldValue);
            break;
        case 15: //teaches
            DATA.value.teaches = *(int8_t *)FieldValue;
            break;
        case 16: //value
            DATA.value.value = *(uint32_t *)FieldValue;
            break;
        case 17: //weight
            DATA.value.weight = *(float *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
Example #23
0
bool COLLRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
{
    switch(FieldID)
    {
    case 1: //flags1
        SetHeaderFlagMask(*(uint32_t *)FieldValue);
        break;
    case 3: //versionControl1
        if(ArraySize != 4)
            break;
        ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
        ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
        ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
        ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
        break;
    case 4: //eid
        EDID.Copy((char *)FieldValue);
        break;
    case 5: //formVersion
        formVersion = *(uint16_t *)FieldValue;
        break;
    case 6: //versionControl2
        if(ArraySize != 2)
            break;
        versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
        versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
        break;
    case 7: //description
        DESC.Copy((char *)FieldValue);
        break;
    case 8: //id
        BNAM.value = *(uint32_t *)FieldValue;
        break;
    case 9: //debugColor.red
        FNAM->red = *(uint8_t *)FieldValue;
        break;
    case 10: //debugColor.green
        FNAM->green = *(uint8_t *)FieldValue;
        break;
    case 11: //debucColor.blue
        FNAM->blue = *(uint8_t *)FieldValue;
        break;
    case 12: //debugColor.unkown
        FNAM->unk1 = *(uint8_t *)FieldValue;
        break;
    case 13: //flags
        SetFlagMask(*(uint32_t *)FieldValue);
        break;
    case 14: //name
        MNAM.Copy((char *)FieldValue);
        break;
    case 15: //collidesWith
        CNAM.value.resize(ArraySize);
        for (uint32_t i = 0; i < ArraySize; ++i)
            CNAM.value[i] = ((FORMIDARRAY)FieldValue)[i];
        return true;
    default:
        break;
    }
    return false;
}
Example #24
0
bool ALCHRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //versionControl1
            if(ArraySize != 4)
                break;
            ((UINT8ARRAY)&flagsUnk)[0] = ((UINT8ARRAY)FieldValue)[0];
            ((UINT8ARRAY)&flagsUnk)[1] = ((UINT8ARRAY)FieldValue)[1];
            ((UINT8ARRAY)&flagsUnk)[2] = ((UINT8ARRAY)FieldValue)[2];
            ((UINT8ARRAY)&flagsUnk)[3] = ((UINT8ARRAY)FieldValue)[3];
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //formVersion
            formVersion = *(UINT16 *)FieldValue;
            break;
        case 6: //versionControl2
            if(ArraySize != 2)
                break;
            versionControl2[0] = ((UINT8ARRAY)FieldValue)[0];
            versionControl2[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 7: //boundX1
            OBND.value.x1 = *(SINT16 *)FieldValue;
            break;
        case 8: //boundY1
            OBND.value.y1 = *(SINT16 *)FieldValue;
            break;
        case 9: //boundZ1
            OBND.value.z1 = *(SINT16 *)FieldValue;
            break;
        case 10: //boundX2
            OBND.value.x2 = *(SINT16 *)FieldValue;
            break;
        case 11: //boundY2
            OBND.value.y2 = *(SINT16 *)FieldValue;
            break;
        case 12: //boundZ2
            OBND.value.z2 = *(SINT16 *)FieldValue;
            break;
        case 13: //full
            FULL.Copy((STRING)FieldValue);
            break;
        case 14: //modPath
            MODL.Load();
            MODL->MODL.Copy((STRING)FieldValue);
            break;
        case 15: //modb
            MODL.Load();
            MODL->MODB.value = *(FLOAT32 *)FieldValue;
            break;
        case 16: //modt_p
            MODL.Load();
            MODL->MODT.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 17: //altTextures
            MODL.Load();
            if(ListFieldID == 0) //altTexturesSize
                {
                MODL->Textures.resize(ArraySize);
                return false;
                }

            if(ListIndex >= MODL->Textures.MODS.size())
                break;

            switch(ListFieldID)
                {
                case 1: //name
                    delete []MODL->Textures.MODS[ListIndex]->name;
                    MODL->Textures.MODS[ListIndex]->name = NULL;
                    if(FieldValue != NULL)
                        {
                        ArraySize = (UINT32)strlen((STRING)FieldValue) + 1;
                        MODL->Textures.MODS[ListIndex]->name = new char[ArraySize];
                        strcpy_s(MODL->Textures.MODS[ListIndex]->name, ArraySize, (STRING)FieldValue);
                        }
                    break;
                case 2: //texture
                    MODL->Textures.MODS[ListIndex]->texture = *(FORMID *)FieldValue;
                    return true;
                case 3: //index
                    MODL->Textures.MODS[ListIndex]->index = *(SINT32 *)FieldValue;
                    break;
                default:
                    break;
                }
            break;
        case 18: //modelFlags
            MODL.Load();
            MODL->SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 19: //iconPath
            ICON.Copy((STRING)FieldValue);
            break;
        case 20: //smallIconPath
            MICO.Copy((STRING)FieldValue);
            break;
        case 21: //script
            SCRI.value = *(FORMID *)FieldValue;
            return true;
        case 22: //equipmentType
            SetEquipmentType(*(SINT32 *)FieldValue);
            break;
        case 23: //weight
            DATA.value = *(FLOAT32 *)FieldValue;
            break;
        case 24: //value
            ENIT.value.value = *(SINT32 *)FieldValue;
            break;
        case 25: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 26: //unused1
            if(ArraySize != 3)
                break;
            ENIT.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            ENIT.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            ENIT.value.unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 27: //withdrawalEffect
            ENIT.value.withdrawalEffect = *(FORMID *)FieldValue;
            return true;
        case 28: //addictionChance
            ENIT.value.addictionChance = *(FLOAT32 *)FieldValue;
            break;
        case 29: //consumeSound
            ENIT.value.consumeSound = *(FORMID *)FieldValue;
            return true;
        case 30: //effects
            if(ListFieldID == 0) //effectsSize
                {
                Effects.resize(ArraySize);
                return false;
                }

            if(ListIndex >= Effects.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //effect
                    Effects.value[ListIndex]->EFID.value = *(FORMID *)FieldValue;
                    return true;
                case 2: //magnitude
                    Effects.value[ListIndex]->EFIT.value.magnitude = *(UINT32 *)FieldValue;
                    break;
                case 3: //area
                    Effects.value[ListIndex]->EFIT.value.area = *(UINT32 *)FieldValue;
                    break;
                case 4: //duration
                    Effects.value[ListIndex]->EFIT.value.duration = *(UINT32 *)FieldValue;
                    break;
                case 5: //rangeType
                    Effects.value[ListIndex]->SetRange(*(UINT32 *)FieldValue);
                    break;
                case 6: //actorValue
                    Effects.value[ListIndex]->EFIT.value.actorValue = *(SINT32 *)FieldValue;
                    break;
                case 7: //conditions
                    if(ListX2FieldID == 0) //conditionsSize
                        {
                        Effects.value[ListIndex]->CTDA.resize(ArraySize);
                        return false;
                        }

                    if(ListX2Index >= Effects.value[ListIndex]->CTDA.value.size())
                        break;

                    switch(ListX2FieldID)
                        {
                        case 1: //operType
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->operType = *(UINT8 *)FieldValue;
                            break;
                        case 2: //unused1
                            if(ArraySize != 3)
                                break;
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
                            break;
                        case 3: //compValue
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->compValue = *(FORMID_OR_FLOAT32 *)FieldValue;
                            return true;
                        case 4: //ifunc
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->ifunc = *(UINT32 *)FieldValue;
                            return true;
                        case 5: //param1
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->param1 = *(FORMID_OR_UINT32 *)FieldValue;
                            return true;
                        case 6: //param2
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->param2 = *(FORMID_OR_UINT32 *)FieldValue;
                            return true;
                        case 7: //runOnType
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->runOnType = *(UINT32 *)FieldValue;
                            return true;
                        case 8: //reference
                            Effects.value[ListIndex]->CTDA.value[ListX2Index]->reference = *(FORMID_OR_UINT32 *)FieldValue;
                            return true;
                        default:
                            break;
                        }
                    break;
                default:
                    break;
                }
            break;
        case 31: //destructableHealth
            Destructable.Load();
            Destructable->DEST.value.health = *(SINT32 *)FieldValue;
            break;
        case 32: //destructableCount
            Destructable.Load();
            Destructable->DEST.value.count = *(UINT8 *)FieldValue;
            break;
        case 33: //destructableFlags
            Destructable.Load();
            Destructable->SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 34: //destructableUnused1
            if(ArraySize != 2)
                break;
            Destructable.Load();
            Destructable->DEST.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            Destructable->DEST.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            break;
        case 35: //destructableStages
            Destructable.Load();
            if(ListFieldID == 0) //destructableStagesSize
                {
                Destructable->Stages.resize(ArraySize);
                return false;
                }

            if(ListIndex >= Destructable->Stages.value.size())
                break;

            switch(ListFieldID)
                {
                case 1: //health
                    Destructable->Stages.value[ListIndex]->DSTD.value.health = *(UINT8 *)FieldValue;
                    break;
                case 2: //index
                    Destructable->Stages.value[ListIndex]->DSTD.value.index = *(UINT8 *)FieldValue;
                    break;
                case 3: //stage
                    Destructable->Stages.value[ListIndex]->DSTD.value.stage = *(UINT8 *)FieldValue;
                    break;
                case 4: //flags
                    Destructable->Stages.value[ListIndex]->SetFlagMask(*(UINT8 *)FieldValue);
                    break;
                case 5: //dps
                    Destructable->Stages.value[ListIndex]->DSTD.value.dps = *(SINT32 *)FieldValue;
                    break;
                case 6: //explosion
                    Destructable->Stages.value[ListIndex]->DSTD.value.explosion = *(FORMID *)FieldValue;
                    return true;
                case 7: //debris
                    Destructable->Stages.value[ListIndex]->DSTD.value.debris = *(FORMID *)FieldValue;
                    return true;
                case 8: //debrisCount
                    Destructable->Stages.value[ListIndex]->DSTD.value.debrisCount = *(SINT32 *)FieldValue;
                    break;
                case 9: //modPath
                    Destructable->Stages.value[ListIndex]->DMDL.Copy((STRING)FieldValue);
                    break;
                case 10: //modt_p
                    Destructable->Stages.value[ListIndex]->DMDT.Copy((UINT8ARRAY)FieldValue, ArraySize);
                    break;
                default:
                    break;
                }
            break;
        case 36: //pickupSound
            YNAM.value = *(FORMID *)FieldValue;
            return true;
        case 37: //dropSound
            ZNAM.value = *(FORMID *)FieldValue;
            return true;
        default:
            break;
        }
    return false;
    }
Example #25
0
void PMISRecord::DeleteField(FIELD_IDENTIFIERS)
    {
    FNVSCHR defaultSCHR;

    GENVARS defaultVARS;
    GENSCR_ defaultSCR_;
    GENCLR defaultCLR;
    GENXDCR defaultXDCR;
    GENXAPR defaultXAPR;
    GENXESP defaultXESP;
    GENPOSDATA defaultDATA;
    GENXPWR defaultXPWR;
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(0);
            return;
        case 3: //versionControl1
            flagsUnk = 0;
            return;
        case 4: //eid
            EDID.Unload();
            return;
        case 5: //formVersion
            formVersion = 0;
            return;
        case 6: //versionControl2
            versionControl2[0] = 0;
            versionControl2[1] = 0;
            return;
        case 7: //base
            NAME.Unload();
            return;
        case 8: //encounterZone
            XEZN.Unload();
            return;
        case 9: //xrgd_p
            XRGD.Unload();
            return;
        case 10: //xrgb_p
            XRGB.Unload();
            return;
        case 11: //idleTime
            if(Patrol.IsLoaded())
                Patrol->XPRD.Unload();
            return;
        case 12: //idle
            if(Patrol.IsLoaded())
                Patrol->INAM.Unload();
            return;
        case 13: //unused1
            if(Patrol.IsLoaded())
                {
                Patrol->SCHR.value.unused1[0] = defaultSCHR.unused1[0];
                Patrol->SCHR.value.unused1[1] = defaultSCHR.unused1[1];
                Patrol->SCHR.value.unused1[2] = defaultSCHR.unused1[2];
                Patrol->SCHR.value.unused1[3] = defaultSCHR.unused1[3];
                }
            return;
        case 14: //numRefs
            if(Patrol.IsLoaded())
                Patrol->SCHR.value.numRefs = defaultSCHR.numRefs;
            return;
        case 15: //compiledSize
            if(Patrol.IsLoaded())
                Patrol->SCHR.value.compiledSize = defaultSCHR.compiledSize;
            return;
        case 16: //lastIndex
            if(Patrol.IsLoaded())
                Patrol->SCHR.value.lastIndex = defaultSCHR.lastIndex;
            return;
        case 17: //scriptType
            if(Patrol.IsLoaded())
                Patrol->SetType(defaultSCHR.scriptType);
            return;
        case 18: //scriptFlags
            if(Patrol.IsLoaded())
                Patrol->SetScriptFlagMask(defaultSCHR.flags);
            return;
        case 19: //compiled_p
            if(Patrol.IsLoaded())
                Patrol->SCDA.Unload();
            return;
        case 20: //scriptText
            if(Patrol.IsLoaded())
                Patrol->SCTX.Unload();
            return;
        case 21: //vars
            if(!Patrol.IsLoaded())
                return;

            if(ListFieldID == 0) //varsSize
                {
                Patrol->VARS.Unload();
                return;
                }

            if(ListIndex >= Patrol->VARS.value.size())
                return;

            switch(ListFieldID)
                {
                case 1: //index
                    Patrol->VARS.value[ListIndex]->SLSD.value.index = defaultVARS.SLSD.value.index;
                    return;
                case 2: //unused1
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[0] = defaultVARS.SLSD.value.unused1[0];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[1] = defaultVARS.SLSD.value.unused1[1];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[2] = defaultVARS.SLSD.value.unused1[2];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[3] = defaultVARS.SLSD.value.unused1[3];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[4] = defaultVARS.SLSD.value.unused1[4];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[5] = defaultVARS.SLSD.value.unused1[5];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[6] = defaultVARS.SLSD.value.unused1[6];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[7] = defaultVARS.SLSD.value.unused1[7];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[8] = defaultVARS.SLSD.value.unused1[8];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[9] = defaultVARS.SLSD.value.unused1[9];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[10] = defaultVARS.SLSD.value.unused1[10];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused1[11] = defaultVARS.SLSD.value.unused1[11];
                    return;
                case 3: //flags
                    Patrol->VARS.value[ListIndex]->SetFlagMask(defaultVARS.SLSD.value.flags);
                    return;
                case 4: //unused2
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[0] = defaultVARS.SLSD.value.unused2[0];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[1] = defaultVARS.SLSD.value.unused2[1];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[2] = defaultVARS.SLSD.value.unused2[2];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[3] = defaultVARS.SLSD.value.unused2[3];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[4] = defaultVARS.SLSD.value.unused2[4];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[5] = defaultVARS.SLSD.value.unused2[5];
                    Patrol->VARS.value[ListIndex]->SLSD.value.unused2[6] = defaultVARS.SLSD.value.unused2[6];
                    return;
                case 5: //name
                    Patrol->VARS.value[ListIndex]->SCVR.Unload();
                    return;
                default:
                    return;
                }
            return;
        case 22: //references
            if(!Patrol.IsLoaded())
                return;

            if(ListFieldID == 0) //referencesSize
                {
                Patrol->SCR_.Unload();
                return;
                }

            if(ListIndex >= Patrol->SCR_.value.size())
                return;

            switch(ListFieldID)
                {
                case 1: //reference
                    Patrol->SCR_.value[ListIndex]->reference = defaultSCR_.reference;
                    Patrol->SCR_.value[ListIndex]->isSCRO = defaultSCR_.isSCRO;
                    return;
                default:
                    return;
                }
            return;
        case 23: //topic
            if(Patrol.IsLoaded())
                Patrol->TNAM.Unload();
            return;
        case 24: //owner
            if(Ownership.IsLoaded())
                Ownership->XOWN.Unload();
            return;
        case 25: //rank
            if(Ownership.IsLoaded())
                Ownership->XRNK.Unload();
            return;
        case 26: //count
            XCNT.Unload();
            return;
        case 27: //radius
            XRDS.Unload();
            return;
        case 28: //health
            XHLP.Unload();
            return;
        case 29: //decals
            if(ListFieldID == 0) //decalsSize
                {
                XDCR.Unload();
                return;
                }

            if(ListIndex >= XDCR.value.size())
                return;

            switch(ListFieldID)
                {
                case 1: //reference
                    XDCR.value[ListIndex]->reference = defaultXDCR.reference;
                    return;
                case 2: //unknown1
                    XDCR.value[ListIndex]->unknown1[0] = defaultXDCR.unknown1[0];
                    XDCR.value[ListIndex]->unknown1[1] = defaultXDCR.unknown1[1];
                    XDCR.value[ListIndex]->unknown1[2] = defaultXDCR.unknown1[2];
                    XDCR.value[ListIndex]->unknown1[3] = defaultXDCR.unknown1[3];
                    XDCR.value[ListIndex]->unknown1[4] = defaultXDCR.unknown1[4];
                    XDCR.value[ListIndex]->unknown1[5] = defaultXDCR.unknown1[5];
                    XDCR.value[ListIndex]->unknown1[6] = defaultXDCR.unknown1[6];
                    XDCR.value[ListIndex]->unknown1[7] = defaultXDCR.unknown1[7];
                    XDCR.value[ListIndex]->unknown1[8] = defaultXDCR.unknown1[8];
                    XDCR.value[ListIndex]->unknown1[9] = defaultXDCR.unknown1[9];
                    XDCR.value[ListIndex]->unknown1[10] = defaultXDCR.unknown1[10];
                    XDCR.value[ListIndex]->unknown1[11] = defaultXDCR.unknown1[11];
                    XDCR.value[ListIndex]->unknown1[12] = defaultXDCR.unknown1[12];
                    XDCR.value[ListIndex]->unknown1[13] = defaultXDCR.unknown1[13];
                    XDCR.value[ListIndex]->unknown1[14] = defaultXDCR.unknown1[14];
                    XDCR.value[ListIndex]->unknown1[15] = defaultXDCR.unknown1[15];
                    XDCR.value[ListIndex]->unknown1[16] = defaultXDCR.unknown1[16];
                    XDCR.value[ListIndex]->unknown1[17] = defaultXDCR.unknown1[17];
                    XDCR.value[ListIndex]->unknown1[18] = defaultXDCR.unknown1[18];
                    XDCR.value[ListIndex]->unknown1[19] = defaultXDCR.unknown1[19];
                    XDCR.value[ListIndex]->unknown1[20] = defaultXDCR.unknown1[20];
                    XDCR.value[ListIndex]->unknown1[21] = defaultXDCR.unknown1[21];
                    XDCR.value[ListIndex]->unknown1[22] = defaultXDCR.unknown1[22];
                    XDCR.value[ListIndex]->unknown1[23] = defaultXDCR.unknown1[23];
                    return;
                default:
                    return;
                }
            return;
        case 30: //linkedReference
            XLKR.Unload();
            return;
        case 31: //startRed
            if(XCLP.IsLoaded())
                XCLP->start.red = defaultCLR.red;
            return;
        case 32: //startGreen
            if(XCLP.IsLoaded())
                XCLP->start.green = defaultCLR.green;
            return;
        case 33: //startBlue
            if(XCLP.IsLoaded())
                XCLP->start.blue = defaultCLR.blue;
            return;
        case 34: //unused2
            if(XCLP.IsLoaded())
                XCLP->start.unused1 = defaultCLR.unused1;
            return;
        case 35: //endRed
            if(XCLP.IsLoaded())
                XCLP->end.red = defaultCLR.red;
            return;
        case 36: //endGreen
            if(XCLP.IsLoaded())
                XCLP->end.green = defaultCLR.green;
            return;
        case 37: //endBlue
            if(XCLP.IsLoaded())
                XCLP->end.blue = defaultCLR.blue;
            return;
        case 38: //unused3
            if(XCLP.IsLoaded())
                XCLP->end.unused1 = defaultCLR.unused1;
            return;
        case 39: //activateParentFlags
            if(ActivateParents.IsLoaded())
                ActivateParents->XAPD.Unload();
            return;
        case 40: //activateParentRefs
            if(!ActivateParents.IsLoaded())
                return;

            if(ListFieldID == 0) //activateParentRefsSize
                {
                ActivateParents->XAPR.Unload();
                return;
                }

            if(ListIndex >= ActivateParents->XAPR.value.size())
                return;

            switch(ListFieldID)
                {
                case 1: //reference
                    ActivateParents->XAPR.value[ListIndex]->reference = defaultXAPR.reference;
                    return;
                case 2: //delay
                    ActivateParents->XAPR.value[ListIndex]->delay = defaultXAPR.delay;
                    return;
                default:
                    return;
                }
            return;
        case 41: //prompt
            XATO.Unload();
            return;
        case 42: //parent
            if(XESP.IsLoaded())
                XESP->parent = defaultXESP.parent;
            return;
        case 43: //parentFlags
            if(XESP.IsLoaded())
                SetFlagMask(defaultXESP.flags);
            return;
        case 44: //unused4
            if(XESP.IsLoaded())
                {
                XESP->unused1[0] = defaultXESP.unused1[0];
                XESP->unused1[1] = defaultXESP.unused1[1];
                XESP->unused1[2] = defaultXESP.unused1[2];
                }
            return;
        case 45: //emittance
            XEMI.Unload();
            return;
        case 46: //boundRef
            XMBR.Unload();
            return;
        case 47: //reflrefrs
            if(ListFieldID == 0) //reflrefrsSize
                {
                XPWR.Unload();
                return;
                }

            if(ListIndex >= XPWR.value.size())
                return;

            switch(ListFieldID)
                {
                case 1: //reference
                    XPWR.value[ListIndex]->reference = defaultXPWR.reference;
                    return;
                case 2: //type
                    XPWR.value[ListIndex]->type = defaultXPWR.type;
                    return;
                default:
                    return;
                }
            return;
        case 48: //ignoredBySandbox
            XIBS.Unload();
            return;
        case 49: //scale
            XSCL.Unload();
            return;
        case 50: //posX
            DATA.value.posX = defaultDATA.posX;
            return;
        case 51: //posY
            DATA.value.posY = defaultDATA.posY;
            return;
        case 52: //posZ
            DATA.value.posZ = defaultDATA.posZ;
            return;
        case 53: //rotX
            DATA.value.rotX = defaultDATA.rotX;
            return;
        case 54: //rotY
            DATA.value.rotY = defaultDATA.rotY;
            return;
        case 55: //rotZ
            DATA.value.rotZ = defaultDATA.rotZ;
            return;
        default:
            return;
        }
    }
Example #26
0
bool EFSHRecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, UINT32 ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(UINT32 *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(UINT32 *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((STRING)FieldValue);
            break;
        case 5: //fillTexturePath
            ICON.Copy((STRING)FieldValue);
            break;
        case 6: //particleTexturePath
            ICO2.Copy((STRING)FieldValue);
            break;
        case 7: //flags
            SetFlagMask(*(UINT8 *)FieldValue);
            break;
        case 8: //unused1
            if(ArraySize != 3)
                break;
            DATA.value.unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            DATA.value.unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            DATA.value.unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 9: //memSBlend
            DATA.value.memSBlend = *(UINT32 *)FieldValue;
            break;
        case 10: //memBlendOp
            DATA.value.memBlendOp = *(UINT32 *)FieldValue;
            break;
        case 11: //memZFunc
            DATA.value.memZFunc = *(UINT32 *)FieldValue;
            break;
        case 12: //fillRed
            DATA.value.fill.red = *(UINT8 *)FieldValue;
            break;
        case 13: //fillGreen
            DATA.value.fill.green = *(UINT8 *)FieldValue;
            break;
        case 14: //fillBlue
            DATA.value.fill.blue = *(UINT8 *)FieldValue;
            break;
        case 15: //unused2
            if(ArraySize != 1)
                break;
            DATA.value.fill.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 16: //fillAIn
            DATA.value.fillAIn = *(FLOAT32 *)FieldValue;
            break;
        case 17: //fillAFull
            DATA.value.fillAFull = *(FLOAT32 *)FieldValue;
            break;
        case 18: //fillAOut
            DATA.value.fillAOut = *(FLOAT32 *)FieldValue;
            break;
        case 19: //fillAPRatio
            DATA.value.fillAPRatio = *(FLOAT32 *)FieldValue;
            break;
        case 20: //fillAAmp
            DATA.value.fillAAmp = *(FLOAT32 *)FieldValue;
            break;
        case 21: //fillAFreq
            DATA.value.fillAFreq = *(FLOAT32 *)FieldValue;
            break;
        case 22: //fillAnimSpdU
            DATA.value.fillAnimSpdU = *(FLOAT32 *)FieldValue;
            break;
        case 23: //fillAnimSpdV
            DATA.value.fillAnimSpdV = *(FLOAT32 *)FieldValue;
            break;
        case 24: //edgeOff
            DATA.value.edgeOff = *(FLOAT32 *)FieldValue;
            break;
        case 25: //edgeRed
            DATA.value.edge.red = *(UINT8 *)FieldValue;
            break;
        case 26: //edgeGreen
            DATA.value.edge.green = *(UINT8 *)FieldValue;
            break;
        case 27: //edgeBlue
            DATA.value.edge.blue = *(UINT8 *)FieldValue;
            break;
        case 28: //unused3
            if(ArraySize != 1)
                break;
            DATA.value.edge.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 29: //edgeAIn
            DATA.value.edgeAIn = *(FLOAT32 *)FieldValue;
            break;
        case 30: //edgeAFull
            DATA.value.edgeAFull = *(FLOAT32 *)FieldValue;
            break;
        case 31: //edgeAOut
            DATA.value.edgeAOut = *(FLOAT32 *)FieldValue;
            break;
        case 32: //edgeAPRatio
            DATA.value.edgeAPRatio = *(FLOAT32 *)FieldValue;
            break;
        case 33: //edgeAAmp
            DATA.value.edgeAAmp = *(FLOAT32 *)FieldValue;
            break;
        case 34: //edgeAFreq
            DATA.value.edgeAFreq = *(FLOAT32 *)FieldValue;
            break;
        case 35: //fillAFRatio
            DATA.value.fillAFRatio = *(FLOAT32 *)FieldValue;
            break;
        case 36: //edgeAFRatio
            DATA.value.edgeAFRatio = *(FLOAT32 *)FieldValue;
            break;
        case 37: //memDBlend
            DATA.value.memDBlend = *(UINT8 *)FieldValue;
            break;
        case 38: //partSBlend
            DATA.value.partSBlend = *(UINT8 *)FieldValue;
            break;
        case 39: //partBlendOp
            DATA.value.partBlendOp = *(UINT8 *)FieldValue;
            break;
        case 40: //partZFunc
            DATA.value.partZFunc = *(UINT8 *)FieldValue;
            break;
        case 41: //partDBlend
            DATA.value.partDBlend = *(UINT8 *)FieldValue;
            break;
        case 42: //partBUp
            DATA.value.partBUp = *(FLOAT32 *)FieldValue;
            break;
        case 43: //partBFull
            DATA.value.partBFull = *(FLOAT32 *)FieldValue;
            break;
        case 44: //partBDown
            DATA.value.partBDown = *(FLOAT32 *)FieldValue;
            break;
        case 45: //partBFRatio
            DATA.value.partBFRatio = *(FLOAT32 *)FieldValue;
            break;
        case 46: //partBPRatio
            DATA.value.partBPRatio = *(FLOAT32 *)FieldValue;
            break;
        case 47: //partLTime
            DATA.value.partLTime = *(FLOAT32 *)FieldValue;
            break;
        case 48: //partLDelta
            DATA.value.partLDelta = *(FLOAT32 *)FieldValue;
            break;
        case 49: //partNSpd
            DATA.value.partNSpd = *(FLOAT32 *)FieldValue;
            break;
        case 50: //partNAcc
            DATA.value.partNAcc = *(FLOAT32 *)FieldValue;
            break;
        case 51: //partVel1
            DATA.value.partVel1 = *(FLOAT32 *)FieldValue;
            break;
        case 52: //partVel2
            DATA.value.partVel2 = *(FLOAT32 *)FieldValue;
            break;
        case 53: //partVel3
            DATA.value.partVel3 = *(FLOAT32 *)FieldValue;
            break;
        case 54: //partAcc1
            DATA.value.partAcc1 = *(FLOAT32 *)FieldValue;
            break;
        case 55: //partAcc2
            DATA.value.partAcc2 = *(FLOAT32 *)FieldValue;
            break;
        case 56: //partAcc3
            DATA.value.partAcc3 = *(FLOAT32 *)FieldValue;
            break;
        case 57: //partKey1
            DATA.value.partKey1 = *(FLOAT32 *)FieldValue;
            break;
        case 58: //partKey2
            DATA.value.partKey2 = *(FLOAT32 *)FieldValue;
            break;
        case 59: //partKey1Time
            DATA.value.partKey1Time = *(FLOAT32 *)FieldValue;
            break;
        case 60: //partKey2Time
            DATA.value.partKey2Time = *(FLOAT32 *)FieldValue;
            break;
        case 61: //key1Red
            DATA.value.key1.red = *(UINT8 *)FieldValue;
            break;
        case 62: //key1Green
            DATA.value.key1.green = *(UINT8 *)FieldValue;
            break;
        case 63: //key1Blue
            DATA.value.key1.blue = *(UINT8 *)FieldValue;
            break;
        case 64: //unused4
            if(ArraySize != 1)
                break;
            DATA.value.key1.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 65: //key2Red
            DATA.value.key2.red = *(UINT8 *)FieldValue;
            break;
        case 66: //key2Green
            DATA.value.key2.green = *(UINT8 *)FieldValue;
            break;
        case 67: //key2Blue
            DATA.value.key2.blue = *(UINT8 *)FieldValue;
            break;
        case 68: //unused5
            if(ArraySize != 1)
                break;
            DATA.value.key2.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 69: //key3Red
            DATA.value.key3.red = *(UINT8 *)FieldValue;
            break;
        case 70: //key3Green
            DATA.value.key3.green = *(UINT8 *)FieldValue;
            break;
        case 71: //key3Blue
            DATA.value.key3.blue = *(UINT8 *)FieldValue;
            break;
        case 72: //unused6
            if(ArraySize != 1)
                break;
            DATA.value.key3.unused1 = ((UINT8ARRAY)FieldValue)[0];
            break;
        case 73: //key1A
            DATA.value.key1A = *(FLOAT32 *)FieldValue;
            break;
        case 74: //key2A
            DATA.value.key2A = *(FLOAT32 *)FieldValue;
            break;
        case 75: //key3A
            DATA.value.key3A = *(FLOAT32 *)FieldValue;
            break;
        case 76: //key1Time
            DATA.value.key1Time = *(FLOAT32 *)FieldValue;
            break;
        case 77: //key2Time
            DATA.value.key2Time = *(FLOAT32 *)FieldValue;
            break;
        case 78: //key3Time
            DATA.value.key3Time = *(FLOAT32 *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }
Example #27
0
void PROJRecord::DeleteField(FIELD_IDENTIFIERS)
    {
    GENOBND defaultOBND;
    FNVMODS defaultMODS;
    GENDEST defaultDEST;
    DESTDSTD defaultDSTD;
    PROJDATA defaultDATA;
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(0);
            return;
        case 3: //versionControl1
            flagsUnk = 0;
            return;
        case 4: //eid
            EDID.Unload();
            return;
        case 5: //formVersion
            formVersion = 0;
            return;
        case 6: //versionControl2
            versionControl2[0] = 0;
            versionControl2[1] = 0;
            return;
        case 7: //boundX1
            OBND.value.x1 = defaultOBND.x1;
            return;
        case 8: //boundY1
            OBND.value.y1 = defaultOBND.y1;
            return;
        case 9: //boundZ1
            OBND.value.z1 = defaultOBND.z1;
            return;
        case 10: //boundX2
            OBND.value.x2 = defaultOBND.x2;
            return;
        case 11: //boundY2
            OBND.value.y2 = defaultOBND.y2;
            return;
        case 12: //boundZ2
            OBND.value.z2 = defaultOBND.z2;
            return;
        case 13: //full
            FULL.Unload();
            return;
        case 14: //modPath
            if(MODL.IsLoaded())
                MODL->MODL.Unload();
            return;
        case 15: //modb
            if(MODL.IsLoaded())
                MODL->MODB.Unload();
            return;
        case 16: //modt_p
            if(MODL.IsLoaded())
                MODL->MODT.Unload();
            return;
        case 17: //altTextures
            if(MODL.IsLoaded())
                {
                if(ListFieldID == 0) //altTextures
                    {
                    MODL->Textures.Unload();
                    return;
                    }

                if(ListIndex >= MODL->Textures.MODS.size())
                    return;

                switch(ListFieldID)
                    {
                    case 1: //name
                        delete []MODL->Textures.MODS[ListIndex]->name;
                        MODL->Textures.MODS[ListIndex]->name = NULL;
                        return;
                    case 2: //texture
                        MODL->Textures.MODS[ListIndex]->texture = defaultMODS.texture;
                        return;
                    case 3: //index
                        MODL->Textures.MODS[ListIndex]->index = defaultMODS.index;
                        return;
                    default:
                        return;
                    }
                }
            return;
        case 18: //modelFlags
            if(MODL.IsLoaded())
                MODL->MODD.Unload();
            return;
        case 19: //destructableHealth
            if(Destructable.IsLoaded())
                Destructable->DEST.value.health = defaultDEST.health;
            return;
        case 20: //destructableCount
            if(Destructable.IsLoaded())
                Destructable->DEST.value.count = defaultDEST.count;
            return;
        case 21: //destructableFlags
            if(Destructable.IsLoaded())
                Destructable->SetFlagMask(defaultDEST.flags);
            return;
        case 22: //destructableUnused1
            if(Destructable.IsLoaded())
                {
                Destructable->DEST.value.unused1[0] = defaultDSTD.health;
                }
            return;
        case 23: //destructableStages
            if(Destructable.IsLoaded())
                {
                if(ListFieldID == 0) //destructableStages
                    {
                    Destructable->Stages.Unload();
                    return;
                    }

                if(ListIndex >= Destructable->Stages.value.size())
                    return;

                switch(ListFieldID)
                    {
                    case 1: //health
                        Destructable->Stages.value[ListIndex]->DSTD.value.health = defaultDSTD.health;
                        return;
                    case 2: //index
                        Destructable->Stages.value[ListIndex]->DSTD.value.index = defaultDSTD.index;
                        return;
                    case 3: //stage
                        Destructable->Stages.value[ListIndex]->DSTD.value.stage = defaultDSTD.stage;
                        return;
                    case 4: //flags
                        Destructable->Stages.value[ListIndex]->SetFlagMask(defaultDSTD.flags);
                        return;
                    case 5: //dps
                        Destructable->Stages.value[ListIndex]->DSTD.value.dps = defaultDSTD.dps;
                        return;
                    case 6: //explosion
                        Destructable->Stages.value[ListIndex]->DSTD.value.explosion = defaultDSTD.explosion;
                        return;
                    case 7: //debris
                        Destructable->Stages.value[ListIndex]->DSTD.value.debris = defaultDSTD.debris;
                        return;
                    case 8: //debrisCount
                        Destructable->Stages.value[ListIndex]->DSTD.value.debrisCount = defaultDSTD.debrisCount;
                        return;
                    case 9: //modPath
                        Destructable->Stages.value[ListIndex]->DMDL.Unload();
                        return;
                    case 10: //modt_p
                        Destructable->Stages.value[ListIndex]->DMDT.Unload();
                        return;
                    default:
                        return;
                    }
                }
            return;
        case 24: //flags
            SetFlagMask(defaultDATA.flags);
            return;
        case 25: //projType
            SetType(defaultDATA.projType);
            return;
        case 26: //gravity
            DATA.value.gravity = defaultDATA.gravity;
            return;
        case 27: //speed
            DATA.value.speed = defaultDATA.speed;
            return;
        case 28: //range
            DATA.value.range = defaultDATA.range;
            return;
        case 29: //light
            DATA.value.light = defaultDATA.light;
            return;
        case 30: //flash
            DATA.value.flash = defaultDATA.flash;
            return;
        case 31: //tracerChance
            DATA.value.tracerChance = defaultDATA.tracerChance;
            return;
        case 32: //altExplProximityTrigger
            DATA.value.altExplProximityTrigger = defaultDATA.altExplProximityTrigger;
            return;
        case 33: //altExplProximityTimer
            DATA.value.altExplProximityTimer = defaultDATA.altExplProximityTimer;
            return;
        case 34: //explosion
            DATA.value.explosion = defaultDATA.explosion;
            return;
        case 35: //sound
            DATA.value.sound = defaultDATA.sound;
            return;
        case 36: //flashDuration
            DATA.value.flashDuration = defaultDATA.flashDuration;
            return;
        case 37: //fadeDuration
            DATA.value.fadeDuration = defaultDATA.fadeDuration;
            return;
        case 38: //impactForce
            DATA.value.impactForce = defaultDATA.impactForce;
            return;
        case 39: //soundCountdown
            DATA.value.soundCountdown = defaultDATA.soundCountdown;
            return;
        case 40: //soundDisable
            DATA.value.soundDisable = defaultDATA.soundDisable;
            return;
        case 41: //defaultWeaponSource
            DATA.value.defaultWeaponSource = defaultDATA.defaultWeaponSource;
            return;
        case 42: //rotX
            DATA.value.rotX = defaultDATA.rotX;
            return;
        case 43: //rotY
            DATA.value.rotY = defaultDATA.rotY;
            return;
        case 44: //rotZ
            DATA.value.rotZ = defaultDATA.rotZ;
            return;
        case 45: //bouncyMult
            DATA.value.bouncyMult = defaultDATA.bouncyMult;
            return;
        case 46: //modelPath
            NAM1.Unload();
            return;
        case 47: //nam2_p
            NAM2.Unload();
            return;
        case 48: //soundLevel
            VNAM.Unload();
            return;
        default:
            return;
        }
    }
Example #28
0
bool ACRERecord::SetField(FIELD_IDENTIFIERS, void *FieldValue, uint32_t ArraySize)
    {
    switch(FieldID)
        {
        case 1: //flags1
            SetHeaderFlagMask(*(uint32_t *)FieldValue);
            break;
        case 3: //flags2
            SetHeaderUnknownFlagMask(*(uint32_t *)FieldValue);
            break;
        case 4: //eid
            EDID.Copy((char *)FieldValue);
            break;
        case 5: //base
            NAME.value = *(FORMID *)FieldValue;
            return true;
        case 6: //owner
            Ownership.Load();
            Ownership->XOWN.value = *(FORMID *)FieldValue;
            return true;
        case 7: //rank
            Ownership.Load();
            Ownership->XRNK.Load();
            *Ownership->XRNK.value = *(int32_t *)FieldValue;
            break;
        case 8: //globalVariable
            Ownership.Load();
            Ownership->XGLB.value = *(FORMID *)FieldValue;
            return true;
        case 9: //lod1
            XLOD.Load();
            XLOD->lod1 = *(float *)FieldValue;
            break;
        case 10: //lod2
            XLOD.Load();
            XLOD->lod2 = *(float *)FieldValue;
            break;
        case 11: //lod3
            XLOD.Load();
            XLOD->lod3 = *(float *)FieldValue;
            break;
        case 12: //parent
            XESP.Load();
            XESP->parent = *(FORMID *)FieldValue;
            return true;
        case 13: //parentFlags
            SetFlagMask(*(uint8_t *)FieldValue);
            break;
        case 14: //unused1
            if(ArraySize != 3)
                break;
            XESP.Load();
            XESP->unused1[0] = ((UINT8ARRAY)FieldValue)[0];
            XESP->unused1[1] = ((UINT8ARRAY)FieldValue)[1];
            XESP->unused1[2] = ((UINT8ARRAY)FieldValue)[2];
            break;
        case 15: //xrgd_p
            XRGD.Copy((UINT8ARRAY)FieldValue, ArraySize);
            break;
        case 16: //scale
            XSCL.Load();
            XSCL.value = *(float *)FieldValue;
            break;
        case 17: //posX
            DATA.value.posX = *(float *)FieldValue;
            break;
        case 18: //posY
            DATA.value.posY = *(float *)FieldValue;
            break;
        case 19: //posZ
            DATA.value.posZ = *(float *)FieldValue;
            break;
        case 20: //rotX
            DATA.value.rotX = *(float *)FieldValue;
            break;
        case 21: //rotY
            DATA.value.rotY = *(float *)FieldValue;
            break;
        case 22: //rotZ
            DATA.value.rotZ = *(float *)FieldValue;
            break;
        default:
            break;
        }
    return false;
    }