You should know testing is important in writing code, Pac. It still doesn't work properly.
equips.compact.each { |equip|
orig += equip.mp_change
orig = ((orig / 100).to_f * equip.mpp_change).to_i
}
If I take out the mpp_change line, increasing the cost by 10 works fine. But with that line in, I end up with 0 MP cost because you're assigning the result of the formula to orig instead of changing the value of orig. So \mp_percent[10] will modify the MP Cost, but not \mp_change[10].
Also, .to_f doesn't work quite how you might be thinking. When you do the division of (orig / 100) it works it out as an int, because any numeric divided by an int gives an int (this is something I've run into many times so you aren't alone here). That int is then converted to a float, so you'll get:
#assume orig (original mp cost) is 5
5 / 100 = 0 # int / int = int
0.to_f = 0.0 # int to float
0.0 * mpp_change = 0.0 * 100 = 0.0 #float * int = float
So the resulting MP cost is 0. If the original MP cost was 150, then the final cost would be 100.
To force a floating point division you need to change the 100 (which is implicitly an int) to 100.0 (which is implicitly a float).
Just a couple of things to watch out for. Assigning when you don't mean to, and that .to_f doesn't quite work how you thought; it just converts the result of the calculation to a float number.
I'm sure you can make some quick fixes to make it work.