If you're not comfortable with OOP, you can do exactly the same with a procedural approach. I suspect the first pop-like were developed in C so were fully procedural.
So, each character and state methods are replaced by global functions ( walking_start(), walking_routine(), etc ), with an argument "object" (or a small table) replacing "this". For each state, just make a small table with global function references.
I personnaly prefer the procedural approach, it makes shorter code, but wrapped in a static class to avoid name conflicts.