How Doodads, Abilities and Conditions work in Arcbond

Here is how I am using an entity-component system with listeners to add interactive puzzle elements to my game:

Here is how the ability system works

I am extremely proud of these systems! They work really nicely.