Pink Petal Games
Feedback => Bugs and Game balancing => Topic started by: blackrosesheart on August 22, 2011, 12:55:25 PM
-
I've developed a habit of breaking certain girls so that I don't have to brand them but they'll still be obediant. One thing I've noticed is that when they level, Broken Will and Mind Fucked will both occasionally be removed. It seems to be related to gaining Confidence or Spirit, but I'm not certain.
-
I've developed a habit of breaking certain girls so that I don't have to brand them but they'll still be obediant. One thing I've noticed is that when they level, Broken Will and Mind Fucked will both occasionally be removed. It seems to be related to gaining Confidence or Spirit, but I'm not certain.
Never heard of this bug? But I dislike those traits...
-
Never heard of this bug? But I dislike those traits...
I think it sounds more like it's "by design".
-
Hmph. -.-
-
I think it sounds more like it's "by design".
I don't think so, although you'd need to ask necno for sure.
I did have a dig though the code though, and the only place where the trait is removed, is when she gains Iron Wil, which isn't the problem as I understand it.
Of course, it could be being removed by passing a variable - grep only takes you so far in these cases.l
-
Btw, Masochist and scars traits removed as well.
-
I think the problem is that the traits are added from the dungeon are sometimes set as temporary, not sure if that bug ever got fixed. I fixed it in my code once, but don't remember how, think there was a false or true in the wrong place when they were assigned. I don't have the code anymore.
-
Ah, I think I got it. In cGirlTorture.cpp
if (m_Girl->spirit() < 20 && m_Girl->health() < 20 ) {
add_trait("Broken Will", 5 + nWeekMod / 2);
}
if (m_Girl->bdsm() > 30) {
add_trait("Masochist", 10 + nWeekMod);
}
if (m_Girl->health() < 10) {
add_trait("Mind Fucked", 10 + nWeekMod);
}
Looks like this traits are temporary by design here. You can easily obtain them, since they depends on spirit, bdsm and health only.
But in cDungeon.cpp (for example, Broken Will)
if (!girl->has_trait("Broken Will"))
{
chance = d_girl->m_Weeks * 10; // Number of weeks in dungeon
chance += 200 - girl->spirit() - girl->health();
chance /= chance_div;
if (girl->has_trait("Iron Will"))
{
chance /= 2;
}
if (g_Dice.percent(chance))
{
girl->add_trait("Broken Will", false);
msg = girlName + " has gained the trait \"Broken Will\".";
summary += msg + "\n";
girl->m_Events.AddMessage( msg, IMGTYPE_BDSM, EVENT_WARNING);
t_girl->m_Events.AddMessage( msg, IMGTYPE_PROFILE, EVENT_DUNGEON);
}
}
I think, at first this traits are temporary, but if girl spend enough time in dungeon, traits became permanent. Messages for temporary and permanent traits are not the same: "girl name + has gained trait + trait + from being tortured" for temporary and "girl name + has gained the trait +trait" for permanent. Unfortunately, they have the same names in statistic screen.
Sorry for bad English :)
-
Nifty. Thanks. :)
-
That explains a lot, thanks
-
It would be nice if someone can confirm it. Can't say I perfectly understand this code, maybe it not work correctly.
-
Just looked over the code, the code in dungeon is never called, it was replaced by cGirlTorture. The problem is in cGirls.h add_trait is defined as
void add_trait(string trait, bool temp = true) { g_GirlsPtr->AddTrait{this, trait, temp);}
thus making a trait temporary by default. So the torture code needs to specify false or the traits will always be temporary.
-
So how exactly would you specify it as true there?
-
where the torture code (cGirlsTorture.cpp calls add_trait(trait)
// it has a polymorphic add_trait(string, int) function which calls it//
change it to add_trait(trait,false) to make it permanent, if you dont't specify false it defaults to true and you don't have to type the true.
Does that make sense?
-
Umm...sort of, maybe? I don't really code.
-
well, the only way to fix it is to change the add_trait function in cGirlTorture.cpp If you don't code I am assuming that you aren't wanting to have to recompile everything, nut here is the code anyway
-
sounds like it is by design as well... yes I really can't remember