// `J` Job Movie Studio - Crew bool cJobManager::WorkCrystalPurifier(sGirl* girl, sBrothel* brothel, bool Day0Night1, string& summary) { int actiontype = ACTION_WORKMOVIE; bool SkipDisobey = (summary == "SkipDisobey"); stringstream ss; string girlName = girl->m_Realname; // 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; // not refusing } else if (g_Studios.Num_Actress(0) < 1) { girl->m_Events.AddMessage("There were no actresses to film, so she took the day off", IMGTYPE_PROFILE, EVENT_NOWORK); return false; // not refusing } // `J` added this to allow the Director to assign someone to this job without making it permanent if (girl->m_DayJob == JOB_FILMFREETIME) // the director sets the old job to dayjob when changing night job { ss << girlName << " was assigned to work as a crystal purifier"; } else { ss << "The Director assigned " << girlName << "to edit the scenes for the week"; } g_Girls.UnequipCombat(girl); // not for studio crew int roll = g_Dice.d100(); if (!SkipDisobey) // `J` skip the disobey check because it has already been done in the building flow { if (roll <= 10 && g_Girls.DisobeyCheck(girl, actiontype, brothel)) { if (girl->m_DayJob == JOB_FILMFREETIME) { ss << " but she refused to work."; girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_NOWORK); } else { ss << " but " << girlName; if (g_Studios.is_Actress_Job(girl->m_DayJob)) ss << " wanted to be part of the action instead of just watching it.\n"; else if (girl->m_DayJob == JOB_PROMOTER) ss << " preferred to sell the movies rather than edit them.\n"; else if (girl->m_DayJob == JOB_FLUFFER) ss << " wanted to see the action live instead of watching it afterwards.\n"; else if (girl->m_DayJob == JOB_STAGEHAND) ss << " wanted to clean instead of editing scenes.\n"; else if (girl->m_DayJob == JOB_CAMERAMAGE) ss << " preferred to film the scenes rather than edit them.\n"; girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, EVENT_BACKTOWORK); } return true; } } ss << ".\n\n"; int wages = 50; int enjoy = 0; 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_CrystalPurifier(girl, false); jobperformance += enjoy * 2; // 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())) { jobperformance *= 0.9; wages = 0; } else // work out the pay between the house and the girl { // `J` zzzzzz - need to change pay so it better reflects how well she edited the films wages += 20; int roll_max = girl->spirit() + girl->intelligence(); roll_max /= 4; wages += 10 + g_Dice%roll_max; } /* */if (jobperformance > 0) ss << "She helped improve the scene " << (int)jobperformance << "% with her production 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"; girl->m_Events.AddMessage(ss.str(), IMGTYPE_PROFILE, Day0Night1); g_Studios.m_PurifierQaulity += (int)jobperformance; girl->m_Pay = wages; // Improve stats int xp = 5, skill = 3, libido = 1; if (jobperformance > 5) skill += 1; 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_Dice % 2 == 1) g_Girls.UpdateStat(girl, STAT_INTELLIGENCE, g_Dice%skill); g_Girls.UpdateSkill(girl, SKILL_SERVICE, g_Dice%skill + 1); g_Girls.UpdateStat(girl, STAT_EXP, xp); g_Girls.UpdateStatTemp(girl, STAT_LIBIDO, libido); return false; }