Skip to content

Commit 25fac29

Browse files
committed
Normalized records with 306
1 parent 9ce308f commit 25fac29

1 file changed

Lines changed: 52 additions & 21 deletions

File tree

Mopy/bash/bosh.py

Lines changed: 52 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2195,7 +2195,7 @@ class MreAchr(MelRecord):
21952195
MelFid('TNAM','topic'),
21962196
),
21972197
MelStruct('XLCM','i','levelModifier'),
2198-
MelFid('XMRC','merchantContainer'),
2198+
MelFid('XMRC','merchantContainer',),
21992199
MelStruct('XCNT','i','count'),
22002200
MelStruct('XRDS','f','radius',),
22012201
MelStruct('XHLP','f','health',),
@@ -2346,7 +2346,8 @@ class MreAmmo(MelRecord):
23462346
MelDestructible(),
23472347
MelFid('YNAM','pickupSound'),
23482348
MelFid('ZNAM','dropSound'),
2349-
MelStruct('DATA','fB3siB','speed',(_flags,'flags',0L),('unused1',null3),'value','clipRounds'),
2349+
MelStruct('DATA','fB3siB','speed',(_flags,'flags',0L),('ammoData1',null3),
2350+
'value','clipRounds'),
23502351
MelString('ONAM','shortName'),
23512352
)
23522353
__slots__ = MelRecord.__slots__ + melSet.getSlotsUsed()
@@ -2407,7 +2408,7 @@ class MreArma(MelRecord):
24072408
#9:Hand Wear,10:Chems,11:Stimpack,12:Food,13:Alcohol
24082409
MelStruct('ETYP','i',('etype',-1)),
24092410
MelStruct('DATA','IIf','value','health','weight'),
2410-
MelStruct('DNAM','HH','ar','flags'),
2411+
MelStruct('DNAM','hH','ar','flags'),
24112412
)
24122413
__slots__ = MelRecord.__slots__ + melSet.getSlotsUsed()
24132414

@@ -2429,7 +2430,8 @@ class MreArmo(MelRecord):
24292430
MelString('FULL','full'),
24302431
MelFid('SCRI','script'),
24312432
MelFid('EITM','objectEffect'),
2432-
MelStruct('BMDT','=IB3s',(_flags,'bipedFlags',0L),(_generalFlags,'generalFlags',0L),'unused',),
2433+
MelStruct('BMDT','=IB3s',(_flags,'bipedFlags',0L),
2434+
(_generalFlags,'generalFlags',0L),'armoBMDT1',),
24332435
MelModel('maleBody'),
24342436
MelModel('maleWorld',2),
24352437
MelString('ICON','maleIconPath'),
@@ -2512,10 +2514,28 @@ class MreBptd(MelRecord):
25122514
classType = 'BPTD'
25132515
_flags = Flags(0L,Flags.getNames('severable','ikData','ikBipedData',
25142516
'explodable','ikIsHead','ikHeadtracking','toHitChanceAbsolute'))
2517+
class MelBptdGroups(MelGroups):
2518+
def loadData(self,record,ins,type,size,readId):
2519+
"""Reads data from ins into record attribute."""
2520+
if type == self.type0:
2521+
target = self.getDefault()
2522+
record.__getattribute__(self.attr).append(target)
2523+
else:
2524+
targets = record.__getattribute__(self.attr)
2525+
if targets:
2526+
target = targets[-1]
2527+
elif type == 'BPNN': # for RadScorpionBodyPart
2528+
target = self.getDefault()
2529+
record.__getattribute__(self.attr).append(target)
2530+
slots = []
2531+
for element in self.elements:
2532+
slots.extend(element.getSlotsUsed())
2533+
target.__slots__ = slots
2534+
self.loaders[type].loadData(target,ins,type,size,readId)
25152535
melSet = MelSet(
25162536
MelString('EDID','eid'),
25172537
MelModel(),
2518-
MelGroups('bodyParts',
2538+
MelBptdGroups('bodyParts',
25192539
MelString('BPTN','partName'),
25202540
MelString('BPNN','nodeName'),
25212541
MelString('BPNT','vatsTarget'),
@@ -2733,7 +2753,8 @@ class MreClmt(MelRecord):
27332753
MelString('FNAM','sunPath'),
27342754
MelString('GNAM','glarePath'),
27352755
MelModel(),
2736-
MelStruct('TNAM','6B','riseBegin','riseEnd','setBegin','setEnd','volatility','phaseLength'),
2756+
MelStruct('TNAM','6B','riseBegin','riseEnd','setBegin','setEnd',
2757+
'volatility','phaseLength',),
27372758
)
27382759
__slots__ = MelRecord.__slots__ + melSet.getSlotsUsed()
27392760

@@ -2923,8 +2944,9 @@ class MreCrea(MreActor):
29232944
MelFids('PKID','aiPackages'),
29242945
MelStrings('KFFZ','animations'),
29252946
MelStruct('DATA','=4Bh2sh7B','type','combatSkill','magicSkill',
2926-
'stealthSkill','health','unused2','damage','strength','perception',
2927-
'endurance','charisma','intelligence','agility','luck'),
2947+
'stealthSkill','health',('unused2',null2),'damage','strength',
2948+
'perception','endurance','charisma','intelligence','agility',
2949+
'luck'),
29282950
MelStruct('RNAM','B','attackReach'),
29292951
MelFid('ZNAM','combatStyle'),
29302952
MelFid('PNAM','bodyPartData'),
@@ -2990,9 +3012,11 @@ class MreCsty(MelRecord):
29903012
class MreDebr(MelRecord):
29913013
"""Debris record."""
29923014
classType = 'DEBR'
3015+
3016+
dataFlags = Flags(0L,Flags.getNames('hasCollissionData'))
29933017
class MelDebrData(MelStruct):
29943018
subType = 'DATA'
2995-
_elements = (('percentage',0),('modPath',null1),('flags',0))
3019+
_elements = (('percentage',0),('modPath',null1),('flags',0),)
29963020
def __init__(self):
29973021
"""Initialize."""
29983022
self.attrs,self.defaults,self.actions,self.formAttrs = self.parseElements(*self._elements)
@@ -3236,7 +3260,8 @@ class MreEnch(MelRecord,MreHasEffects):
32363260
melSet = MelSet(
32373261
MelString('EDID','eid'),
32383262
MelFull0(), #--At least one mod has this. Odd.
3239-
MelStruct('ENIT','3IB3s','itemType','chargeAmount','enchantCost',(_flags,'flags',0L),('unused1',null3)),
3263+
MelStruct('ENIT','3IB3s','itemType','chargeAmount','enchantCost',
3264+
(_flags,'flags',0L),('unused1',null3)),
32403265
#--itemType = 0: Scroll, 1: Staff, 2: Weapon, 3: Apparel
32413266
MelEffects(),
32423267
)
@@ -3246,13 +3271,14 @@ class MreEnch(MelRecord,MreHasEffects):
32463271
class MreExpl(MelRecord):
32473272
"""Explosion record."""
32483273
classType = 'EXPL'
3249-
_flags = Flags(0,Flags.getNames('unknown1',
3250-
'alwaysUsesWorldOrientation',
3251-
'knockDownAlways',
3252-
'knockDownByFormular',
3253-
'IgnoreLosCheck',
3254-
'pushExplosionSourceRefOnly',
3255-
'ignoreImageSpaceSwap'))
3274+
_flags = Flags(0,Flags.getNames(
3275+
(1, 'alwaysUsesWorldOrientation'),
3276+
(2, 'knockDownAlways'),
3277+
(3, 'knockDownByFormular'),
3278+
(4, 'ignoreLosCheck'),
3279+
(5, 'pushExplosionSourceRefOnly'),
3280+
(6, 'ignoreImageSpaceSwap'),
3281+
))
32563282
melSet = MelSet(
32573283
MelString('EDID','eid'),
32583284
MelStruct('OBND','=6h',
@@ -3273,7 +3299,11 @@ class MreExpl(MelRecord):
32733299
class MreEyes(MelRecord):
32743300
"""Eyes record."""
32753301
classType = 'EYES'
3276-
_flags = Flags(0L,Flags.getNames('playable','notMale','notFemale',))
3302+
_flags = Flags(0L,Flags.getNames(
3303+
(0, 'playable'),
3304+
(1, 'notMale'),
3305+
(2, 'notFemale'),
3306+
))
32773307
melSet = MelSet(
32783308
MelString('EDID','eid'),
32793309
MelString('FULL','full'),
@@ -4392,7 +4422,8 @@ def dumpData(self,record,out):
43924422
MelModel(),
43934423
MelStruct('ACBS','=I2Hh3Hf2H',
43944424
(_flags,'flags',0L),'fatigue','barterGold',
4395-
('level',1),'calcMin','calcMax','speedMultiplier','karma','dispotionBase','templateFlags'),
4425+
('level',1),'calcMin','calcMax','speedMultiplier','karma',
4426+
'dispotionBase','templateFlags'),
43964427
MelStructs('SNAM','=IB3s','factions',
43974428
(FID,'faction',None),'rank',('unused1','ODB')),
43984429
MelFid('INAM','deathItem'),
@@ -4458,7 +4489,7 @@ def setRace(self,race):
44584489
else:
44594490
self.model.modPath = r"Characters\_Male\skeleton.nif"
44604491
#--FNAM
4461-
# Needs Updating for Fallout #
4492+
# Needs Updating for Fallout 3
44624493
# American
44634494
fnams = {
44644495
0x23fe9 : 0x3cdc ,#--Argonian
@@ -4703,7 +4734,7 @@ class MrePerk(MelRecord):
47034734
"""Perk record."""
47044735
classType = 'PERK'
47054736
class MelPerkData(MelStruct):
4706-
"""Handle older trucated DATA for PERK subrecord."""
4737+
"""Handle older truncated DATA for PERK subrecord."""
47074738
def loadData(self,record,ins,type,size,readId):
47084739
if size == 5:
47094740
MelStruct.loadData(self,record,ins,type,size,readId)

0 commit comments

Comments
 (0)