You cant change the value of #define's. They are like const's, and this is why C++ has const's (among other reasons), so that you dont get some parse error thats not very explanatory of the problem when trying to change #defines, whereas trying to change consts does.

from what I can tell your logic was fine, you never tried to change the value of a #define. You tried to set the value of an array who's index was a #define (Dagger).

With that said you need to remove the trailing semi colons from your defines, or change to int const as suggested.

Code:

if i dont want to use const, then why are all the declarations here int const?

Dae omitted the const from Dagger.
Not knowing how you use the rest of your defines he would not know whether you truely want the others to be const or not. From what I've seen of this and your other thread you do want them all to be const (including Dagger).