yeah, pretty much. you can have curses come from a couple of different sources and it seemed easier to just compare before/after and act on that instead of trying to keep track of what got added/removed.
i like that your final expressions read as english if you read ~ as not and = as is. 'removed is 'before and not after', added is 'after and not before'. which makes sense as actual sentences, albeit a bit of an awkward turn of phrase.
ah! those are just some random bits i picked to validate my thinking. i'm using the bits as flags, so i don't really care what the numbers work out to.
Oh what the hell, C# has var as a keyword???
Looking at it, I don't know what I was thinking^^
(Also now I'm curious to see which direction you'll take it, since there's A LOT of ways that can go (The curse stuff, I mean))
(Speaking from experience, hehe)