Since Virgin has been added as a trait in ver .05f, I wrote these two functions to keep the trait and the girl/XML attribute in synch.
I suggest the functions be used whenever gameplay changes virginity. I am editing WorkExploreCatacombs now to do that, for example. Three SC files edited so far, but these are just interim, untested changes.
I will be testing these functions, but forsee no big problems, and wanted to get this out there now.
And I think these are great function names, right?
DustyDan
bool cGirls::LoseVirginity(sGirl* girl, bool addrememberlist, bool force)
{
// Usually called as just g_Girls.LoseVirginity(girl) with implied no-remember, force=true
/* Very similar to (and uses) RemoveTrait(). Added since trait "Virgin" created 04/14/2013.
* This includes capability for items, magic or other processes
* to have a "remove but remember" effect, like a "Belt of False Defloration"
* that provides a magical substitute vagina, preserving the original while worn.
* Well, why not?
* DustyDan
*/
string traitName = "Virgin";
bool traitOpSuccess = false;
girl->m_Virgin = false;
// Let's avoid re-inventing the wheel
traitOpSuccess = RemoveTrait(girl, traitName, addrememberlist, force);
return traitOpSuccess;
}
bool cGirls::RegainVirginity(sGirl* girl, bool temp, bool removeitem, bool inrememberlist)
{
// Usually called as just g_Girls.RegainVirginity(girl) with
// implied temp=false, removeitem=false, inrememberlist=falsee
/* Very similar to (and usese) AddTrait(). Added since trait "Virgin" created 04/14/2013.
* This includes capability for items, magic or other processes
* to have a "remove but remember" effect, like a "Belt of False Defloration"
* that provides a magical substitute vagina, preserving the original while worn.
* Well, why not?
* DustyDan
*/
string traitName = "Virgin";
bool traitOpSuccess = false;
girl->m_Virgin = true;
// Let's avoid re-inventing the wheel
traitOpSuccess = AddTrait(girl, traitName, temp, removeitem, inrememberlist);
return traitOpSuccess;
}