public void evolvePlayers() {
        for (NPC npc : NPC.getNPCList()) {
            Direction nextDir = npc.getCurrentDirectionInScript();
            Move move = npc.getMove();

            if (nextDir != Direction.NONE) {
                if (!npc.canWalkOnSquare(nextDir)) {
                    npc.setPosture(Posture.getPosture(nextDir, 0));
                    move.setDir(Direction.NONE);
                    move.reset();
                    npc.setMovementIFP(nextDir);
                }
                else {
                    npc.setOnSquare(nextDir);
                    move.setDir(nextDir);
                    npc.setPosture(Posture.getPosture(nextDir, move.getStep()));

                    boolean timerEnded = move.updateTimer();
                    if(timerEnded) {
                        move.nextStep();

                        if(move.isMoveFinished()) {
                            npc.moveSquare(nextDir);
                            npc.goToNextStepOfScript();
                        }
                    }
                }
            }
        }
    }