I think we are all talking about the same thing, just with different words
EvaluateSomeSpecificConditionsAndIfTheyAreAllTrueThenDematerialize(); is just a synoym of
CheckTeleport();, but in shorter.
In both methods you can check whatever you want to check.
You probably have a class with some private boolean fields. Then the method could look like this:
//In unit class
private bool CheckTeleport()
if ((_NearEnemy && _EnergyMax) || _TeleportPowerUp) return true;
else return false;
public override void GameLoop()
if (CheckTeleport()) Teleport();
So your question in the end is around how to organize your code / classes if I understood you correctly.
It’s also common to do what @Trinith showed in his example. It leads to a so called “EntityComponentSystem”. And this to a so called “SceneGraph”.
I hope this helps you finding your way.