// La bandera ha sido cogida, con lo que se desactivan los comportamientos de cuando NO está cogida y se activan los otros public bool flagTaken() { // ¡Devuelve falso rápidamente si comprobamos que en realidad la bandera ya estaba cogida de antes! if (isFlagTaken) { return(false); } // Desactiva los comportamientos de cuando la bandera NO está cogida for (int i = 0; i < flagNotTakenBehaviors.Count; ++i) { if (behaviorManager.IsBehaviorEnabled(flagNotTakenBehaviors[i])) { flagNotTakenBehaviors[i].DisableBehavior(); } } // Activa los comportamientos de cuando la bandera está cogida for (int i = 0; i < flagTakenBehaviors.Count; ++i) { flagTakenBehaviors[i].EnableBehavior(); } // La bandera se marca como cogida isFlagTaken = true; return(true); }