No one has ever succeeded in making a FEF calculator!
Well SOMEONE programmed Fire Emblem, didn't they?
Allow me to address some of the programming concerns that have come up.
I made it using HTML and Javascript.
So I just need to learn to use JSON.
I have never touched Javascript in my life
I'm not familiar with HTML or Javascript,
Javascript (and HTML) are intended for use in webpages, and were designed with that in mind. While GMs will necessarily have an internet browser open to read posted actions and then post turn results, this calculator will work better as an application than a webpage, mostly since web pages aren't great at reading files from disk.
Processing is my usual language of choice, but considering how much I expect to rely on drop boxes and check boxes, I think C# would be a better choice since it natively supports those.
Then I remembered counterattacks. Fuck. Counterattacks.
Turn order in combat is admittedly nontrivial, but it's not
so bad. There's no need to nest everything at each step.
- first up, calculate how many attacks each the attacker and defender have by comparing their Attack Skill scores.
- if the defender triggers vantage, they attack first. Otherwise, the attacker attacks first
- the attacker and defender take turns attacking if they have an attack left. When everybody is out, done.
If at any step anyone died, just stop running checks because it's over.
If at any step someone's weapon broke, their remaining number of attacks is set to 0.
For each attack, if that person has a Brave weapon or something that lets them strike twice, they strike twice.
...plus four hundred situational special abilities, but still.
Yeah, that's kinda the big one.
I still think it's possible, with the combined powers of user-created content and... check boxes.
In addition to the skills in the PHB, we'll need to let the user (a.k.a. the GMs) add new skills to the list of All Skills That Exist. (This is how Personal Skills get done.) When you create characters, you can assign them the new skills. Of course, only numerical skills can be added this way. Skills can be defined as conditional or unconditional.
When you go to calculate an exchange of attacks, you pick the attacker and defender, and all of their conditional skills will be listed as check boxes. It'll be up to the GM to know/calculate whether a conditional skill activates or not. (I can probably make it so that you can set an "activation rate" based on stats or flat percentages, too. It'll probably involve a custom mark-up language.)
As for house-ruled skills or custom skills that change game mechanics instead of just numbers, well, sorry, the program isn't designed for that. You'll have to add it as a text-only skill and figure it out manually, just like you would do if the calculator didn't exist at all.
So for example if you wanted to add some skills from Fire Emblem Awakening, you could add Prescience (+10 hit/avoid when defending), but not Lethality (instant death attack).
Being this is Bay12, would I be remiss in maybe suggesting basing it off of how Dwarf Fortress handles modding?
This is more or less what I was thinking, but also how the program would store characters and such so you don't have to re-enter Charles the Cavalier or Mook Bandit A every time you want to use them. And, for that matter, the program could track QL and current/max HP and such.
I don't think having persistent custom files is avoidable, frankly. You could punch in everyone's stats every time, but at that point it'd probably be more tedious than just rolling it yourself.
Reading from and writing to file aren't hard. One file for player characters, one for enemies, one for skills, and one for items/weapons.
It'll probably be .csv files so you can mod it in notepad.exe or a spreadsheet editor if you're so inclined.
EDIT: and yes, you'll be able to quickly copy NPCs.
No point in starting from scratch, right? How about a collaboration?
I could use the practice, count me in too.
With the other stuff I have going on, we're looking at a few weeks minimum before I even really start on this. With that said, I'm okay with working with others, assuming y'all write legible code and lots of comments
Although it would mean we'd want to look into the wonderful world of version control. [sarcasm] yay...