Adding engrams to players

I’ve been trying to add engram(s) to player when the player performs certain action.

Specifically: I have a structure, it has a multi-use entry, and when player activates that multi-use entry, I want the player to learn certain engram(s), as if the player had learned them using the engrams menu (without the engram point cost).

I tried to follow this tutorial:
https://wiki.arkmodding.net/index.php/Learn_an_Engram_using_an_Item

But it works only partially. Below are some testing results, PIEC is testing in PIE with 2 players as the client, PIES is the same but as the server, SP is test mod output in single player game. Engram used for testing is thatch foundation, it normally costs 3 engram points to learn (you can see the number 3 appear in several places below).
What works:

  • PIEC+PIES: The message “added…” is shown.

  • PIEC+PIES: The engram appears in the craftables menu.

  • SP+PIEC+PIES: Engram is shown as learned in engrams menu.

  • SP+PIEC+PIES: Engram can be used as a prerequisite to learn another engram depending on it.

  • After dying & respawning:

    • The engram appears in the craftables menu.

Problems:

  • SP: The message “added…” is not being shown.

  • SP: The engram does not show up in the craftables menu.

  • After exiting to main menu, and returning back to single player game:

    • SP: Engram points are set to -3.

  • After dying & respawning:

    • SP+PIEC+PIES: Stats and level are reset.

    • SP+PIEC+PIES: 3 engram points are lost.

The list may not be complete, it’s been two days of testing and trying out various things and coping with other problems.

That tutorial is a bit weird in many ways, maybe it’s outdated? For example in my dev kit the “set members in primalplayerdatastruct” node looks different:
setmembers.png

Any input on the matter would be appreciated.

Here are my current blueprints related to this.

First the structure (altar) “BPClient Do Multi Use”:
1.png

The custom event that is being called from above:

These are the custom events in the PlayerPawn:
3.png

And the final one, the function that is trying to do the actual stuff: