Your code doesn’t compile or work for several reasons:
currentInputState is not defined**
You are referencing currentInputState, but it is neither defined nor initialized in the loop.
lastInputState[] is incorrectly defined**
You're trying to track the last state for each input, but the array has 7 elements instead of 4 — it should match numInputs.
if (currentState = numStates)** = is assignment, not comparison. It should be ==.
Also, numStates is not defined — you probably meant numSteps.
Missing input monitoring logic**
There’s no for loop to check inputs or it's placed incorrectly.
Error in LED update loop**
You're using the wrong variable (numStates) in the loop, and there's also a brackets mismatch.
Show us the picture of a hand-drawn wiring diagram. Post ALL code in code tags, and post all serial output also in code tags.
Now tell us what you expected and what actually happened.
Scope depends on where you define a variable. When you define it outside all functions, it is global, and can be used anywhere. When you define a variable inside a function, it is local to the function. When you define a variable inside a condition, it is local to the condition. You can not use locally defined function outside its scope.