The server should be authoritative over everything, so if the Server doesn’t let him cancel it - it won’t be cancelled. He may locally hack and show himself as not having the tags or whatever, but the server and everyone else will show it. I can add an additional callback on the server to give the server one extra chance to verify things before going through with a cancel.
When you create a child ability, it has to copy everything because BP inheritance is more a pseudo inheritance, that copy logic is only executed when you go to create the Ability. So, if you modify that base/parent object, the changes don’t propagate. A while back I tried to just always pull the Tasks from the parent object, but that ended up making the code exceedingly more complex to work in and expensive to execute (you couldn’t pre-sort the Tasks, trivial return values became no longer trivial, Ability load order suddenly became very important, etc) so I yanked it out a few versions later.
I’ve thought about adding a “Parent Refresh” button to re-run the copy logic, but it’s difficult to detect changes a user may have made to those Tasks/Functions/Variables and not stomp them - which I want to avoid, obviously. If I can find a clean way to refresh the class, I’ll happily add it.
YAYY, this is probably the #1 question I get. I stubbed out a quick tutorial page on the Wiki, you should add theses (I’ll add my own out-dated ones as well). https://able.extralifestudios.com/wiki/index.php/Tutorials