Originally Posted by
rda
Here's what a fireball does in vanilla vs now, very simplified:
In vanilla: take levels of player and target, take hit / spell penetration of player and spell resistance of target, see if there was a hit (if not, abort, otherwise continue), take total spellpower, add total spellpower for fire spells (+fire damage on items), take base spell damage at specified rank, take fire resistance of target (+fire resist on items, existed on mobs too), compute damage, take crit and roll a dice to see if the hit was a crit, if it was, multiply damage by 2, etc. Add checks and adjustments for old talents.
Now: take levels of player and target, see if there was a hit (different from vanilla), if there was a hit, take total spellpower, take base spell damage, etc, compute damage (different from vanilla), take crit and see if the hit was a crit, if it was, multiply damage by 1.5 (again, different). Add checks and adjustments for new talents / traits (different). Add adjustments for being in PVP zones (different).
90% of the differences are in code, 10% are in the database.
Why not keep old versions of everything and just add new things? Ie, when removing +fire spell damage, why not keep the code for applying it in the formulae and just make sure that all items / buffs / etc, tell that they add 0 fire spell damage? Same for resists, spell penetration, spirit, defense rating, armor penetration, multistrike, etc. Same for pet happiness (why not keep it in the formulae that compute damage from pet and just say that the pet is always 100% happy), ammo slots (why not keep their stats added to weapon damage and just say that these stats are 0), hunter spells using mana instead of focus (why not add code for new spells *and* keep code for old ones), rogue combo points being on target instead of on itself (why not add code for having it new way *and* keep code for having it old way), druid shred having to be done from the back instead of from wherever, and ten thousand other things? Because this clutters the code. If you keep old things instead of removing them, you quickly lose the ability to add new things. Because the code turns into a huge mess of leftovers and 90% of the code are these idiotic stubs like "oh, you want spell penetration? sure, it's 0" which just keep getting in the way and make it hard to locate / fix bugs and hard to add new things. You remember that infographic from Cata where they said that there are 10+ mil players now, but there were 100 mil players over the years? It's the same with code, for each active mechanic, there are like ten old versions that were there at one time and got replaced and removed (in fact, this is true for each line of code).
So, when you try to use new server / client to do vanilla, you will get the new fireball. And if you want to get back to the old fireball, you will have to get back to the old stats, old talents, old everything. And that means getting back to the old code - perhaps reinstating it in some form. This can be done, but it is not easy.