While adding the talents earlier this week and being stuck on the prerequisits of the Smart Hero's Linguist talent (Research talent tree), I found out I was making an error on languages in d20 Modern.
I've been used to d20 (Fantasy, or rather (Advanced) Dungeons & Dragons), where the Speak Language skill can be obtained a couple of times, each time for a new language. When obtaining Speak Language you could automatically read/write it *caugh* impossible in illiterated medieval fantasy settings *caugh*. In d20 Modern however, the Speak Language and Read/Write Language skills are two different things, meaning you can read one language but not speak it and vice versa.
Though it might be odd that these 2 skills have been created as seperate ones, it does make sense when you think about it. We (Germanic language based) will have a lot of trouble to speak a language like Japanese and to read/write it. The difference between verbal and written language is HUGE in some cases. And while on the subject, d20 Modern also through it would be handy to group languages by their origin as well. And these groups influence the DC of the Linguist talent tests. When the unknown language is within your language group, you have a DC15 to understand the (general) meaning of the message, if it's an other group the DC will be 20 and for ancient/unique languages you'll have DC25.
In C# code that'd mean that I should use both Speak Language and Read/Write Language and keep track on what languages the character knows and in an odd way link that language to the group. And I've made odd way bold on purpose because it will not be clear for the user of the plugin (yes, I'm still serious on releaseing it to the Unity Asset store) how this is handled.
Instead I will use the Speak Language and Read/Write Language skills only to keep track of how many foreign languages the character knows. In addition to this I'll add classes that'll hold the properties of each language, including what group it belongs to. Then (like with skills), I'll add a new List<> to the main character data that'll hold the language and if the character knows it as speaking and/or read/write.
I realize this is a lot of extra work (and that data flowshart I showed earlier is already big), but it'll make things a lot easier when using the d20 Modern plugin, and that's the main thing I should keep in mind...