the nice thing about git is that the information in still there :)Your changes make the project no longer compile on linux, because std::sort is not available until you #include <algorithm>.
I have made a PR for another set of changes, this time regarding the traits. Instead of using an implicit linked list by having pointers in the traits class, cTraits now stores all traits in a std::list.Also, I have (re)added effects to sTrait, so that the traits can automatically apply a malus/bonus to stats, skills and enjoyment. The values are laoded from the *.traitsx file, so these changes manage to removeabout 1000 lines of the c++ code.
I would like to continue in this direction, but I feel like further changes to traits require a bit more effort and planning. For example, I tried automatic the mutual exclusion of traits, but could not because there are a few special cases in there (e.g. changes due to the "No Nipples" trait seem to ignore the `rememberflag` parameter. Is that deliberate?
Ideally, I would like to achieve the following:A TraitSpec class, that know the specification of a trait. This includes name and description, and it effects (currently only offsets to stats, skills, enjoyment; is there something else that should be set here?).
A Trait class, that is the trait actually applied to a girl. This saves whether the trait is temporary and how many days are left, whether it is remembered, and whether it is active.
All these traits together are stored in a TraitCollection class, that provides a convenient interface for adding and removing a trait, as well as ensuring that no mutually exclusive traits are set.
Finally, the static arrays for traits and remembered traits that are currently in sGirl will be replaced by TraitCollection. This also removes any restriction on the number of traits a girl can have (is that restriction there because of the static arrays, or is it actually a deliberate decision to not allow more than a certain amount of traits per girl?).
Any thoughts / comments on that?