Skip to content

Addresses issues with PapyrusActorValueInfo::GetPerk.* implementation.#40

Open
sky-void0 wants to merge 3 commits intoianpatt:masterfrom
sky-void0:master
Open

Addresses issues with PapyrusActorValueInfo::GetPerk.* implementation.#40
sky-void0 wants to merge 3 commits intoianpatt:masterfrom
sky-void0:master

Conversation

@sky-void0
Copy link

@sky-void0 sky-void0 commented Apr 11, 2024

Hello Ian,

First of all, my earnest apologies for the misunderstanding before. I made unrealistic assumptions based on PRs history. Please, take as long you need to review these and any future patches. Whether it takes a month or a year, I'm here if you've any questions/concerns/comments.

Cheers.

Rationale

In its current implementation, PapyrusActorValueInfo::GetPerkxxx functions can generate a stack overflow when traversing a malformed perk tree with cyclically linked nodes. e.g https://www.nexusmods.com/skyrimspecialedition/mods/20605. These patches address the issue by establishing a max recursion depth limit. Additionally, the added perks are checked to avoid repetitions in the resulting perk array, which is something that can happen even with conventional perk trees.

The last patch doesn't fix anything, it's just an "improvement" I made while I was debugging that section. Feel free to Ignore or merge it, if you feel so inclined.

@sky-void0 sky-void0 marked this pull request as ready for review April 11, 2024 23:07
@sky-void0 sky-void0 changed the title Addresses issues with PapyrusActorValueInfo's GetPerks/PerkTree implementation. Addresses issues with PapyrusActorValueInfo::GetPerk.* implementation. Apr 12, 2024
@ianpatt
Copy link
Owner

ianpatt commented Apr 12, 2024

Just as a heads up, Fallout 4 is about to be set on fire by the new update and I am going to have a ton of script extender stuff to do at very high priority with basically no free time, so this is going to take a bit to get to.

@sky-void0
Copy link
Author

Thanks for the update. I completely understand, please don't feel any pressure to get to this. It's honestly perplexing how you manage, maintain and support so many versions of the extender for so many games, and for this long. And how you still release lightning fast updates whenever Bethesda decides to unleash another round of mayhem.

Big kudos to you sir. The entire community owes you and the rest of team an enormous debt of gratitude 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants