Cambiar de comportamiento, durante un comportamiento

Hola! mira, tengo un adrama, yo empece a usar pilas 0.83 y cuando me quise dar cuenta pasamos a la 1.3.x

Te hago una consulta, ahora para pasar de un Comportamiento a otro, tengo que asignarle el comportamiento, y luego tirarle return true.
Pero si yo tengo asi:

**class mi_Actor (Actor):**
    def iniciar(self):**
        self.atributo = x**
        self.atributo = x**
        self.atributo = x**
    def cambiarComportamiento(self):**
        self.hacer(ComportamientoNuevo)**

**actor = mi_Actor(pilas)**

si el actor, no esta en ningun comportamiento lo ejecuta sin problemas.
pero supongamos que yo hago

actor.hacer(ViejoComportamiento)
#Perfecto, corre el viejo comportamiento. pero si : Mientras esta haciendo "ViejoComportamiento" y le tiro.
actor.cambiarComportamiento()

No cambia, porque esta esperando un return. Yo necesito que cambie de comportamiento, pero DESDE AFUERA DEL COMPORTAMIENTO ACTUAL.
¿Como lo fuerzo a que cambie de comportamiento?
¿Como termino el comprotamiento desde afuera del mismo, pero desde adentro del actor?

muchas gracias!!

Hola @Kantabria, para cambiar el comportamiento desde afuera del actor, o desde otro comportamiento, lo mejor es llamar al método hacer_inmediatamente.

En tu caso podrías modificar el método “cambiarComportamiento” por este código:

def cambiarComportamiento(self):
    self.hacer_inmediatamente(ComportamientoNuevo)

Muchisimas gracias Hugo por la pronta respuesta. Espero pronto poder mostrar la version Beta de este juego y recibir tus criticas y de los demas muchachos! Muchisimas gracias nuevamente!!