Maybe add an Enum with a weapon-type to the weapon BP that you can use to cast a switch to run according functions and events instead of casting.
Also you can string the casts by adding them to the cast failed of the previous cast, i dont know if this would help but it feels like having empty cast failed’s might be a reason why the script does not execute correctly (i am just guessing here)??