Consider a card game, such as [Hearthstone](https://en.wikipedia.org/wiki/Hearthstone:_Heroes_of_Warcraft).

There are hundreds of cards that do a wide variety of things, some of which are unique even to a single card! For instance, there is a card (called Nozdormu) that reduces player turns to only 15 seconds!

When you have such a wide variety of potential effects, how do you avoid magic numbers and one-off checks all over your code? How does one avoid a "Check\_Nozdormu\_In\_Play" method in the PlayerTurnTime class? And how can one organize the code such that when you add even *more* effects, you don't need to refactor core systems to support stuff they've never had to support before?