Scriptname SpellResearchEnchantedCOBJ Extends ReferenceAlias
ObjectReference Property PlayerRef Auto
FormList Property _srFL_cOBJCreatedItemFormList Auto
FormList Property _srFL_DynamicCOBJList Auto
FormList Property _srFL_COBJEnableList Auto
Int wasInSmelter = 0
Event OnInit()
RegisterForAnimationEvent(Game.GetPlayer(), "IdleSmelterEnter")
RegisterForAnimationEvent(Game.GetPlayer(), "IdleFurnitureExitSlow")
EndEvent
Event OnPlayerLoadGame()
RegisterForAnimationEvent(Game.GetPlayer(), "IdleSmelterEnter")
RegisterForAnimationEvent(Game.GetPlayer(), "IdleFurnitureExitSlow")
Debug.Trace("Player loaded the game!")
EndEvent
Event OnAnimationEvent(ObjectReference akSource, string asEventName)
Debug.Trace("Event fired! akSource: " + akSource + ", and asEventName: " + asEventName)
if asEventName == "IdleSmelterEnter"
wasInSmelter = 1
Debug.Notification("Just entered the smelter!")
return
Form[] weaponsInInv = PO3_SKSEFunctions.AddItemsOfTypeToArray(Game.GetPlayer(), 41, TRUE, TRUE, TRUE)
Weapon[] weaponsEnchantedInInv = New Weapon[32]
MiscObject[] cOBJResults = New MiscObject[32]
ConstructibleObject curCOBJ
Enchantment curEnchantment
Weapon curWeapon
;FormList _srFL_COBJEnableList = Game.GetFormFromFile(0x00000878, "Spell Research - Even More Patches.esp") as FormList
;FormList _srFL_DynamicCOBJList = Game.GetFormFromFile(0x00000899, "Spell Research - Even More Patches.esp") as FormList
;FormList _srFL_cOBJCreatedItemFormList = Game.GetFormFromFile(0x0000089C, "Spell Research - Even More Patches.esp") as FormList
Int idx
Int j = 0
Int i = 0
while i < weaponsInInv.length && j < 31 ; j -> Break if exceeding 32 ench items
curWeapon = weaponsInInv[i] as Weapon
; Filter out all non-enchanted
if curWeapon
curEnchantment = curWeapon.GetEnchantment()
if curEnchantment && curEnchantment.GetNthEffectMagicEffect(0)
; determine type to set COBJ result item
if curWeapon.IsBattleAxe() ; Battleaxe and Warhammer BOTH return type 6 so must handle one first
idx = 0
else
idx = curWeapon.GetWeaponType()
endif
if idx != 2 && idx < 7 ; daggers(2), bows(7), staves(8) and crossbows(9) not yet implemented
cOBJResults[j] = _srFL_cOBJCreatedItemFormList.GetAt(idx) as MiscObject
endif
if cOBJResults[j] != None ; should only be None if it's 2, 7, 8 or 9
weaponsEnchantedInInv[j] = curWeapon
j += 1
endif
endif
endif
i += 1
endwhile
; update and enable COBJs
i = 0
while i < weaponsEnchantedInInv.length
; Get the recipe COBJ
curCOBJ = _srFL_DynamicCOBJList.GetAt(i) as ConstructibleObject
; Set the enchanted weapon as the only ingredient
curCOBJ.SetNthIngredient(weaponsEnchantedInInv[i], 0)
; **The qty is set to 1 in the recipe already**
; Set result to the misc object that will swap the LVLI results in
curCOBJ.SetResult(cOBJResults[i])
; enable Global that is the condition
(_srFL_COBJEnableList.GetAt(i) as GlobalVariable).SetValue(1.0)
i += 1
endwhile
elseif asEventName == "IdleFurnitureExitSlow"
Debug.Notification("Just exited the smelter!")
if wasInSmelter != 0
wasInSmelter = 0
; on exit smelter disable COBJs
Int i = 0
while i < _srFL_COBJEnableList.GetSize()
(_srFL_COBJEnableList.GetAt(i) as GlobalVariable).SetValue(0.0)
i += 1
endwhile
endif
endif
EndEvent
Comments