public function perform_turn()
    {
        if ($this->position) {
            foreach ($this->abilities as $ability) {
                $ability->pass_turn();
            }
            if ($this->current_turn->action && !$this->is_bound()) {
                list ($name, $args) = $this->current_turn->action;
                call_user_func_array([$this->abilities[$name], 'perform'], $args);
                //$this->abilities[$name]->perform($args);
            }
        }
    }