Looking for alternate way to read a level variable/tag by another blueprint

I am new to UE4, but not to programming … I have a simple concept that seems to be extremely difficult to apply in UE4. I have a blueprint actor, that I want to change when entering a level, based on a variable that comes from the level where that actor is added into. Conceptually I just wanted to assign a gameplay tag, or at worse a static variable on each level and then have that actor blueprint read the tag in order to make its decisions. Simple in theory, but I am finding that it is very difficult to get a tag/var from the level. The Event Dispatcher is the most common suggestion, but so far I have not been able to get that to work in my situation, so I wanted to see if anyone has a better idea on how to change a BP based on a something that would be defined by a level.

In my specific case I have shrines than randomly spawn in a level. However, based on the level’s “faction” I wanted to weight the chance of spawning like aligned shrines as determined by the faction of the level. So if the level was “evil”, then “evil” shrines would be more likely to spawn. Gameplay tags seemed perfect for this situation, but I have not yet been able to find a working solution that is specific to this situation. Thank your for any suggestions…

In C++ you can make your own AWorldSettings which allows you to add your own varable World Settings ;] You can set your own class it in project settings

What you see World Settings is instance of AWorldSettings that is saved with the level, exact same way as level blueprint. Problem is it’s only C++ and you can only get that actor from C++ (without doing get All Actors of Class). But this is best option to add variables to levels

If you really not in to C++ then alternatively you could make actor that register it self on begin play to game mode (calling function in Game Mode class with it self as a argument, like “Hey there game mode, im here, use me”), then keep reference to it in game mode and read variables from it. If actor wont register it self it would use default setting.

Thank you for the additional approaches!

A day after writing that post (and waiting for its approval) I fixed my specific issue with using the gameplay tags option … I was connecting the wrong reference object for the cast to. So Gameplay Tags is also a valid, simple way to pass data out of a leveBP to another BP.

On the side comment for Epic … I wish that there was some way for old, no-longer-valid answers to be deleted/hidden on the forums. It would help cut down on the confusion for new users.