The problem with that, is you can only grab variables. I don’t like the idea of having an external object directly accessing data that should be private, especially since the DT holds an array of structs (which IMO is the worst combo to let some other BP access externally. IMO you should always just output specific data that the user-object requested.)
To answer your second question, this is very common approach to create your own damage system. It will be much more fitted to your needs. But rather consider it only if you want to do something more advanced, for basic stuff you can handle it with built in system.
And I’m also not a fan of GAS, there are many issues with them, especially in multiplier.
Thanks, appreciate the input. I originally was going to do a custom system, but I found a decent method to deal with DTs when passing in custom resists. It seems to work fine, although the only downside is you have to create a child DT for every combination of resists you want, as opposed to a custom system that might have manually set resists per weapon (instead of per generic damage type.)
Either way, I’m either creating a bunch of re-usable DT types, or I’m manually setting all the resists inside every weapon itemType. I think the re-usable DTs might be smarter, cause a lot of weapons might share the same resist “profiles” anyway. But I’ll have to see if this holds up long-term.
The screenshot I posted is a function inside of a PDA for my item types. But the DT inside the data asset needed to be a class, because that’s what is passed into the ApplyDamage function.
I would think the lesser of 2 evils would be to store the class, and then create the object temporarily and garbage collect it. Instead of saving a DT object inside every data asset? Or am I wrong?