// `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 c**k 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 c**k 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 O****m Expert", 50, ACTION_SEX, "She has become quite the faker.", Day0Night1); g_Girls.PossiblyGainNewTrait(girl, "S**t", 80, ACTION_SEX, girlName + " has turned into quite a s**t.", Day0Night1); g_Girls.PossiblyGainNewTrait(girl, "P**n Star", 80, ACTION_WORKMOVIE, "She has performed in enough sex scenes that she has become a well known P**n Star.", Day0Night1); //lose return false; }
// `J` Job Movie Studio - Actress bool cJobManager::WorkFilmBeast(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; } cConfig cfg; 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 scenes with beasts.\n\n"; int roll = g_Dice.d100(); if (roll <= 10 && g_Girls.DisobeyCheck(girl, ACTION_WORKMOVIE, brothel)) { ss << "She refused to f**k any beasts 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 enjoy letting the creature f**k her.\n\n"; } else if (roll >= 90) { enjoy += g_Dice % 3 + 1; ss << "She loved the feel of the creature on top of her.\n\n"; } else /* */{ enjoy += g_Dice % 2; ss << "She didn't do much else today.\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"; } // remaining modifiers are in the AddScene function --PP int finalqual = g_Studios.AddScene(girl, SKILL_BEASTIALITY, jobperformance); ss << "Her scene is valued at: " << finalqual << " gold.\n"; // mod: added check for number of beasts owned; otherwise, fake beasts could somehow inseminate the girl if (g_Brothels.GetNumBeasts() > 0) { if (!girl->calc_insemination(g_Brothels.GetPlayer(), false, 1.0)) g_MessageQue.AddToQue(girl->m_Realname + " has gotten inseminated", 0); } girl->m_Events.AddMessage(ss.str(), IMGTYPE_BEAST, 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_BEASTIALITY, g_Dice%skill + 1); g_Girls.UpdateEnjoyment(girl, ACTION_SEX, enjoy); g_Girls.UpdateEnjoyment(girl, ACTION_WORKMOVIE, enjoy); g_Girls.PossiblyGainNewTrait(girl, "Fake O****m Expert", 50, ACTION_SEX, "She has become quite the faker.", Day0Night1); g_Girls.PossiblyGainNewTrait(girl, "P**n Star", 80, ACTION_WORKMOVIE, "She has performed in enough sex scenes that she has become a well known P**n Star.", Day0Night1); return false; }
// 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. if (jobperformance >= 200) { enjoy += (g_Dice % 3 + 1); ss << "She loved performing on film today.\n\n"; } else if (jobperformance >= 100) { enjoy += g_Dice % 2; ss << "She enjoyed this performance.\n\n"; } else { enjoy -= (g_Dice % 3 + 2); ss << "She found this awkward and did not enjoy it.\n\n"; } // remaining modifiers are in the AddScene function --PP int finalqual = g_Studios.AddScene(girl, JOB_FILMACTION, bonus); ss << "Her scene is valued at: " << finalqual << " gold.\n"; girl->m_Events.AddMessage(ss.str(), IMGTYPE_COMBAT, 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_Tips = max(0, tips); girl->m_Pay = max(0, wages); // Improve stats int xp = 10, skill = 3, libido = 1; if (girl->has_trait( "Quick Learner")) { skill += 1; xp += 3; } else if (girl->has_trait( "Slow Learner")) { skill -= 1; xp -= 3; } if (girl->has_trait( "Nymphomaniac")) { libido += 2; } g_Girls.UpdateStat(girl, STAT_EXP, xp); g_Girls.UpdateSkill(girl, SKILL_PERFORMANCE, g_Dice%skill); g_Girls.UpdateSkill(girl, SKILL_COMBAT, g_Dice%skill + 1); g_Girls.UpdateSkill(girl, SKILL_MAGIC, g_Dice%skill + 1); g_Girls.UpdateStatTemp(girl, STAT_LIBIDO, libido); g_Girls.UpdateEnjoyment(girl, ACTION_COMBAT, enjoy); g_Girls.UpdateEnjoyment(girl, ACTION_WORKMOVIE, enjoy); //gain traits if (jobperformance >= 140 && g_Dice.percent(50)) { if (g_Girls.PossiblyGainNewTrait(girl, "Brawler", 60, ACTION_COMBAT, "She has performed in enough fight scenes that she has become quite a brawler.", Day0Night1)); else if (g_Girls.PossiblyGainNewTrait(girl, "Tough", 70, ACTION_COMBAT, "She has performed in enough fight scenes that she has become quite tough.", Day0Night1)); else if (g_Girls.PossiblyGainNewTrait(girl, "Agile", 80, ACTION_COMBAT, "She has performed martial arts scenes that she is becoming agile.", Day0Night1)); else (g_Girls.PossiblyGainNewTrait(girl, "Fleet of Foot", 90, ACTION_COMBAT, "She has performed so many action scenes that she has become fast on her feet.", Day0Night1)); } if (jobperformance >= 140 && g_Dice.percent(50)) { if (g_Girls.PossiblyGainNewTrait(girl, "Charismatic", 60, ACTION_WORKMOVIE, "She has performed in enough movie scenes that she has become charismatic.", Day0Night1)); else if (g_Girls.PossiblyGainNewTrait(girl, "Actress", 70, ACTION_WORKMOVIE, "She has performed in enough movie scenes that she has become a good actress.", Day0Night1)); else g_Girls.PossiblyGainNewTrait(girl, "Sexy Air", 80, ACTION_WORKSTRIP, girlName + " has been having to be sexy for so long she now reeks sexiness.", Day0Night1); } // nice job bonus------------------------------------------------------- //BONUS - Nice jobs show off her assets and make her happy, increasing fame and love. int MrNiceGuy = g_Dice % 6, MrFair = g_Dice % 6; MrNiceGuy = (MrNiceGuy + MrFair)/3; //Should come out around 1-2 most of the time. g_Girls.UpdateStat(girl, STAT_HAPPINESS, MrNiceGuy); g_Girls.UpdateStat(girl, STAT_FAME, MrNiceGuy); g_Girls.UpdateStat(girl, STAT_PCLOVE, MrNiceGuy); g_Girls.UpdateStat(girl, STAT_PCHATE, -MrNiceGuy); g_Girls.UpdateStat(girl, STAT_PCFEAR, -MrNiceGuy); The_Player->disposition(MrNiceGuy); //---------------------------------------------------------------------- return false; }
// `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 O****m Expert", 50, ACTION_SEX, "She has become quite the faker.", Day0Night1); g_Girls.PossiblyGainNewTrait(girl, "M*******t", 65, ACTION_SEX, girlName + " has turned into a M*******t from filming so many BDSM scenes.", Day0Night1); g_Girls.PossiblyGainNewTrait(girl, "S**t", 80, ACTION_SEX, girlName + " has turned into quite a s**t.", Day0Night1); g_Girls.PossiblyGainNewTrait(girl, "P**n Star", 80, ACTION_WORKMOVIE, "She has performed in enough sex scenes that she has become a well known P**n Star.", Day0Night1); //lose delete Cust; return false; }