I should preface this by saying that I’m not familiar with programming. I’ve tinkered with some phpBB MODs and looked at WordPress Plugin coding, but that’s all I am familiar with.
That being said, Mike, I would venture a guess to say that the coding needs to be set up so that based on the “fact” that an achievement has been awarded, not on the “event” that it has been awarded. Here’s what I’m thinking, lemme know if it makes sense at all:
——————————————-
Achievement A is awarded.
Achievement C checks to see if Achievement A has been awarded (value = true?) and Achievement B has been awarded (value = false?). Because both values are not true, Achievement C is not awarded.
Achievement B is awarded.
Achievement C checks to see if Achievement A and B have been awarded. Because they are now both true, Achievement C is awarded to the user.
——————————————-
So, in essence, any time an Achievement is awarded, some code should be referenced to “check” if any other achievements are now eligible to be awarded. This is what I was thinking when I mentioned awarding an achievement based on the “fact” that an achievement has been awarded, not on an “event”.
If my line of thinking is on par…I’d say the challenge of designing this code would be in figuring out when and how to check to see if an achievement’s criteria has been met. If you only use the criteria of achievements being awarded, you might be ok with just adding some code to the section of this plugin that awards achievements (I don’t know how easy or difficult that might be). If you use other criteria as well (eg 100 posts, 500 logins, and 1 previously awarded achievement will earn you Achievement X), you would need to “check” if an achievement is eligible to be awarded after each of those events occur, every time. That would likely be a greater challenge.
Hopefully some of that made sense. If I’m way off lemme know haha. Still learning so much, so this is just a semi-educated guess.
Thanks Mike and Paul for how much work you’ve put into this plugin! I’m enjoying it a lot.