Fallout 4 Next-Gen Update Support Has Arrived (2024-05-15)
Next-Gen release
The "Next-Gen version" was being worked on since end of April. It entered beta (as v18.0, 2024-05-10) to give time for modders to test it. (The beta was only a test build).
The first final release for the Next-Gen game patch has finally arrived(v18.1, 2024-05-15).
Over 150 new native functions and 6 event dispatchers were added to both the Next-Gen and the "non-Next-Gen"versions of Garden of Eden SE. Several bugs were fixed for the Next-Gen version during beta.
The non Next-Gen version of Garden of Eden SE structurally did not change (beyond minor code optimization, including new compiler settings for faster code execution and a bit more informative logger).
I'd like to confirm that both the main (i.e. non Next-Gen) and the Next-Gen versions of Garden of Eden will continue being supported.
Similar to MergeFormlists, could we get a function to remove the contents of a form list from another form list? I suppose removing an array from a form list could also work. Also, thank you for MergeFormlists. I've been using it extensively!
As for LeveledLists, could we get a Remove function? It'd also be great to be able to modify the count of items with a pair of Get/Set functions. I also saw that you added a function to get the override name, any chance for a SetOverrideName if not already planned?
Pretty sure I had more but what they were escapes me. Anyways, thanks for all the work you put into this. It's honestly more helpful than F4SE functions.
edit: I remembered. Any chance for a a pair of get/set functions for the description of an item? Specifically the instance of a weapon/armor if possible? I was hoping to edit a Legendary mods description to reflect a multitude of Legendary mods attached to a Legendary item. It's ok if it's not possible.
Thanks for the feedbacks, I'm currently testing v19.3. You can remove the Forms found in a FormList with vanilla if akForm.Find(FormList1) >= 0 then FormList2.Remove(akForm) and GardenOfEden2.SortFormsByForms. I'll see if I can add Remove() to LeveledList forms.. As for the Set/Get description functions for Object Mods, "get" is possible but I'm not sure if the engine allows to change it at runtime.
Edit: description names (of Messages, ObjectMods etc.) appear to be read by the native code at runtime from plugin files. I'm not sure if I can conveniently implement a Set function to overwrite them. LeveledList forms only support Revert(). Writing Remove() is possible but it will take some time.
Thank you for directing me to "GardenOfEden2.SortFormsByForms". I'll start using it and see how it goes. As for the rest, if it's not doable that's okay. I may just have the information I want to show be revealed in a more direct manner, such as a message or some such. Thank you for your time, I much appreciate it.
On another note, I just started trying to use "GardenOfEden2.GetActiveMagicEffectSourceEffects" and "GardenOfEden2.GetActiveMagicEffectMagnitudes" in an "OnMagicEffectApply" event. I've fed in the required variables but in testing it's not filling the Form[] for a Bloatfly firing it's Poison enchant. And walking in water does fill the Form[] with the WaterHazardRadiation effect, yet the magnitude doesn't change from 0. I'm not really sure what's going on because it seems pretty straightforward. I'm just taking the akTarget (as Actor) and akEffect from "OnMagicEffectApply" and plugging them in to "GardenOfEden2.GetActiveMagicEffectSourceEffects".
If it would help to know my goal, I'm trying to track what kind of damage the player is taking, damage, energy, rad, etc. and use that to determine what resistance to buff on hit. It's hopefully for a new Legendary effect.
On a heavily related note, any chance for some functions similar to the above for Enchantments? I can currently get the Enchantment from a weapon but I can't get any data from it to inform my Legendary Effect above. I'm currently using "OnHit" and "OnMagicEffectApply" in tandem to try and do this.
hey larann! i have something to report, this isn’t exactly an issue with GOE, but i think it can/will become more apparent with GOE’s condition functions.
feel free to move this comment to a bug report if you want to have this as a more organized thread.
GOE’s condition functions are exceptional, they’re much faster than normal functions. the issue is that when using a large amount of condition functions in a script, it can trigger a condition freeze, the type that’s seen and partially addressed in bingle’s mod, Escape Freeze F4SE. To be clear this obviously isn’t an issue with GOE, it’s the underlying condition freeze issue.
i’ve verified that it’s a condition freeze by repeatedly testing the combat scenario case on a 99% vanilla load order, only using GOE and a dummy mod/script with a large amount of condition functions inside a papyrus function, and trying it with and without escape freeze fix. escape freeze fix unlocks the freeze, but the underlying issue is still present and fires frequently when combat starts/during combat.
my hypothesis is that this becomes an issue with GOE’s condition functions when people are using a mod such as Buffout 4 NG / baka maxpapyrusops, since script execution is heavily sped up, and conditions are accessed too quickly or something similar internally. Buffout 4 NG is pretty universal, and i expect that we might see an increase in this freeze as more people adopt GOE condition functions.
i’ve been able to mostly verify this through testing, but unfortunately i don’t have any crash logs for you since it’s an infinite freeze that doesn’t terminate the program.
i think this issue might warrant a proper fix in a seperate mod, or in a patch contained within GOE. you should be able to see the code that partially handles the issue by checking bingle or buravo’s source for Escape Freeze F4SE
i just wanted to let you know about this ahead of time so we don’t see an increase in vague freeze reports further down the line. let me know if i can help in any way :)
Thanks for the feedback. Can you upload that dummy mod/script to a Google Drive folder? I've never encountered combat freeze honestly but I think I understand what it is.
bp42s, have you used IsAttacking? This is a known culprit for condition function issues in FO4. You can use IsMeleeAttacking instead, which is a safe condition function used in the vanilla game. I just want to point out that a particular condition function may be the culprit.
This is it!!! The bane of my problems!! I was lucky enough to have a papyrus log for my endless freeze (escape freeze isnt working, i might have to config it somehow) and GOE filled up most of the log. Escape freeze doesn't even work for me, and it seems to also bring up my gamepad (controller I'm using via steam settings) on the next gen.
Can you post a line from the log? If you can identify the mod that calls the function found in the log you can notify the author (the script extender doesn't call functions on its own and log errors are often caused by functions calls on non existent objects).
New functions Get/SetWeatherDirectionalAmbientLightingColorValue seem to be missing a second aiIndex parameter. As is you can only get/set data for the first DALC position.
Hello again, I was hoping to get some advice. I've been trying to use AttachModToNthItem to simulate crafting a random mod at a workbench. I've been using OnPlayerModArmorWeapon to attach a random mod from a list to an item that has a placeholder mod. My only issue is that that the stats on the weapon don't change because the mod is being added after the menu refreshes. I had to change abApplyDataInstantly to False because it was breaking the menu by removing and readding the item. To get to the point, is there a way to refresh the menu after the script has run besides crafting a new mod? I've tried various workarounds but the only solution I found was drastically rethinking the whole thing.
On a side note, I've been using OnItemRemoved to track weapons/armor being scrapped. Is there a better way to do this? I'd love the ability to actually track what is scrapped.
You can refresh the menu entry list of a workbench menu such as ExamineMenu with something like this:
Function RefreshList() var[] arguments = new var[1] arguments[0] = "" UI.Invoke("ExamineMenu", "root1.BaseInstance.BGSCodeObj.SetName", arguments) EndFunction BGSCodeObj is a Scaleform object in the menu's AS3 that is used to communicate with the native code. SetName() is an actual native function that is called when the player renames an item. Passing an empty String as argument doesn't rename the item as far as I remember (you can pass an actual name if you'd like) but the game code internally refreshes the item list after processing SetName() anyway.
Thank you for the reply. I tried this Function as is and it didn't seem to refresh the menu visually which is what I'd hoped for. It seemed to do something because I couldn't back out of menus anymore using tab. But thank you, I appreciate the attempt.
I refreshed the workbench menu in one of my earlier mods, Directly Moddable Stored Weapons. This wasn't the complete function, it seems I also called SetName without arguments 0.01 seconds later so there was more involved. I don't remember what what was the exact trigger, I wrote it years ago.
I tried the full Function and it doesn't seem do what I'd like it to. I was hoping it would update the name and stats of the weapon/armor but it isn't doing that. I still need to craft an entire new mod for everything to update. I might try reorganizing the script again with this function to see if any of my previous iterations now work. But do you have any other suggestions before I do?
It's all good. I think I'll just rely on the script firing when the player leaves the workbench. It's simpler and less of a headache. But thank you for the reply!
Hey larann, i've been getting some relatively consistent crashes when walking between locations, and CLASSIC points to an issue with goe. classic has its own issues sometimes, but this has been consistent enough to the point that i feel it's worth mentioning, just in case.
This is on last-gen v19.1, let me know if you need more data or testing.
* NOTICE : MAIN ERROR REPORTS THAT A DLL FILE WAS INVOLVED IN THIS CRASH! * If that dll file belongs to a mod, that mod is a prime suspect for the crash. ----- # Checking for Script Crash.................. SUSPECT FOUND! > Severity : 3 #
[Last number counts how many times each Plugin Suspect shows up in the crash log.] These Plugins were caught by Buffout 4 and some of them might be responsible for this crash. You can try disabling these plugins and check if the game still crashes, though this method can be unreliable.
# LIST OF (POSSIBLE) FORM ID SUSPECTS # * COULDN'T FIND ANY FORM ID SUSPECTS *
Thank you for reporting this. I made a quick mod with OnLocationChange() and found what the issue is. Since this is a high priority bug I'll release an update soon. (The bug apparently is in the internal shared function used by the advanced condition runner functions. Its implementation differs from all the other functions which wouldn't be a problem but under specific circumstances a vanilla thread attempts to write to the Float[] array which unfortunately I haven't considered and parallel write access is not allowed.
If you are taking requests, I am in want of weather functions. I am trying to control lightning and fog data when in skylit cells. It is for the mod Real Interiors - Persistent Weather. The problem is, there is no way to handle the majority of weather settings via script.
I really need dynamic control over lightning data (color specifically) and fog values (fog planes and power). Sadly, SetFogPlanes() does not work on weather forms.
If you cooked up some Get/Set functions for various weather settings, we could bring godrays, rain occlusion and sun shadows into all exposed interiors.
Hi LarannKiar, I'm a longtime fan you your mods. Thank you for all your work! I found a quote of yours on another mod page and wanted to ask you for your thoughts. You said that enemy NPCs will use stimpaks in combat to heal themselves. I have seen this with Legendary NPCs but very seldom or rare have I ever seen NPCs use stimpaks. The exception would be Greslin's mod PANPC which is the only mod I can think of that NPCs do in fact heal themselves. There may be others I am unaware of. Here is my point for your comment. With powerofthree's mod SPID getting some much use in Skyrim ( I have mods in Skyrim that do this) why don't mod authors create mods mod in FO4 that make use of SPID to distribute health items? Is it because the game engine still needs to allow them to use the items even if they are in there inventory?
All human NPCs heal themselves in combat if they have a Stimpak in their inventory based on a timer and threshold (which are hardcoded but I just found a game setting in the EXE "fEssentialStimpakTime" that might control the timer but I'm not sure..). "Equipping" a Stimpak to trigger the heal effect is possible in vanilla Papyrus though.
487 comments
(2024-05-15)
Next-Gen release
The "Next-Gen version" was being worked on since end of April. It entered beta (as v18.0, 2024-05-10) to give time for modders to test it. (The beta was only a test build).
The first final release for the Next-Gen game patch has finally arrived (v18.1, 2024-05-15).
Over 150 new native functions and 6 event dispatchers were added to both the Next-Gen and the "non-Next-Gen" versions of Garden of Eden SE. Several bugs were fixed for the Next-Gen version during beta.
The non Next-Gen version of Garden of Eden SE structurally did not change (beyond minor code optimization, including new compiler settings for faster code execution and a bit more informative logger).
I'd like to confirm that both the main (i.e. non Next-Gen) and the Next-Gen versions of Garden of Eden will continue being supported.
Similar to MergeFormlists, could we get a function to remove the contents of a form list from another form list? I suppose removing an array from a form list could also work. Also, thank you for MergeFormlists. I've been using it extensively!
As for LeveledLists, could we get a Remove function? It'd also be great to be able to modify the count of items with a pair of Get/Set functions. I also saw that you added a function to get the override name, any chance for a SetOverrideName if not already planned?
Pretty sure I had more but what they were escapes me. Anyways, thanks for all the work you put into this. It's honestly more helpful than F4SE functions.
edit: I remembered. Any chance for a a pair of get/set functions for the description of an item? Specifically the instance of a weapon/armor if possible? I was hoping to edit a Legendary mods description to reflect a multitude of Legendary mods attached to a Legendary item. It's ok if it's not possible.
Edit: description names (of Messages, ObjectMods etc.) appear to be read by the native code at runtime from plugin files. I'm not sure if I can conveniently implement a Set function to overwrite them. LeveledList forms only support Revert(). Writing Remove() is possible but it will take some time.
On another note, I just started trying to use "GardenOfEden2.GetActiveMagicEffectSourceEffects" and "GardenOfEden2.GetActiveMagicEffectMagnitudes" in an "OnMagicEffectApply" event. I've fed in the required variables but in testing it's not filling the Form[] for a Bloatfly firing it's Poison enchant. And walking in water does fill the Form[] with the WaterHazardRadiation effect, yet the magnitude doesn't change from 0. I'm not really sure what's going on because it seems pretty straightforward. I'm just taking the akTarget (as Actor) and akEffect from "OnMagicEffectApply" and plugging them in to "GardenOfEden2.GetActiveMagicEffectSourceEffects".
If it would help to know my goal, I'm trying to track what kind of damage the player is taking, damage, energy, rad, etc. and use that to determine what resistance to buff on hit. It's hopefully for a new Legendary effect.
On a heavily related note, any chance for some functions similar to the above for Enchantments? I can currently get the Enchantment from a weapon but I can't get any data from it to inform my Legendary Effect above. I'm currently using "OnHit" and "OnMagicEffectApply" in tandem to try and do this.
feel free to move this comment to a bug report if you want to have this as a more organized thread.
GOE’s condition functions are exceptional, they’re much faster than normal functions. the issue is that when using a large amount of condition functions in a script, it can trigger a condition freeze, the type that’s seen and partially addressed in bingle’s mod, Escape Freeze F4SE.
To be clear this obviously isn’t an issue with GOE, it’s the underlying condition freeze issue.
i’ve verified that it’s a condition freeze by repeatedly testing the combat scenario case on a 99% vanilla load order, only using GOE and a dummy mod/script with a large amount of condition functions inside a papyrus function, and trying it with and without escape freeze fix. escape freeze fix unlocks the freeze, but the underlying issue is still present and fires frequently when combat starts/during combat.
my hypothesis is that this becomes an issue with GOE’s condition functions when people are using a mod such as Buffout 4 NG / baka maxpapyrusops, since script execution is heavily sped up, and conditions are accessed too quickly or something similar internally. Buffout 4 NG is pretty universal, and i expect that we might see an increase in this freeze as more people adopt GOE condition functions.
i’ve been able to mostly verify this through testing, but unfortunately i don’t have any crash logs for you since it’s an infinite freeze that doesn’t terminate the program.
i think this issue might warrant a proper fix in a seperate mod, or in a patch contained within GOE. you should be able to see the code that partially handles the issue by checking bingle or buravo’s source for Escape Freeze F4SE
i just wanted to let you know about this ahead of time so we don’t see an increase in vague freeze reports further down the line. let me know if i can help in any way :)
aiIndex parameter. As is you can only get/set data for the first DALC position.
On a side note, I've been using OnItemRemoved to track weapons/armor being scrapped. Is there a better way to do this? I'd love the ability to actually track what is scrapped.
Function RefreshList()
var[] arguments = new var[1]
arguments[0] = ""
UI.Invoke("ExamineMenu", "root1.BaseInstance.BGSCodeObj.SetName", arguments)
EndFunction
BGSCodeObj is a Scaleform object in the menu's AS3 that is used to communicate with the native code. SetName() is an actual native function that is called when the player renames an item. Passing an empty String as argument doesn't rename the item as far as I remember (you can pass an actual name if you'd like) but the game code internally refreshes the item list after processing SetName() anyway.
Hey larann, i've been getting some relatively consistent crashes when walking between locations, and CLASSIC points to an issue with goe. classic has its own issues sometimes, but this has been consistent enough to the point that i feel it's worth mentioning, just in case.
This is on last-gen v19.1, let me know if you need more data or testing.
* NOTICE : MAIN ERROR REPORTS THAT A DLL FILE WAS INVOLVED IN THIS CRASH! *
If that dll file belongs to a mod, that mod is a prime suspect for the crash.
-----
# Checking for Script Crash.................. SUSPECT FOUND! > Severity : 3 #
# LIST OF (POSSIBLE) PLUGIN SUSPECTS #
- [00] 0x7ffc615c19a9 vcruntime140.dll+00119a9 | 1
- [01] 0x7ffbcd483646 gardenofedenpapyrusextender.dll+0113646 | 1
- [02] 0x7ffbcd37725e gardenofedenpapyrusextender.dll+000725e | 1
- [03] 0x7ff78b30cd4c fallout4.exe+072cd4c -> 43452+0x81c movzx ebx, al | 1
- [04] 0x7ff78b30b773 fallout4.exe+072b773 -> 1099998+0xc3 test byte ptr [rbx+0x30], 0x01 | 1
- [05] 0x7ff78b17f66d fallout4.exe+059f66d -> 957325+0x6d test al, al | 1
- [06] 0x7ff78b16d3c7 fallout4.exe+058d3c7 -> 1103094+0x217 test al, al | 1
- [07] 0x7ff78b1b7e1f fallout4.exe+05d7e1f -> 16730+0x6f add rbx, 0x08 | 1
- [08] 0x7ff78b1c308a fallout4.exe+05e308a -> 117114+0x1a add rsp, 0x20 | 1
- [09] 0x7ff78c730f26 fallout4.exe+1b50f26 -> 329005+0xc6 mov ecx, [rbx+0x0c] | 1
- [10] 0x7ff78c731432 fallout4.exe+1b51432 -> 194800+0x202 mov r14d, eax | 1
- [11] 0x7ff78c733f67 fallout4.exe+1b53f67 -> 1492866+0x67 movzx eax, byte ptr [rbx+0xa74] | 1
- [12] 0x7ff78c6fcfed fallout4.exe+1b1cfed -> 1079791+0x3d mov rcx, [0x00007ff79073bd38] | 1
- [13] 0x7ffc7cb7259d kernel32.dll+001259d | 1
- [14] 0x7ffc7e38af38 ntdll.dll+005af38 | 1
- registers: | 1
- rdi 0x7ffbcd61f3f0 (void* -> gardenofedenpapyrusextender.dll+02af3f0 mov al, 0xb7) | 1
[Last number counts how many times each Plugin Suspect shows up in the crash log.]
These Plugins were caught by Buffout 4 and some of them might be responsible for this crash.
You can try disabling these plugins and check if the game still crashes, though this method can be unreliable.
# LIST OF (POSSIBLE) FORM ID SUSPECTS #
* COULDN'T FIND ANY FORM ID SUSPECTS *
# LIST OF DETECTED (NAMED) RECORDS #
- RDI 0x7FFBCD61F3F0 (void* -> GardenOfEdenPapyrusExtender.dll+02AF3F0 mov al, 0xB7) | 1
- [00] 0x7FFC615C19A9 VCRUNTIME140.dll+00119A9 | 1
- [01] 0x7FFBCD483646 GardenOfEdenPapyrusExtender.dll+0113646 | 1
- [02] 0x7FFBCD37725E GardenOfEdenPapyrusExtender.dll+000725E | 1
I am trying to control lightning and fog data when in skylit cells. It is for the mod Real Interiors - Persistent Weather.
The problem is, there is no way to handle the majority of weather settings via script.
I really need dynamic control over lightning data (color specifically) and fog values (fog planes and power).
Sadly, SetFogPlanes() does not work on weather forms.
If you cooked up some Get/Set functions for various weather settings, we could bring godrays, rain occlusion and sun shadows into all exposed interiors.
This goes above and beyond.
Kudos to you good sir!
i had this working and for some reason it has started to pop as not installed for NPC respawn.
all i did was update sim settlements 2
Thank you very much for pre-NG support.
I'm a longtime fan you your mods. Thank you for all your work!
I found a quote of yours on another mod page and wanted to ask you for your thoughts. You said that enemy NPCs will use stimpaks in combat to heal themselves. I have seen this with Legendary NPCs but very seldom or rare have I ever seen NPCs use stimpaks. The exception would be Greslin's mod PANPC which is the only mod I can think of that NPCs do in fact heal themselves. There may be others I am unaware of. Here is my point for your comment.
With powerofthree's mod SPID getting some much use in Skyrim ( I have mods in Skyrim that do this) why don't mod authors create mods mod in FO4 that make use of SPID to distribute health items? Is it because the game engine still needs to allow them to use the items even if they are in there inventory?