Here are the etymologies from most recent words to older (from etymonline.com). I recommend reading them as these words these days might have lost much of their delineation - today we label them under one category and often use them interchangeably.
jinx (n.)
1911, Amer.Eng., from 17c. jyng "a charm, a spell," originally "wryneck," a bird used in witchcraft and divination, from L. iynx "wryneck," from Gk. iynx. The verb is 1917 in Amer.Eng., from the noun. Related: Jinxed; jinxing.
hex (v.)
1830, Amer.Eng., from Pennsylvania German hexe "to practice witchcraft," from Ger. hexen "to hex," related to Hexe "witch," from M.H.G. hecse, hexse, from O.H.G. hagazussa (see hag). Noun meaning "magic spell" is first recorded 1909; earlier it meant "a witch" (1856).
charm (v.)
c.1300, "to recite or cast a magic spell," from O.Fr. charmer, from L.L. carminare, from L. carmen (see charm (n.)). Related: Charmed; charming.
curse (n.)
late O.E. curs "a prayer that evil or harm befall one," of uncertain origin, perhaps from O.Fr. curuz "anger," or L. cursus "course." Connection with cross is unlikely. No similar word exists in Germanic, Romance, or Celtic. The verb is O.E. cursian; meaning "to swear profanely" is from early 13c. Related: Cursed; cursing. Curses as a histrionic exclamation is from 1885. The curse "menstruation" is from 1930. Curse of Scotland, the 9 of diamonds in cards, is attested from 1791, but the origin is obscure.
In the actual meaning and use, they can all be used as verbs.
Jinx, hex and curse can have exactly the same meaning and it is negative; while charm is ambiguous: it can refer to both positive and negative.
The older words curse and charm have developed other, common meanings, to swear and to attract, respectively, while the younger words have only meanings related to magic and mysticism.
Best Answer
In a role-playing game, one might say that a blessing and a curse are both types of charm. That is, something might be charmed with a blessing or charmed with a curse.
In a programming context,
isBlessed
would do, althoughisCharmed
would also work: value1
for blessed,-1
for cursed and0
for neither.