No, that would cause the game to crash if one of the files is missing. You can use form lists for both ammo and perks. Clever use of the NVSE function BuildRef can spare you of the need to make separate plugins for every DLC/mod. For example, suppose you want to add the .45 ACP ammo types to your ammo list, without requiring HH as a master, you can use this code (in a quest script):
short iIndex
ref rObject
begin GameMode
if GetGameRestarted
set iIndex to GetModIndex "HonestHearts.esm"
if iIndex < 255
set rObject to BuildRef iIndex 38011 ; Decimal FormID of .45 Auto
ListAddForm YourAmmoList rObject
set rObject to BuildRef iIndex 40554 ; Decimal FormID of .45 Hollow Point
ListAddForm YourAmmoList rObject
set rObject to BuildRef iIndex 40555 ; +P
ListAddForm YourAmmoList rObject
set rObject to BuildRef iIndex 40556 ; Hand-Load
ListAddForm YourAmmoList rObject
endif
; (...)
endif
end
That's a nice way for the ammo but I won't be able to do perks this way. I'll try to clear up a bit what I am doing: With ShadauxCat's permission, I am working on a port of his dynamic crosshair: http://fallout3.nexusmods.com/mods/15724/?tab=1&navtag=%2Fajax%2Fmoddescription%2F%3Fid%3D15724%26preview%3D&pUp=1 The crosshair scaling is handled through one script that keeps perks in mind, consumables, limbs, ammo and other factors. Now a mod could add some new perks that effect a players spread on certain conditions or always. The problem is that for every new perk I'd have to add some code to the dynamic crosshair script so that that perk is kept in mind. The piece of code could be something simple like this:
if Player.hasPerk Someperk == 1
set PerkBonus to PerkBonus * 1.2
endif
Or something like this:
if Player.hasPerk Someperk2 == 1
if player.IsMoving
set PerkBonus to PerkBonus * 0.8
else
set PerkBonus to PerkBonus * 1.2
endif
endif
Thanks everyone for helping me btw.