@@ -2383,6 +2383,9 @@ class MreArma(MelRecord):
23832383 """Armor addon record."""
23842384 classType = 'ARMA'
23852385 _flags = MelBipedFlags(0L,Flags.getNames())
2386+ _dnamFlags = Flags(0L,Flags.getNames(
2387+ (0,'modulatesVoice'),
2388+ ))
23862389 _generalFlags = Flags(0L,Flags.getNames(
23872390 (5,'powerArmor'),
23882391 (6,'notPlayable'),
@@ -2408,7 +2411,7 @@ class MreArma(MelRecord):
24082411 #9:Hand Wear,10:Chems,11:Stimpack,12:Food,13:Alcohol
24092412 MelStruct('ETYP','i',('etype',-1)),
24102413 MelStruct('DATA','IIf','value','health','weight'),
2411- MelStruct('DNAM','hH','ar','flags' ),
2414+ MelStruct('DNAM','hH','ar',(_dnamFlags,'dnamFlags',0L), ),
24122415 )
24132416 __slots__ = MelRecord.__slots__ + melSet.getSlotsUsed()
24142417
@@ -2417,6 +2420,9 @@ class MreArmo(MelRecord):
24172420 """Armor record."""
24182421 classType = 'ARMO'
24192422 _flags = MelBipedFlags(0L,Flags.getNames())
2423+ _dnamFlags = Flags(0L,Flags.getNames(
2424+ (0,'modulatesVoice'),
2425+ ))
24202426 _generalFlags = Flags(0L,Flags.getNames(
24212427 (5,'powerArmor'),
24222428 (6,'notPlayable'),
@@ -2431,7 +2437,7 @@ class MreArmo(MelRecord):
24312437 MelFid('SCRI','script'),
24322438 MelFid('EITM','objectEffect'),
24332439 MelStruct('BMDT','=IB3s',(_flags,'bipedFlags',0L),
2434- (_generalFlags,'generalFlags',0L),'armoBMDT1',),
2440+ (_generalFlags,'generalFlags',0L),( 'armoBMDT1',null3) ,),
24352441 MelModel('maleBody'),
24362442 MelModel('maleWorld',2),
24372443 MelString('ICON','maleIconPath'),
@@ -2451,7 +2457,7 @@ class MreArmo(MelRecord):
24512457 MelFid('YNAM','pickupSound'),
24522458 MelFid('ZNAM','dropSound'),
24532459 MelStruct('DATA','=2if','value','health','weight'),
2454- MelStruct('DNAM','=hH','ar','flags' ),
2460+ MelStruct('DNAM','=hH','ar',(_dnamFlags,'dnamFlags',0L), ),
24552461 )
24562462 __slots__ = MelRecord.__slots__ + melSet.getSlotsUsed()
24572463
@@ -4478,33 +4484,44 @@ def dumpData(self,record,out):
44784484 )
44794485 __slots__ = MreActor.__slots__ + melSet.getSlotsUsed()
44804486
4481- def setRace(self,race):
4482- """Set additional race info."""
4483- self.race = race
4484- #--Model
4485- if not self.model:
4486- self.model = self.getDefault('model')
4487- if race in (0x23fe9,0x223c7):
4488- self.model.modPath = r"Characters\_Male\SkeletonBeast.NIF"
4489- else:
4490- self.model.modPath = r"Characters\_Male\skeleton.nif"
4491- #--FNAM
4492- # Needs Updating for Fallout 3
4493- # American
4494- fnams = {
4495- 0x23fe9 : 0x3cdc ,#--Argonian
4496- 0x224fc : 0x1d48 ,#--Breton
4497- 0x191c1 : 0x5472 ,#--Dark Elf
4498- 0x19204 : 0x21e6 ,#--High Elf
4499- 0x00907 : 0x358e ,#--Imperial
4500- 0x22c37 : 0x5b54 ,#--Khajiit
4501- 0x224fd : 0x03b6 ,#--Nord
4502- 0x191c0 : 0x0974 ,#--Orc
4503- 0x00d43 : 0x61a9 ,#--Redguard
4504- 0x00019 : 0x4477 ,#--Vampire
4505- 0x223c8 : 0x4a2e ,#--Wood Elf
4506- }
4507- self.fnam = fnams.get(race,0x358e)
4487+ # NPCs do not have an FNAM subrecord or any equivalent
4488+ # def setRace(self,race):
4489+ # """Set additional race info."""
4490+ # self.race = race
4491+ # #--Model
4492+ # if not self.model:
4493+ # self.model = self.getDefault('model')
4494+ # if race in (0x23fe9,0x223c7): # Argonian, Khajiit
4495+ # self.model.modPath = r"Characters\_Male\SkeletonBeast.NIF"
4496+ # else:
4497+ # self.model.modPath = r"Characters\_Male\skeleton.nif"
4498+ # #--FNAM
4499+ # # Needs Updating for Fallout 3
4500+ # # American
4501+ # fnams = {
4502+ # 0x00424a : 0xdf93 ,#--AfricanAmerican
4503+ # 0x0042be : 0x22fb ,#--AfricanAmerican Child
4504+ # 0x0042bf : 0x08ab ,#--AfricanAmerican Old
4505+ # 0x0987de : 0x3dbc ,#--AfricanAmerican Old Aged
4506+ # 0x04bf72 : 0x854f ,#--AfricanAmerican Raider
4507+ # 0x0038e6 : 0x8b1b ,#--Asian
4508+ # 0x0042c0 : 0x7277 ,#--Asian Child
4509+ # 0x0042c1 : 0x77e5 ,#--Asian Old
4510+ # 0x0987dd : 0x62ff ,#--Asian Old Aged
4511+ # 0x04bf71 : 0x83e0 ,#--Asian Raider
4512+ # 0x000019 : 0x8778 ,#--Caucasian
4513+ # 0x0042c2 : 0x2e79 ,#--Caucasian Child
4514+ # 0x0042c3 : 0x2381 ,#--Caucasian Old
4515+ # 0x0987df : 0x8295 ,#--Caucasian Old Aged
4516+ # 0x04bb8d : 0x383b ,#--Caucasian Raider
4517+ # 0x003b3e : 0xdb71 ,#--Ghoul
4518+ # 0x0038e5 : 0x010c ,#--Hispanic
4519+ # 0x0042c4 : 0x6c40 ,#--Hispanic Child
4520+ # 0x0042c5 : 0x99ad ,#--Hispanic Old
4521+ # 0x0987dc : 0xac2d ,#--Hispanic Old Aged
4522+ # 0x04bf70 : 0xba0f ,#--Hispanic Raider
4523+ # }
4524+ # self.fnam = fnams.get(race,0x8778)
45084525
45094526#------------------------------------------------------------------------------
45104527class MrePack(MelRecord):
@@ -6186,10 +6203,10 @@ def loadData(self,record,ins,type,size,readId):
61866203 MelStruct('DATA','2IfHB','value','health','weight','damage','clipsize'),
61876204 MelWeapDnam('DNAM','IffBBBBfffffIBBBBffIIfffffffffffiIffifff',
61886205 'animationType','animationMultiplier','reach',
6189- (_dflags1,'dnamFlags1',0L),'gripAnimation','ammoUse',
6206+ (_dflags1,'dnamFlags1',0L),( 'gripAnimation',255) ,'ammoUse',
61906207 'reloadAnimation','minSpread','spread','weapDnam1','sightFov',
61916208 ('weapDnam2',0.0),(FID,'projectile',0L),'baseVatsToHitChance',
6192- 'attackAnimation','projectileCount','embeddedWeaponActorValue',
6209+ ( 'attackAnimation',255) ,'projectileCount','embeddedWeaponActorValue',
61936210 'minRange','maxRange','onHit',(_dflags2,'dnamFlags2',0L),
61946211 'animationAttackMultiplier','fireRate','overrideActionPoint',
61956212 'rumbleLeftMotorStrength','rumbleRightMotorStrength',
@@ -6198,8 +6215,9 @@ def loadData(self,record,ins,type,size,readId):
61986215 'rambleWavelangth','limbDmgMult',('resistType',-1),
61996216 'sightUsage','semiAutomaticFireDelayMin',
62006217 'semiAutomaticFireDelayMax',),
6201- MelStruct('CRDT','H2sfB3sI','criticalDamage','weapCrdt1','criticalMultiplier',
6202- (_cflags,'criticalFlags',0L),'weapCrdt2',(FID,'criticalEffect',0L)),
6218+ MelOptStruct('CRDT','H2sfB3sI','criticalDamage',('weapCrdt1',null2),
6219+ 'criticalMultiplier',(_cflags,'criticalFlags',0L),
6220+ ('weapCrdt2',null3),(FID,'criticalEffect',0L)),
62036221 MelBase('VNAM','soundLevel'),
62046222 )
62056223 __slots__ = MelRecord.__slots__ + melSet.getSlotsUsed()
0 commit comments