Hi Ramza,
The dozens of passive states was the main issue I had, as I had over 100 learnable, but functionally similar, passives, as they are basically higher levels of previous ones. I scrapped my almost completed game to overhaul my skill system, and so far it seems successful. I just need to figure out how to implement them properly without states.
In case anyone is interested, I just did the below in the Parry Chance plugin under the additional parry chance function, where skill ID 877 is the level 2 of skill ID 876, and you need to learn 876 before 877:
var a = this if (a.skills().contains($dataSkills[876]) && a.skills().contains($dataSkills[877])){ +0.25 } else if (a.skills().contains($dataSkills[876])) { +0.1 } else { 0 }
Now, I just need to figure out how to do this for Block Chance.