// ----- Update & end of turn void cCentreManager::UpdateCentre() // Start_Building_Process_A { cTariff tariff; stringstream ss; string girlName; sBrothel* current = (sBrothel*)m_Parent; u_int restjob = JOB_CENTREREST; u_int matronjob = JOB_CENTREMANAGER; u_int firstjob = JOB_CENTREREST; u_int lastjob = JOB_THERAPY; current->m_Finance.zero(); current->m_AntiPregUsed = 0; m_Rehab_Patient_Time = 0; sGirl* cgirl = current->m_Girls; while (cgirl) { current->m_Filthiness++; if (cgirl->health() <= 0) // Remove any dead bodies from last week { current->m_Filthiness++; // `J` Death is messy sGirl* DeadGirl = 0; girlName = cgirl->m_Realname; DeadGirl = cgirl; // If there are more girls to process cgirl = (cgirl->m_Next) ? cgirl->m_Next : 0; // increase all the girls fear and hate of the player for letting her die (weather his fault or not) UpdateAllGirlsStat(current, STAT_PCFEAR, 2); UpdateAllGirlsStat(current, STAT_PCHATE, 1); ss.str(""); ss << girlName << " has died from her injuries, the other girls all fear and hate you a little more."; DeadGirl->m_Events.AddMessage(ss.str(), IMGTYPE_DEATH, EVENT_DANGER); g_MessageQue.AddToQue(ss.str(), COLOR_RED); ss.str(""); ss << girlName << " has died from her injuries. Her body will be removed by the end of the week."; DeadGirl->m_Events.AddMessage(ss.str(), IMGTYPE_DEATH, EVENT_SUMMARY); RemoveGirl(0, DeadGirl); DeadGirl = 0; // cleanup } else { cgirl->m_Events.Clear(); // Clear the girls' events from the last turn cgirl->where_is_she = 0; cgirl->m_InStudio = false; cgirl->m_InArena = false; cgirl->m_InCentre = true; cgirl->m_InClinic = false; cgirl->m_InFarm = false; cgirl->m_InHouse = false; cgirl->m_Pay = cgirl->m_Tips = 0; // `J` Check for out of building jobs and set yesterday jobs for everyone first if (cgirl->m_DayJob < firstjob || cgirl->m_DayJob > lastjob) cgirl->m_DayJob = restjob; if (cgirl->m_NightJob < firstjob || cgirl->m_NightJob > lastjob) cgirl->m_NightJob = restjob; if (cgirl->m_PrevDayJob != 255 && (cgirl->m_PrevDayJob < firstjob || cgirl->m_PrevDayJob > lastjob)) cgirl->m_PrevDayJob = 255; if (cgirl->m_PrevNightJob != 255 && (cgirl->m_PrevNightJob < firstjob || cgirl->m_PrevNightJob > lastjob)) cgirl->m_PrevNightJob = 255; cgirl->m_YesterDayJob = cgirl->m_DayJob; // `J` set what she did yesterday cgirl->m_YesterNightJob = cgirl->m_NightJob; // `J` set what she did yesternight cgirl->m_Refused_To_Work_Day = cgirl->m_Refused_To_Work_Night = false; string summary = ""; g_Girls.AddTiredness(cgirl); // `J` moved all girls add tiredness to one place do_food_and_digs(current, cgirl); // Brothel only update for girls accommodation level g_Girls.updateGirlAge(cgirl, true); // update birthday counter and age the girl g_Girls.HandleChildren(cgirl, summary); // handle pregnancy and children growing up g_Girls.updateSTD(cgirl); // health loss to STD's NOTE: Girl can die g_Girls.updateHappyTraits(cgirl); // Update happiness due to Traits NOTE: Girl can die updateGirlTurnBrothelStats(cgirl); // Update daily stats Now only runs once per day g_Girls.updateGirlTurnStats(cgirl); // Stat Code common to Dugeon and Brothel if (cgirl->m_JustGaveBirth) // if she gave birth, let her rest this week { if (cgirl->m_DayJob != restjob) cgirl->m_PrevDayJob = cgirl->m_DayJob; if (cgirl->m_NightJob != restjob) cgirl->m_PrevNightJob = cgirl->m_NightJob; cgirl->m_DayJob = cgirl->m_NightJob = restjob; } cgirl = cgirl->m_Next; } } UpdateGirls(current, 0); // Run the Day Shift UpdateGirls(current, 1); // Run the Nighty Shift if (current->m_Filthiness < 0) current->m_Filthiness = 0; if (current->m_SecurityLevel < 0) current->m_SecurityLevel = 0; g_Gold.brothel_accounts(current->m_Finance, current->m_id); cgirl = current->m_Girls; while (cgirl) { g_Girls.updateTemp(cgirl); // update temp stuff g_Girls.EndDayGirls(current, cgirl); cgirl = cgirl->m_Next; } }