本文整理汇总了C++中cRng::d100方法的典型用法代码示例。如果您正苦于以下问题:C++ cRng::d100方法的具体用法?C++ cRng::d100怎么用?C++ cRng::d100使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cRng
的用法示例。
在下文中一共展示了cRng::d100方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddStory
void AddStory(stringstream * MyStr)
{
int roll = g_Dice.d100();
int OPTIONS = 15;
*MyStr << " in which she ";
switch (roll%OPTIONS)
{
case 0:
*MyStr << "battles a gang of demons.";
break;
case 1:
*MyStr << "defends a village against twisted, raping marauders.";
break;
case 2:
*MyStr << "avenges her mentor and defends her family's honour.";
break;
case 3:
*MyStr << "battles her evil step-brother for control of the Crimson Sceptre.";
break;
case 4:
*MyStr << "saves a twisted nunnery from the evil within.";
break;
case 5:
*MyStr << "opens hella whup-ass.";
break;
case 6:
*MyStr << "protects the Elven Princess from the Orc Prince's evil magics.";
break;
case 7:
*MyStr << "struggles to survive an island deathmatch sponsored by a corrupt state.";
break;
case 8:
*MyStr << "dies unfairly, and is forced to beat the Challenge of the Eight Divines to earn back her place among the living.";
break;
case 9:
*MyStr << "protects a handsome, kindly slave-master from his slaves' vicious mutiny.";
break;
case 10:
*MyStr << "is a bounty hunter, hunting down desperate criminals and dangerous escaped slaves.";
break;
case 11:
*MyStr << "battles her older sister who has been corrupted by the dark power of the Ninth Ward of Amocles.";
break;
case 12:
*MyStr << "is the last of a race of female warriors, taking vengeance against a dark Prince.";
break;
case 13:
*MyStr << "stars as a female monk defending a mountain temple from marauding Centaurs.";
break;
case 14:
*MyStr << "hunts down the sadistic pirate gang who kidnapped her sister.";
break;
default:
*MyStr << "does something very unexpected.";
break;
}
return;
}
示例2: WorkFightBeast
// `J` Job Arena - Fighting
bool cJobManager::WorkFightBeast(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_COMBAT;
stringstream ss;
string girlName = girl->m_Realname;
ss << girlName;
if (g_Brothels.GetNumBeasts() < 1)
{
ss << " had no beasts to fight.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, Day0Night1);
return false; // not refusing
}
int roll = g_Dice.d100();
if (roll <= 10 && g_Girls.DisobeyCheck(girl, actiontype, brothel))
{
ss << " refused to fight beasts today.\n";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
g_Girls.EquipCombat(girl); // ready armor and weapons!
Uint8 fight_outcome = 0;
int wages = 175, enjoy = 0;
double jobperformance = JP_FightBeast(girl, false);
if (roll <= 15)
{
ss << " didn't like fighting beasts today.";
enjoy -= 3;
}
else if (roll >= 90)
{
ss << " loved fighting beasts today.";
enjoy += 3;
}
else
{
ss << " had a pleasant time fighting beasts today.";
enjoy += 1;
}
ss << "\n\n";
// TODO need better dialog
sGirl* tempgirl = g_Girls.CreateRandomGirl(18, false, false, false, true, false);
if (tempgirl) // `J` reworked incase there are no Non-Human Random Girls
{
fight_outcome = g_Girls.girl_fights_girl(girl, tempgirl);
}
else
{
g_LogFile.write("Error: You have no Non-Human Random Girls for your girls to fight\n");
g_LogFile.write("Error: You need a Non-Human Random Girl to allow WorkFightBeast randomness");
fight_outcome = 7;
}
if (fight_outcome == 7)
{
ss << "The beasts were not cooperating and refused to fight.\n\n";
ss << "(Error: You need a Non-Human Random Girl to allow WorkFightBeast randomness)";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, Day0Night1);
}
else if (fight_outcome == 1) // she won
{
ss << "She had fun fighting beasts today.";
enjoy += 3;
girl->m_Events.AddMessage(ss.str(), IMGTYPE_COMBAT, Day0Night1);
int roll_max = girl->fame() + girl->charisma();
roll_max /= 4;
wages += 10 + g_Dice%roll_max;
girl->m_Pay = wages;
g_Girls.UpdateStat(girl, STAT_FAME, 2);
}
else // she lost or it was a draw
{
ss << "She was unable to win the fight.";
enjoy -= 1;
//Crazy i feel there needs be more of a bad outcome for losses added this... Maybe could use some more
if (m_JobManager.is_sex_type_allowed(SKILL_BEASTIALITY, brothel) && !g_Girls.HasTrait(girl, "Virgin"))
{
ss << " So as punishment you allow the beast to have its way with her.";
enjoy -= 1;
g_Girls.UpdateStatTemp(girl, STAT_LIBIDO, -50);
g_Girls.UpdateSkill(girl, SKILL_BEASTIALITY, 2);
girl->m_Events.AddMessage(ss.str(), IMGTYPE_BEAST, Day0Night1);
if (!girl->calc_insemination(The_Player, false, 1.0))
{
g_MessageQue.AddToQue(girl->m_Realname + " has gotten inseminated", 0);
}
}
else
{
ss << " So you send your men in to cage the beast before it can harm her.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_COMBAT, Day0Night1);
g_Girls.UpdateStat(girl, STAT_FAME, -1);
}
}
//.........这里部分代码省略.........
示例3: WorkFilmAnal
// `J` Job Movie Studio - Actress
bool cJobManager::WorkFilmAnal(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_WORKMOVIE;
// No film crew.. then go home // `J` this will be taken care of in building flow, leaving it in for now
if (g_Studios.GetNumGirlsOnJob(0, JOB_CAMERAMAGE, SHIFT_NIGHT) == 0 || g_Studios.GetNumGirlsOnJob(0, JOB_CRYSTALPURIFIER, SHIFT_NIGHT) == 0)
{
girl->m_Events.AddMessage("There was no crew to film the scene, so she took the day off", IMGTYPE_PROFILE, EVENT_NOWORK);
return false;
}
stringstream ss;
string girlName = girl->m_Realname;
int wages = 50;
int enjoy = 0;
int finalqual = 0;
int jobperformance = 0;
g_Girls.UnequipCombat(girl); // not for actress (yet)
ss << girlName << " worked as an actress filming anal scenes.\n\n";
int roll = g_Dice.d100();
if (roll <= 10 && (g_Girls.DisobeyCheck(girl, ACTION_WORKMOVIE, brothel) || g_Girls.DisobeyCheck(girl, ACTION_SEX, brothel)))
{
ss << "She refused to do anal on film today.\n";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
else if (roll <= 10) { enjoy -= g_Dice % 3 + 1; ss << "She didn't like having a cock up her ass today.\n\n"; }
else if (roll >= 90) { enjoy += g_Dice % 3 + 1; ss << "She loved having her ass pounded today.\n\n"; }
else /* */{ enjoy += g_Dice % 2; ss << "She had a pleasant day letting her co-star slip his cock into her butt.\n\n";
}
jobperformance = enjoy * 2;
if (g_Girls.CheckVirginity(girl))
{
jobperformance += 20;
ss << "She is a virgin.\n";
}
// remaining modifiers are in the AddScene function --PP
finalqual = g_Studios.AddScene(girl, SKILL_ANAL, jobperformance);
ss << "Her scene is valued at: " << finalqual << " gold.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_ANAL, Day0Night1);
// work out the pay between the house and the girl
if (girl->is_slave() && !cfg.initial.slave_pay_outofpocket())
{
wages = 0; // You own her so you don't have to pay her.
}
else
{
wages += finalqual * 2;
}
girl->m_Pay = wages;
// Improve stats
int xp = 10, skill = 3;
if (g_Girls.HasTrait(girl, "Quick Learner")) { skill += 1; xp += 3; }
else if (g_Girls.HasTrait(girl, "Slow Learner")) { skill -= 1; xp -= 3; }
g_Girls.UpdateStat(girl, STAT_EXP, xp);
g_Girls.UpdateSkill(girl, SKILL_PERFORMANCE, g_Dice%skill);
g_Girls.UpdateSkill(girl, SKILL_ANAL, g_Dice%skill + 1);
g_Girls.UpdateEnjoyment(girl, ACTION_SEX, enjoy);
g_Girls.UpdateEnjoyment(girl, ACTION_WORKMOVIE, enjoy);
//gain
g_Girls.PossiblyGainNewTrait(girl, "Fake Orgasm Expert", 50, ACTION_SEX, "She has become quite the faker.", Day0Night1);
g_Girls.PossiblyGainNewTrait(girl, "Slut", 80, ACTION_SEX, girlName + " has turned into quite a slut.", Day0Night1);
g_Girls.PossiblyGainNewTrait(girl, "Porn Star", 80, ACTION_WORKMOVIE, "She has performed in enough sex scenes that she has become a well known Porn Star.", Day0Night1);
//lose
return false;
}
示例4: WorkBarPiano
// `J` Job Brothel - Bar
bool cJobManager::WorkBarPiano(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_WORKMUSIC;
stringstream ss; string girlName = girl->m_Realname; ss << girlName;
if (g_Girls.DisobeyCheck(girl, actiontype, brothel))
{
ss << " refused to work during the " << (Day0Night1 ? "night" : "day") << " shift.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
ss << " played the piano in the bar.";
g_Girls.UnequipCombat(girl); // put that shit away, you'll scare off the customers!
sGirl* singeronduty = g_Brothels.GetRandomGirlOnJob(0, JOB_SINGER, Day0Night1);
string singername = (singeronduty ? "Singer " + singeronduty->m_Realname + "" : "the Singer");
double wages = 20, tips = 0;
int work = 0;
int roll = g_Dice.d100();
double jobperformance = JP_BarPiano(girl, false);
if (jobperformance >= 245)
{
ss << " She plays with the grace of an angel. Customers come from miles around to listen to her play.\n\n";
wages += 155;
if (roll <= 20)
{
ss << girlName << "'s playing brought many patrons to tears as she played a song full of sadness.\n";
brothel->m_Happiness += 5;
}
else if (roll <= 40)
{
ss << "Nice melody fills the room when " << girlName << " is behind the piano.\n";
brothel->m_Happiness += 10;
}
else if (roll <= 60)
{
ss << "Knowing that she is good, " << girlName << " played all the tunes blindfolded.\n";
brothel->m_Fame += 10;
}
else if (roll <= 80)
{
ss << "Being confident in her skill, " << girlName << " played today using only one hand.\n";
brothel->m_Fame += 10;
}
else
{
ss << girlName << "'s soothing playing seems to glide over the noise and bustling of the bar.\n";
brothel->m_Happiness += 10;
}
}
else if (jobperformance >= 185)
{
ss << " She's unbelievable at this and is always getting praised by the customers for her playing skills.\n\n";
wages += 95;
if (roll <= 20)
{
ss << girlName << " begun to acquire her own following - a small crowd of people came in just to listen to her and buy drinks\n";
brothel->m_Fame += 5;
wages += 10;
}
else if (roll <= 40)
{
ss << "Her playing fills the room. Some customers hum the melody under their noses.\n";
brothel->m_Happiness += 5;
}
else if (roll <= 60)
{
ss << "After making a mistake she improvised a passage to the next song.\n";
}
else if (roll <= 80)
{
ss << "She plays without music sheets having all the songs memorized.\n";
brothel->m_Fame += 5;
}
else
{
ss << girlName << "'s soothing playing seems to glide over the noise and bustling of the bar.\n";
}
}
else if (jobperformance >= 145)
{
ss << " Her playing is really good and gets praised by the customers often.\n\n";
wages += 55;
if (roll <= 20)
{
ss << "Her playing was pleasing, if bland. Her rythem was nice, if slightly untrained.\n";
}
else if (roll <= 40)
{
ss << girlName << " doesn't have any trouble playing the piano.\n";
}
else if (roll <= 60)
{
ss << "Give " << girlName << " any kind of music sheet and she will play it. She is really good at this.\n";
brothel->m_Happiness += 5;
//.........这里部分代码省略.........
示例5: WorkCentreManager
// `J` Job Centre - General - Matron_Job - Full_Time_Job
bool cJobManager::WorkCentreManager(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_WORKMATRON;
// DisobeyCheck is done in the building flow.
girl->m_DayJob = girl->m_NightJob = JOB_CENTREMANAGER; // it is a full time job
stringstream ss; string girlName = girl->m_Realname; ss <<"Centre Manager "<< girlName;
int numgirls = brothel->m_NumGirls;
int wages = 0;
int tips = 0;
int enjoy = 0;
int conf = 0;
int happy = 0;
// Complications
int check = g_Dice.d100();
if (check < 10 && numgirls >(girl->service() + girl->confidence()) * 3)
{
enjoy -= (g_Dice % 6 + 5);
conf -= 5; happy -= 10;
ss << " was overwhelmed by the number of girls she was required to manage and broke down crying.";
}
else if (check < 10)
{
enjoy -= (g_Dice % 3 + 1);
conf -= -1; happy -= -3;
ss << " had trouble dealing with some of the girls.";
}
else if (check > 90)
{
enjoy += (g_Dice % 3 + 1);
conf += 1; happy += 3;
ss << " enjoyed helping the girls with their lives.";
}
else
{
enjoy += (g_Dice % 3 - 1);
ss << " went about her day as usual.";
}
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, Day0Night1);
// Improve girl
int xp = numgirls / 10, libido = 1, skill = 3;
if (girl->has_trait( "Quick Learner")) { skill += 1; xp += 5; }
else if (girl->has_trait( "Slow Learner")) { skill -= 1; xp -= 5; }
if (girl->has_trait( "Nymphomaniac")) libido += 2;
if (girl->has_trait( "Lesbian")) libido += numgirls / 20;
wages = int(float(100.0 + (((girl->get_skill(SKILL_SERVICE) + girl->get_stat(STAT_CHARISMA) + girl->get_stat(STAT_INTELLIGENCE) + girl->get_stat(STAT_CONFIDENCE) + girl->get_skill(SKILL_MEDICINE) + 50) / 50)*numgirls) * cfg.out_fact.matron_wages()));
girl->m_Tips = max(0, tips);
girl->m_Pay = max(0, wages);
if (conf>-1) conf += g_Dice%skill;
g_Girls.UpdateStat(girl, STAT_CONFIDENCE, conf);
g_Girls.UpdateStat(girl, STAT_HAPPINESS, happy);
g_Girls.UpdateStat(girl, STAT_EXP, g_Dice%xp + 5);
g_Girls.UpdateSkill(girl, SKILL_MEDICINE, g_Dice%skill);
g_Girls.UpdateSkill(girl, SKILL_SERVICE, g_Dice%skill + 2);
g_Girls.UpdateStatTemp(girl, STAT_LIBIDO, g_Dice%libido);
g_Girls.UpdateEnjoyment(girl, actiontype, enjoy);
g_Girls.PossiblyGainNewTrait(girl, "Charismatic", 30, actiontype, "She has worked as a matron long enough that she has learned to be more Charismatic.", Day0Night1);
g_Girls.PossiblyGainNewTrait(girl, "Psychic", 60, actiontype, "She has learned to handle the girls so well that you'd almost think she was Psychic.", Day0Night1);
return false;
}
示例6: WorkDoctor
// `J` Job Clinic - Staff
bool cJobManager::WorkDoctor(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_WORKDOCTOR;
bool SkipDisobey = (summary == "SkipDisobey");
stringstream ss; string girlName = girl->m_Realname;
if (g_Girls.HasTrait(girl, "AIDS"))
{
ss << "Health laws prohibit anyone with AIDS from working in the Medical profession so " << girlName << " was sent to the waiting room.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_WARNING);
girl->m_PrevDayJob = girl->m_PrevNightJob = girl->m_DayJob = girl->m_NightJob = JOB_CLINICREST;
return false;
}
if (girl->is_slave())
{
ss << "Slaves are not allowed to be Doctors so " << girlName << " was reassigned to being a Nurse.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_WARNING);
girl->m_PrevDayJob = girl->m_PrevNightJob = girl->m_DayJob = girl->m_NightJob = JOB_NURSE;
return false;
}
ss << girlName;
if (girl->medicine() < 50 || girl->intelligence() < 50)
{
ss << " does not have enough training to work as a Doctor. She has been reassigned to Internship so she can learn what she needs.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_WARNING);
girl->m_PrevDayJob = girl->m_PrevNightJob = girl->m_DayJob = girl->m_NightJob = JOB_INTERN;
return false;
}
if (!SkipDisobey) // `J` skip the disobey check because it has already been done in the building flow
{
if (g_Girls.DisobeyCheck(girl, actiontype, brothel)) // they refuse to work
{
ss << " refused to work during the " << (Day0Night1 ? "night" : "day") << " shift.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
}
ss << " worked as a Doctor.\n";
g_Girls.UnequipCombat(girl); // put that shit away, you'll scare off the patients!
int enjoy = 0, wages = 100;
// this will be added to the clinic's code eventually - for now it is just used for her pay
int patients = 0; // `J` how many patients the Doctor can see in a shift
// Doctor is a full time job now
girl->m_DayJob = girl->m_NightJob = JOB_DOCTOR;
double jobperformance = JP_Doctor(girl, false);
//enjoyed the work or not
int roll = g_Dice.d100();
if (roll <= 10)
{
enjoy -= g_Dice % 3 + 1;
jobperformance *= 0.9;
ss << "Some of the patients abused her during the shift.\n";
}
else if (roll >= 90)
{
enjoy += g_Dice % 3 + 1;
jobperformance *= 1.1;
ss << "She had a pleasant time working.\n";
}
else
{
enjoy += g_Dice % 2;
ss << "Otherwise, the shift passed uneventfully.\n";
}
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, Day0Night1);
patients += (int)(jobperformance / 10); // `J` 1 patient per 10 point of performance
g_Clinic.m_Doctor_Patient_Time += patients;
/* `J` this will be a place holder until a better payment system gets done
* this does not take into account any of your girls in surgery
*/
int earned = 0;
for (int i = 0; i < patients; i++)
{
earned += g_Dice % 150 + 50; // 50-200 gold per customer
}
brothel->m_Finance.clinic_income(earned);
ss.str("");
ss << girlName << " earned " << earned << " gold from taking care of " << patients << " patients.\n";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, Day0Night1);
girl->m_Pay += wages + (patients * 10);
// Improve stats
int xp = 10 + (patients / 2), libido = 1, skill = 1 + (patients / 3);
if (g_Girls.HasTrait(girl, "Quick Learner")) { skill += 1; xp += 3; }
else if (g_Girls.HasTrait(girl, "Slow Learner")) { skill -= 1; xp -= 3; }
if (g_Girls.HasTrait(girl, "Nymphomaniac")) { libido += 2; }
if (g_Girls.HasTrait(girl, "Lesbian")) { libido += patients / 2; }
//.........这里部分代码省略.........
示例7: WorkGardener
// `J` Job Farm - Laborers
bool cJobManager::WorkGardener(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
#pragma region // Job setup //
int actiontype = ACTION_WORKFARM;
stringstream ss; string girlName = girl->m_Realname; ss << girlName;
int roll_a = g_Dice.d100(), roll_b = g_Dice.d100(), roll_c = g_Dice.d100();
if (g_Girls.DisobeyCheck(girl, actiontype, brothel)) // they refuse to work
{
ss << " refused to work during the " << (Day0Night1 ? "night" : "day") << " shift.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
ss << " worked as a gardener on the farm.\n\n";
g_Girls.UnequipCombat(girl); // put that shit away, you'll scare off the customers!
double wages = 20, tips = 0;
int enjoy = 0;
int imagetype = IMGTYPE_FARM;
int msgtype = Day0Night1;
#pragma endregion
#pragma region // Job Performance //
double jobperformance = JP_Gardener(girl, false);
if (jobperformance >= 245)
{
ss << " She must be the perfect at this.";
wages += 155;
}
else if (jobperformance >= 185)
{
ss << " She's unbelievable at this.";
wages += 95;
}
else if (jobperformance >= 145)
{
ss << " She's good at this job.";
wages += 55;
}
else if (jobperformance >= 100)
{
ss << " She made a few mistakes but overall she is okay at this.";
wages += 15;
}
else if (jobperformance >= 70)
{
ss << " She was nervous and made a few mistakes. She isn't that good at this.";
wages -= 5;
}
else
{
ss << " She was nervous and constantly making mistakes. She really isn't very good at this job.";
wages -= 15;
}
ss << "\n\n";
#pragma endregion
#pragma region // Enjoyment and Tiredness //
int roll = g_Dice.d100();
//enjoyed the work or not
if (roll <= 5)
{
ss << "Some of the patrons abused her during the shift.";
enjoy -= 1;
}
else if (roll <= 25)
{
ss << "She had a pleasant time working.";
enjoy += 3;
}
else
{
ss << "Otherwise, the shift passed uneventfully.";
enjoy += 1;
}
#pragma endregion
#pragma region // Create Items //
// `J` Farm Bookmark - adding in items that can be gathered in the farm
int flowerpower = g_Dice % 3;
/* */if (jobperformance < 70) flowerpower -= 1;
else if (jobperformance < 100) flowerpower += 0;
else if (jobperformance < 145) flowerpower += 1;
else if (jobperformance < 185) flowerpower += 2;
else if (jobperformance < 245) flowerpower += 3;
else /* */ flowerpower += 4;
string additems[8] = { "", "", "", "", "", "", "", "" };
int additemnum = 0;
//.........这里部分代码省略.........
示例8: WorkFilmAction
// Job Movie Studio - // nice Job - Action Scene
//This film will use her combat and magic skills, and will be more popular if she's hot.
bool cJobManager::WorkFilmAction(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_WORKMOVIE;
//Taken care of in building flow, leaving it in for robustness
if (g_Studios.GetNumGirlsOnJob(0, JOB_CAMERAMAGE, SHIFT_NIGHT) == 0 || g_Studios.GetNumGirlsOnJob(0, JOB_CRYSTALPURIFIER, SHIFT_NIGHT) == 0)
{
girl->m_Events.AddMessage("There was no crew to film the scene, so she took the day off", IMGTYPE_PROFILE, EVENT_NOWORK);
return false;
}
stringstream ss;
string girlName = girl->m_Realname;
int wages = 50;
int tips = 0;
int enjoy = 0;
int bonus = 0;
double jobperformance = JP_FilmAction(girl, false);
//g_Girls.UnequipCombat(girl); // not for actress (yet)
ss << girlName;
int roll = g_Dice.d100();
if (roll <= 10 && g_Girls.DisobeyCheck(girl, ACTION_WORKMOVIE, brothel))
{
ss << " refused to shoot an action scenes today.\n";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
else if (g_Girls.GetStat(girl, STAT_TIREDNESS) > 75)
{
ss << " was too tired to take part in an action scene.\n\n";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
else ss << " worked as an actress in an action scene.\n\n";
//JOB
ss << girlName;
int OPTIONS = 3; //Right now this number of options applies for all levels of job
if (jobperformance >= 350)
{
ss << " made an outstanding action scene,";
AddStory(&ss);
ss << " It will definitely win her some fans.";
g_Girls.UpdateStat(girl, STAT_FAME, 3);
bonus = 12;
}
else if (jobperformance >= 245)
{
ss << " made a great action scene,";
AddStory(&ss);
ss << " It should win her some fans.";
g_Girls.UpdateStat(girl, STAT_FAME, 2);
bonus = 6;
}
else if (jobperformance >= 185)
{
ss << " made a fairly good action scene,";
AddStory(&ss);
ss << " Her fans will enjoy it.";
bonus = 4;
g_Girls.UpdateStat(girl, STAT_FAME, 1);
}
else if (jobperformance >= 145)
{
ss << " made an uninspired action scene,";
AddStory(&ss);
ss << " Her diehard fans might enjoy it.";
bonus = 2;
}
else if (jobperformance >= 100)
{
ss << " made a weak action scene,";
AddStory(&ss);
bonus = 1;
ss << "\nThe CamerMage advised " << girlName << " how to improve her performance";
if (g_Dice.percent(40))
{
ss << " and her scene got a little better after this.";
bonus++;
}
else
{
ss << ", but she wouldn't listen.";
}
}
else
{
ss << " made an awful action scene,";
AddStory(&ss);
ss << " Even her fans will hate it.";
g_Girls.UpdateStat(girl, STAT_FAME, -1);
}
ss << "\n";
//Enjoyed? If she performed well, she'd should have enjoyed it.
//.........这里部分代码省略.........
示例9: Update
//.........这里部分代码省略.........
else
{
ss << gettext(" and lost.");
curr->m_NumGangs--;
}
delete rG1; rG1 = 0; // cleanup
}
else
{
num = (g_Dice % 4) + 1; // can do more damage if not fighting another gang
}
if (num > 0)
{
if (rival->m_BusinessesExtort > 0)
{
rival->m_BusinessesExtort -= num;
if (rival->m_BusinessesExtort < 0)
rival->m_BusinessesExtort = 0;
}
if (rival->m_Gold > 0)
{
long gold = (g_Dice % 2000) + 45; // get a random ammount
if ((rival->m_Gold - gold) > 0) // and if they have more than that
{
rival->m_Gold -= gold; // take it
}
else // but if not
{
gold = rival->m_Gold; // take all they have
rival->m_Gold = 0;
}
income += gold;
}
int buildinghit = g_Dice.d100() - num;
if (rival->m_NumBrothels > 0 && buildinghit < 10 + (rival->m_NumBrothels * 2))
{ // 10% base + 2% per brothel
rival->m_NumBrothels--;
rival->m_Power--;
ss << "\nThey destroyed one of their Brothels.";
}
else if (rival->m_NumGamblingHalls > 0 && buildinghit < 30 + (rival->m_NumGamblingHalls * 2))
{ // 20% base + 2% per hall
rival->m_NumGamblingHalls--;
ss << "\nThey destroyed one of their Gambling Halls.";
}
else if (rival->m_NumBars > 0 && buildinghit < 60 + (rival->m_NumBars * 2))
{ // 60% base + 2% per bar
rival->m_NumBars--;
ss << "\nThey destroyed one of their Bars.";
}
}
g_MessageQue.AddToQue(ss.str(), 0);
}
}
}
}break;
case MISS_CAPTUREGIRL: // take girls from rivals
{
}break;
case MISS_KIDNAPP: // get new girls
{
示例10: WorkFilmStagehand
// `J` Job Movie Studio - Crew - job_is_cleaning
bool cJobManager::WorkFilmStagehand(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_WORKMOVIE;
stringstream ss; string girlName = girl->m_Realname; ss << girlName;
int roll_a = g_Dice.d100(), roll_b = g_Dice.d100(), roll_c = g_Dice.d100();
if (roll_a <= 50 && (g_Girls.DisobeyCheck(girl, ACTION_WORKMOVIE, brothel) || g_Girls.DisobeyCheck(girl, ACTION_WORKCLEANING, brothel)))
{
ss << " refused to work as a stagehand today.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
ss << " worked as a stagehand.\n\n";
cConfig cfg;
g_Girls.UnequipCombat(girl); // not for studio crew
int wages = 50;
int enjoyc = 0, enjoym = 0;
bool filming = true;
bool playtime = false;
int imagetype = IMGTYPE_PROFILE;
// `J` - jobperformance and CleanAmt need to be worked out specially for this job.
int jobperformance = 0;
int CleanAmt = ((g_Girls.GetSkill(girl, SKILL_SERVICE) / 10) + 5) * 5;
if (g_Studios.GetNumGirlsOnJob(0, JOB_CAMERAMAGE, SHIFT_NIGHT) == 0 ||
g_Studios.GetNumGirlsOnJob(0, JOB_CRYSTALPURIFIER, SHIFT_NIGHT) == 0 ||
g_Studios.Num_Actress(0) < 1)
{
ss << "There were no scenes being filmed, so she just cleaned the set.\n\n";
filming = false;
CleanAmt *= 2;
imagetype = IMGTYPE_MAID;
}
if (g_Girls.HasTrait(girl, "Director")) { CleanAmt -= 10; jobperformance += 15; }
if (g_Girls.HasTrait(girl, "Actress")) { CleanAmt += 0; jobperformance += 10; }
if (g_Girls.HasTrait(girl, "Porn Star")) { CleanAmt += 0; jobperformance += 5; }
if (g_Girls.HasTrait(girl, "Flight")) { CleanAmt += 20; jobperformance += 10; }
if (g_Girls.HasTrait(girl, "Maid")) { CleanAmt += 20; jobperformance += 2; }
if (g_Girls.HasTrait(girl, "Powerful Magic")) { CleanAmt += 10; jobperformance += 10; }
if (g_Girls.HasTrait(girl, "Strong Magic")) { CleanAmt += 5; jobperformance += 5; }
if (g_Girls.HasTrait(girl, "Handyman")) { CleanAmt += 5; jobperformance += 10; }
if (g_Girls.HasTrait(girl, "Waitress")) { CleanAmt += 5; jobperformance += 5; }
if (g_Girls.HasTrait(girl, "Agile")) { CleanAmt += 5; jobperformance += 10; }
if (g_Girls.HasTrait(girl, "Fleet of Foot")) { CleanAmt += 2; jobperformance += 5; }
if (g_Girls.HasTrait(girl, "Strong")) { CleanAmt += 5; jobperformance += 10; }
if (g_Girls.HasTrait(girl, "Assassin")) { CleanAmt += 1; jobperformance += 1; }
if (g_Girls.HasTrait(girl, "Psychic")) { CleanAmt += 2; jobperformance += 5; }
if (g_Girls.HasTrait(girl, "Manly")) { CleanAmt += 1; jobperformance += 1; }
if (g_Girls.HasTrait(girl, "Tomboy")) { CleanAmt += 2; jobperformance += 2; }
if (g_Girls.HasTrait(girl, "Optimist")) { CleanAmt += 1; jobperformance += 1; }
if (g_Girls.HasTrait(girl, "Sharp-Eyed")) { CleanAmt += 1; jobperformance += 5; }
if (g_Girls.HasTrait(girl, "Giant")) { CleanAmt += 2; jobperformance += 2; }
if (g_Girls.HasTrait(girl, "Prehensile Tail")) { CleanAmt += 3; jobperformance += 3; }
if (g_Girls.HasTrait(girl, "Blind")) { CleanAmt -= 20; jobperformance -= 20; }
if (g_Girls.HasTrait(girl, "Queen")) { CleanAmt -= 20; jobperformance -= 10; }
if (g_Girls.HasTrait(girl, "Princess")) { CleanAmt -= 10; jobperformance -= 5; }
if (g_Girls.HasTrait(girl, "Mind Fucked")) { CleanAmt -= 10; jobperformance -= 5; }
if (g_Girls.HasTrait(girl, "Bimbo")) { CleanAmt -= 5; jobperformance -= 5; }
if (g_Girls.HasTrait(girl, "Retarded")) { CleanAmt -= 5; jobperformance -= 5; }
if (g_Girls.HasTrait(girl, "Smoker")) { CleanAmt -= 1; jobperformance -= 1; }
if (g_Girls.HasTrait(girl, "Clumsy")) { CleanAmt -= 5; jobperformance -= 5; }
if (g_Girls.HasTrait(girl, "Delicate")) { CleanAmt -= 1; jobperformance -= 1; }
if (g_Girls.HasTrait(girl, "Elegant")) { CleanAmt -= 5; jobperformance -= 1; }
if (g_Girls.HasTrait(girl, "Malformed")) { CleanAmt -= 1; jobperformance -= 1; }
if (g_Girls.HasTrait(girl, "Massive Melons")) { CleanAmt -= 1; jobperformance -= 1; }
if (g_Girls.HasTrait(girl, "Abnormally Large Boobs")) { CleanAmt -= 3; jobperformance -= 1; }
if (g_Girls.HasTrait(girl, "Titanic Tits")) { CleanAmt -= 5; jobperformance -= 1; }
if (g_Girls.HasTrait(girl, "Broken Will")) { CleanAmt -= 5; jobperformance -= 10; }
if (g_Girls.HasTrait(girl, "Pessimist")) { CleanAmt -= 1; jobperformance -= 1; }
if (g_Girls.HasTrait(girl, "Meek")) { CleanAmt -= 2; jobperformance -= 2; }
if (g_Girls.HasTrait(girl, "Nervous")) { CleanAmt -= 2; jobperformance -= 3; }
if (g_Girls.HasTrait(girl, "Dependant")) { CleanAmt -= 5; jobperformance -= 5; }
if (g_Girls.HasTrait(girl, "Bad Eyesight")) { CleanAmt -= 5; jobperformance -= 5; }
if (roll_a <= 10)
{
enjoyc -= g_Dice % 3 + 1; if (filming) enjoym -= g_Dice % 3 + 1;
CleanAmt = int(CleanAmt * 0.8);
ss << "She did not like working in the studio today.";
}
else if (roll_a >= 90)
{
enjoyc += g_Dice % 3 + 1; if (filming) enjoym += g_Dice % 3 + 1;
CleanAmt = int(CleanAmt * 1.1);
ss << "She had a great time working today.";
}
else
{
enjoyc += max(0, g_Dice % 3 - 1); if (filming) enjoym += max(0, g_Dice % 3 - 1);
ss << "Otherwise, the shift passed uneventfully.";
}
jobperformance += enjoyc + enjoym;
//.........这里部分代码省略.........
示例11: WorkFarmHand
// `J` Job Farm - Staff - job_is_cleaning
bool cJobManager::WorkFarmHand(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_WORKFARM; int actiontype2 = ACTION_WORKCLEANING;
stringstream ss; string girlName = girl->m_Realname; ss << girlName;
int roll_a = g_Dice.d100(), roll_b = g_Dice.d100(), roll_c = g_Dice.d100();
if (roll_a <= 50 && (g_Girls.DisobeyCheck(girl, actiontype, brothel) || g_Girls.DisobeyCheck(girl, actiontype2, brothel)))
{
ss << " refused to work on the farm.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
ss << " worked cleaning and repairing the farm.\n\n";
g_Girls.UnequipCombat(girl); // put that shit away
double CleanAmt = ((g_Girls.GetSkill(girl, SKILL_SERVICE) / 10) + 5) * 10;
CleanAmt += JP_FarmHand(girl, false);
int enjoyC = 0, enjoyF = 0;
double wages = 0, tips = 0;
bool playtime = false;
if (roll_a <= 10)
{
enjoyC -= g_Dice % 3; enjoyF -= g_Dice % 3;
CleanAmt = CleanAmt * 0.8;
/* */if (roll_b < 30) ss << "She spilled a bucket of something unpleasant all over herself.";
else if (roll_b < 60) ss << "She stepped in something unpleasant.";
else /* */ ss << "She did not like working on the farm today.";
}
else if (roll_a >= 90)
{
enjoyC += g_Dice % 3; enjoyF += g_Dice % 3;
CleanAmt = CleanAmt * 1.1;
/* */if (roll_b < 50) ss << "She cleaned the building while humming a pleasant tune.";
else /* */ ss << "She had a great time working today.";
}
else
{
enjoyC += g_Dice % 2; enjoyF += g_Dice % 2;
ss << "The shift passed uneventfully.";
}
ss << "\n\n";
// slave girls not being paid for a job that normally you would pay directly for do less work
if ((girl->is_slave() && !cfg.initial.slave_pay_outofpocket()))
{
CleanAmt = CleanAmt * 0.9;
wages = 0;
}
else
{
wages = int(CleanAmt); // `J` Pay her based on how much she cleaned
}
// `J` if she can clean more than is needed, she has a little free time after her shift
if (brothel->m_Filthiness < CleanAmt / 2) playtime = true;
ss << "\n\nCleanliness rating improved by " << int(CleanAmt);
if (playtime) // `J` needs more variation
{
ss << "\n\n" << girlName << " finished her cleaning early so she ";
if (Day0Night1 == SHIFT_DAY && roll_c % 3 == 1) // 33% chance she will watch the sunset when working day shift
{
ss << "sat beneath an oak tree and watched the sunset.";
g_Girls.UpdateStat(girl, STAT_TIREDNESS, -((g_Dice % 5) + 2));
}
else if (roll_c < 25)
{
ss << "played with the baby animals a bit.";
g_Girls.UpdateSkill(girl, SKILL_ANIMALHANDLING, (g_Dice % 2) + 1);
}
else if (roll_c < 50)
{
ss << "played in the dirt a bit.";
g_Girls.UpdateSkill(girl, SKILL_FARMING, (g_Dice % 2));
}
else
{
ss << "sat in a rocking chair on the farm house front porch whittling.";
g_Girls.UpdateSkill(girl, SKILL_CRAFTING, (g_Dice % 3));
g_Girls.UpdateStat(girl, STAT_TIREDNESS, -(g_Dice % 3));
}
g_Girls.UpdateStat(girl, STAT_HAPPINESS, (g_Dice % 4) + 2);
}
#if 0
// `J` Farm Bookmark - adding in items that can be created in the farm
//.........这里部分代码省略.........
示例12: WorkFilmDirector
// `J` Job Movie Studio - Crew - Matron_Job - Full_Time_Job
bool cJobManager::WorkFilmDirector(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_WORKMATRON;
// DisobeyCheck is done in the building flow.
stringstream ss; string girlName = girl->m_Realname;
g_Studios.m_DirectorName = girl->m_Realname;
ss << girlName << " worked as a film director.\n\n";
g_Girls.UnequipCombat(girl); // not for studio crew
int wages = 50;
int tips = 0;
int enjoy = 0;
int numgirls = brothel->m_NumGirls;
int roll = g_Dice.d100();
if (roll <= 10)
{
enjoy -= g_Dice % 3 + 1;
ss << "She did not like working in the studio today.\n\n";
}
else if (roll >= 90)
{
enjoy += g_Dice % 3 + 1;
ss << "She had a great time working today.\n\n";
}
else
{
enjoy += g_Dice % 2;
ss << "Otherwise, the shift passed uneventfully.\n\n";
}
double jobperformance = JP_FilmDirector(girl, false);
jobperformance += enjoy * 2;
/* */if (jobperformance > 0) ss << "She helped improve the scene " << (int)jobperformance << "% with her Directing skills. \n";
else if (jobperformance < 0) ss << "She did a bad job today, she reduced the scene quality " << (int)jobperformance << "% with her poor performance. \n";
else /* */ ss << "She did not really help the scene quality.\n";
wages += int(float(100.0 + (((girl->get_skill(SKILL_SERVICE) + girl->get_stat(STAT_CHARISMA) + girl->get_stat(STAT_INTELLIGENCE) + girl->get_stat(STAT_CONFIDENCE) + girl->get_skill(SKILL_MEDICINE) + 50) / 50)*numgirls) * cfg.out_fact.matron_wages()));
girl->m_Tips = max(0, tips);
girl->m_Pay = max(0, wages);
g_Studios.m_DirectorQuality += (int)jobperformance;
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, SHIFT_NIGHT);
// Improve girl
int xp = numgirls / 10, libido = 1, skill = 3, fame = (int)(jobperformance / 50);
if (girl->has_trait( "Quick Learner")) { skill += 1; xp += 5; }
else if (girl->has_trait( "Slow Learner")) { skill -= 1; xp -= 5; }
if (girl->has_trait( "Nymphomaniac")) libido += 2;
if (girl->has_trait( "Lesbian")) libido += numgirls / 20;
g_Girls.UpdateStat(girl, STAT_EXP, g_Dice%xp + 5);
g_Girls.UpdateStat(girl, STAT_FAME, g_Dice%fame);
g_Girls.UpdateStat(girl, STAT_CHARISMA, g_Dice%skill);
g_Girls.UpdateSkill(girl, SKILL_SERVICE, g_Dice%skill + 2);
g_Girls.UpdateStatTemp(girl, STAT_LIBIDO, g_Dice%libido);
g_Girls.PossiblyGainNewTrait(girl, "Charismatic", 30, actiontype, "She has worked as a matron long enough that she has learned to be more Charismatic.", Day0Night1);
g_Girls.PossiblyGainNewTrait(girl, "Psychic", 90, actiontype, "She has learned to handle the girls so well that you'd almost think she was Psychic.", Day0Night1);
return false;
}
示例13: WorkBrewer
// `J` Job Farm - Producers
bool cJobManager::WorkBrewer(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
#pragma region // Job setup //
int actiontype = ACTION_WORKCOOKING;
stringstream ss; string girlName = girl->m_Realname; ss << girlName;
int roll_a = g_Dice.d100(), roll_b = g_Dice.d100(), roll_c = g_Dice.d100();
if (g_Girls.DisobeyCheck(girl, actiontype, brothel)) // they refuse to work
{
ss << " refused to work during the " << (Day0Night1 ? "night" : "day") << " shift.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
ss << " worked as a brewer on the farm.\n\n";
g_Girls.UnequipCombat(girl); // put that shit away, you'll scare off the customers!
double wages = 20, tips = 0;
int enjoy = 0;
int imagetype = IMGTYPE_COOK;
int msgtype = Day0Night1;
#pragma endregion
#pragma region // Job Performance //
double jobperformance = JP_Brewer(girl, false);
double drinksproduced = jobperformance;
if (jobperformance >= 245)
{
ss << " She must be the perfect at this.";
wages += 155;
}
else if (jobperformance >= 185)
{
ss << " She's unbelievable at this.";
wages += 95;
}
else if (jobperformance >= 145)
{
ss << " She's good at this job.";
wages += 55;
}
else if (jobperformance >= 100)
{
ss << " She made a few mistakes but overall she is okay at this.";
wages += 15;
}
else if (jobperformance >= 70)
{
ss << " She was nervous and made a few mistakes. She isn't that good at this.";
wages -= 5;
}
else
{
ss << " She was nervous and constantly making mistakes. She really isn't very good at this job.";
wages -= 15;
}
ss << "\n\n";
#pragma endregion
#pragma region // Enjoyment and Tiredness //
if (wages < 0) wages = 0;
#if 1
//enjoyed the work or not
if (roll_a <= 5)
{
ss << "\nSome of the patrons abused her during the shift.";
enjoy -= 1;
}
else if (roll_a <= 25)
{
ss << "\nShe had a pleasant time working.";
enjoy += 3;
}
else
{
ss << "\nOtherwise, the shift passed uneventfully.";
enjoy += 1;
}
#else
if (roll_a <= 10)
{
enjoyC -= g_Dice % 3; enjoyF -= g_Dice % 3;
CleanAmt = int(CleanAmt * 0.8);
/* */if (roll_b < 30) ss << "She spilled a bucket of something unpleasant all over herself.";
else if (roll_b < 60) ss << "She stepped in something unpleasant.";
else /* */ ss << "She did not like working on the farm today.";
}
else if (roll_a >= 90)
{
enjoyC += g_Dice % 3; enjoyF += g_Dice % 3;
CleanAmt = int(CleanAmt * 1.1);
/* */if (roll_b < 50) ss << "She cleaned the building while humming a pleasant tune.";
//.........这里部分代码省略.........
示例14: WorkSleazyBarmaid
// `J` Job Brothel - Sleazy Bar
bool cJobManager::WorkSleazyBarmaid(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
#pragma region // Job setup //
int actiontype = ACTION_WORKCLUB;
stringstream ss; string girlName = girl->m_Realname; ss << girlName;
int roll_a = g_Dice.d100(), roll_b = g_Dice.d100(), roll_c = g_Dice.d100();
if (g_Girls.DisobeyCheck(girl, actiontype, brothel))
{
ss << " refused to work during the " << (Day0Night1 ? "night" : "day") << " shift.";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
ss << " worked as a bartender in the strip club.\n\n";
g_Girls.UnequipCombat(girl); // put that shit away, you'll scare off the customers!
int HateLove = 0;
HateLove = g_Girls.GetStat(girl, STAT_PCLOVE) - g_Girls.GetStat(girl, STAT_PCHATE);
double wages = 15, tips = 0;
int enjoy = 0, fame = 0;
int imagetype = IMGTYPE_ECCHI;
int msgtype = Day0Night1;
#pragma endregion
#pragma region // Job Performance //
double jobperformance = JP_SleazyBarmaid(girl, false);
if (jobperformance >= 245)
{
ss << " She must be the perfect bar tender customers go on and on about her and always come to see her when she works.\n\n";
wages += 155;
}
else if (jobperformance >= 185)
{
ss << " She's unbelievable at this and is always getting praised by the customers for her work.\n\n";
wages += 95;
}
else if (jobperformance >= 145)
{
ss << " She's good at this job and gets praised by the customers often.\n\n";
wages += 55;
}
else if (jobperformance >= 100)
{
ss << " She made a few mistakes but overall she is okay at this.\n\n";
wages += 15;
}
else if (jobperformance >= 70)
{
ss << " She was nervous and made a few mistakes. She isn't that good at this.\n\n";
wages -= 5;
}
else
{
ss << " She was nervous and constantly making mistakes. She really isn't very good at this job.\n\n";
wages -= 15;
}
//base tips, aprox 10-20% of base wages
tips += (((10 + jobperformance / 22) * wages) / 100);
//try and add randomness here
if (g_Girls.GetStat(girl, STAT_BEAUTY) > 85 && g_Dice.percent(20))
{
ss << "Stunned by her beauty a customer left her a great tip.\n\n"; tips += 25;
}
if (g_Girls.GetStat(girl, STAT_BEAUTY) > 99 && g_Dice.percent(5))
{
ss << girlName << " looked absolutely stunning during her shift and was unable to hide it. Instead of her ass or tits, the patrons couldn't glue their eyes off her face, and spent a lot more than usual on tipping her.\n"; tips += 50;
}
if (g_Girls.GetStat(girl, STAT_CHARISMA) > 85 && g_Dice.percent(20))
{
ss << girlName << " surprised a couple of gentlemen discussing some complicated issue by her insightful comments when she was taking her order. They decided her words were worth a heavy tip.\n"; tips += 35;
}
if (g_Girls.HasTrait(girl, "Clumsy") && g_Dice.percent(15))
{
ss << "Her clumsy nature caused her to spill a drink on a customer resulting in them storming off without paying.\n"; wages -= 15;
}
if (g_Girls.HasTrait(girl, "Pessimist") && g_Dice.percent(5))
{
if (jobperformance < 125)
{
ss << "Her pessimistic mood depressed the customers making them tip less.\n"; tips -= 10;
}
else
{
ss << girlName << " was in a poor mood so the patrons gave her a bigger tip to try and cheer her up.\n"; tips += 10;
}
}
if (g_Girls.HasTrait(girl, "Optimist") && g_Dice.percent(5))
//.........这里部分代码省略.........
示例15: WorkFilmBondage
// `J` Job Movie Studio - Actress
bool cJobManager::WorkFilmBondage(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary)
{
int actiontype = ACTION_WORKMOVIE;
// No film crew.. then go home // `J` this will be taken care of in building flow, leaving it in for now
if (g_Studios.GetNumGirlsOnJob(0, JOB_CAMERAMAGE, SHIFT_NIGHT) == 0 || g_Studios.GetNumGirlsOnJob(0, JOB_CRYSTALPURIFIER, SHIFT_NIGHT) == 0)
{
girl->m_Events.AddMessage("There was no crew to film the scene, so she took the day off", IMGTYPE_PROFILE, EVENT_NOWORK);
return false;
}
stringstream ss;
string girlName = girl->m_Realname;
int wages = 50;
int enjoy = 0;
int jobperformance = 0;
g_Girls.UnequipCombat(girl); // not for actress (yet)
ss << girlName << " worked as an actress filming BDSM scenes.\n\n";
int roll = g_Dice.d100();
if (roll <= 10 && g_Girls.DisobeyCheck(girl, ACTION_WORKMOVIE, brothel))
{
ss << "She refused to get beaten on film today.\n";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK);
return true;
}
else if (roll <= 10) { enjoy -= g_Dice % 3 + 1; ss << "She did not enjoy getting tied up and hurt today.\n\n"; }
else if (roll >= 90) { enjoy += g_Dice % 3 + 1; ss << "She had a great time getting spanked and whipped.\n\n"; }
else /* */{ enjoy += g_Dice % 2; ss << "She had just another day in the dungeon.\n\n"; }
jobperformance = enjoy * 2;
if (g_Girls.CheckVirginity(girl))
{
g_Girls.LoseVirginity(girl); // `J` updated for trait/status
jobperformance += 50;
ss << "She is no longer a virgin.\n";
}
sCustomer* Cust = new sCustomer; g_Customers.GetCustomer(Cust, brothel); Cust->m_Amount = 1;
if (Cust->m_IsWoman) // FemDom
{
jobperformance += 20;
/* */if (girl->has_trait("Lesbian")) jobperformance += 20;
else if (girl->has_trait("Straight")) jobperformance -= 20;
}
else
{
if (!girl->calc_pregnancy(Cust, false, 0.75))
g_MessageQue.AddToQue(girl->m_Realname + " has gotten pregnant", 0);
/* */if (girl->has_trait("Lesbian")) jobperformance -= 10;
else if (girl->has_trait("Straight")) jobperformance += 10;
}
// remaining modifiers are in the AddScene function --PP
int finalqual = g_Studios.AddScene(girl, SKILL_BDSM, jobperformance);
ss << "Her scene is valued at: " << finalqual << " gold.\n";
girl->m_Events.AddMessage(ss.str(), IMGTYPE_BDSM, Day0Night1);
// work out the pay between the house and the girl
if (girl->is_slave() && !cfg.initial.slave_pay_outofpocket())
{
wages = 0; // You own her so you don't have to pay her.
}
else
{
wages += finalqual * 2;
}
girl->m_Pay = wages;
// Improve stats
int xp = 10, skill = 3;
if (g_Girls.HasTrait(girl, "Quick Learner")) { skill += 1; xp += 3; }
else if (g_Girls.HasTrait(girl, "Slow Learner")) { skill -= 1; xp -= 3; }
g_Girls.UpdateStat(girl, STAT_EXP, xp);
g_Girls.UpdateSkill(girl, SKILL_PERFORMANCE, g_Dice%skill);
g_Girls.UpdateSkill(girl, SKILL_BDSM, g_Dice%skill + 1);
g_Girls.UpdateEnjoyment(girl, ACTION_SEX, enjoy);
g_Girls.UpdateEnjoyment(girl, ACTION_WORKMOVIE, enjoy);
//gain
g_Girls.PossiblyGainNewTrait(girl, "Fake Orgasm Expert", 50, ACTION_SEX, "She has become quite the faker.", Day0Night1);
g_Girls.PossiblyGainNewTrait(girl, "Masochist", 65, ACTION_SEX, girlName + " has turned into a Masochist from filming so many BDSM scenes.", Day0Night1);
g_Girls.PossiblyGainNewTrait(girl, "Slut", 80, ACTION_SEX, girlName + " has turned into quite a slut.", Day0Night1);
g_Girls.PossiblyGainNewTrait(girl, "Porn Star", 80, ACTION_WORKMOVIE, "She has performed in enough sex scenes that she has become a well known Porn Star.", Day0Night1);
//lose
delete Cust;
return false;
}