Ranting about this code piece is pointless. You can use things like that in your codebase which is fine.
You can simply have this
C#:
public class CoolAgent : Agent {
/* other stuff */
public new bool CanBackStab(Agent agent){
if( agent.IsLawyer) return true;
return false;
}
}
and it makes the CanBackStab more meaningful especially if you have other classes derived from Agent and behave differently based on its type. You can argue that there are better ways to handle this but "omg they created a simple method for this and not even using parameter" is not applicable for this code piece.
People are not referring to simple coding mistakes or double-checks while saying the codebase is a mess. People are referring to structural problems and overall architecture while saying that.
No one can tell you why codebase is messy apart from saying a really basic sentence like "Because they didn't follow any known pattern/architecture/Software Development Practices" unless they worked with TW. So don't expect anything from this thread. As a consumer, you shouldn't care what they are doing with the codebase anyway.