Skip to content

Commit d28bf4e

Browse files
committed
Updated MreArma, MreArmo, MreWeap with FNV
1 parent 25fac29 commit d28bf4e

1 file changed

Lines changed: 52 additions & 34 deletions

File tree

Mopy/bash/bosh.py

Lines changed: 52 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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
#------------------------------------------------------------------------------
45104527
class 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

Comments
 (0)