Without knowing your specific situation, it seems like each of you signals should not be connecting to one master “abilities” function to dole out the effects.
Instead each signal should connect to its own function and that function is responsible for only its specif effect.
====== Another thought would be if you like your setup, change the if statement to a match/case. For many simple if checks the match is more optimized.
It’s still open for a other 40 hours.
Go here: https://www.gog.com/en/game/tropico_4 then clock the link that says go to giveaway.