diff --git a/Laptop/DropDown.cpp b/Laptop/DropDown.cpp index c6ebf292..2adeb089 100644 --- a/Laptop/DropDown.cpp +++ b/Laptop/DropDown.cpp @@ -209,7 +209,7 @@ DropDownBase::Create_Drop() usHeight = ( musAreaHeight - DEF_SCROLL_ARROW_HEIGHT - 4 ) / (mNumDisplayedEntries); for ( i = 0; iwornDesertCamo, sizeof(wornDesertCamo), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->snowCamo, sizeof(snowCamo), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->wornSnowCamo, sizeof(wornSnowCamo), sizeof(INT8), numBytesRead); + // Preserve old savegames by detecting if the assignment is not saved as FACILITY_ but really should be numBytesRead = ReadFieldByField(hFile, &this->sFacilityTypeOperated, sizeof(sFacilityTypeOperated), sizeof(INT16), numBytesRead); + if (this->sFacilityTypeOperated > 0) + { + if (this->bAssignment == DOCTOR) + this->bAssignment = FACILITY_DOCTOR; + else if (this->bAssignment == PATIENT) + this->bAssignment = FACILITY_PATIENT; + else if (this->bAssignment == REPAIR) + this->bAssignment = FACILITY_REPAIR; + } numBytesRead = ReadFieldByField(hFile, &this->bScopeMode, sizeof(bScopeMode), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bUnusedINT8_1, sizeof(bUnusedINT8_1), sizeof(INT8), numBytesRead ); numBytesRead = ReadFieldByField(hFile, &this->bUnusedINT8_2, sizeof(bUnusedINT8_2), sizeof(INT8), numBytesRead ); diff --git a/Strategic/Assignments.cpp b/Strategic/Assignments.cpp index 7bd89f0f..317e865b 100644 --- a/Strategic/Assignments.cpp +++ b/Strategic/Assignments.cpp @@ -722,7 +722,7 @@ void ChangeSoldiersAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment ) // HEADROCK HAM 3.6: Clean out new Facility Operation variable. pSoldier->sFacilityTypeOperated = -1; - if ( ( bAssignment == DOCTOR ) || ( bAssignment == PATIENT ) || ( bAssignment == ASSIGNMENT_HOSPITAL ) ) + if ( IS_PATIENT(bAssignment) || ( bAssignment == ASSIGNMENT_HOSPITAL ) ) { AddStrategicEvent( EVENT_BANDAGE_BLEEDING_MERCS, GetWorldTotalMin() + 1, 0 ); } @@ -2674,7 +2674,7 @@ SOLDIERTYPE *AnyDoctorWhoCanHealThisPatient( SOLDIERTYPE *pPatient, BOOLEAN fThi for ( cnt = 0, pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++,pTeamSoldier++) { // doctor? - if( ( pTeamSoldier->bActive ) && ( pTeamSoldier->bAssignment == DOCTOR ) ) + if( pTeamSoldier->bActive && IS_DOCTOR(pTeamSoldier->bAssignment) ) { if( CanSoldierBeHealedByDoctor( pPatient, pTeamSoldier, FALSE, fThisHour, FALSE, FALSE, FALSE ) == TRUE ) { @@ -3462,7 +3462,7 @@ void HandleDoctorsInSector( INT16 sX, INT16 sY, INT8 bZ ) { if( ( pTeamSoldier->sSectorX == sX ) && ( pTeamSoldier->sSectorY == sY ) && ( pTeamSoldier->bSectorZ == bZ ) ) { - if ( ( pTeamSoldier->bAssignment == DOCTOR ) && ( pTeamSoldier->flags.fMercAsleep == FALSE ) ) + if ( IS_DOCTOR(pTeamSoldier->bAssignment) && ( pTeamSoldier->flags.fMercAsleep == FALSE ) ) { MakeSureMedKitIsInHand( pTeamSoldier ); // character is in sector, check if can doctor, if so...heal people @@ -3472,13 +3472,13 @@ void HandleDoctorsInSector( INT16 sX, INT16 sY, INT8 bZ ) } } /* - if( ( pTeamSoldier->bAssignment == DOCTOR ) && ( pTeamSoldier->flags.fMercAsleep == FALSE ) ) + if( IS_DOCTOR(pTeamSoldier->bAssignment) && ( pTeamSoldier->flags.fMercAsleep == FALSE ) ) { MakeSureMedKitIsInHand( pTeamSoldier ); } // character is in sector, check if can doctor, if so...heal people - if( CanCharacterDoctor( pTeamSoldier ) && ( pTeamSoldier->bAssignment == DOCTOR ) && ( pTeamSoldier->flags.fMercAsleep == FALSE ) && EnoughTimeOnAssignment( pTeamSoldier ) ) + if( CanCharacterDoctor( pTeamSoldier ) && IS_DOCTOR(pTeamSoldier->bAssignment) && ( pTeamSoldier->flags.fMercAsleep == FALSE ) && EnoughTimeOnAssignment( pTeamSoldier ) ) { HealCharacters( pTeamSoldier, sX, sY, bZ ); } @@ -3506,7 +3506,7 @@ void UpdatePatientsWhoAreDoneHealing( void ) if( pTeamSoldier->bActive ) { // patient who doesn't need healing or curing - if ( (pTeamSoldier->bAssignment == PATIENT) && (pTeamSoldier->stats.bLife == pTeamSoldier->stats.bLifeMax) && pTeamSoldier->HasDisease(TRUE, TRUE) ) + if ( IS_PATIENT(pTeamSoldier->bAssignment) && !IS_DOCTOR(pTeamSoldier->bAssignment) && (pTeamSoldier->stats.bLife == pTeamSoldier->stats.bLifeMax) && pTeamSoldier->HasDisease(TRUE, TRUE) ) { // Flugente: stats can also be damaged if ( !gGameOptions.fFoodSystem || (gGameOptions.fFoodSystem && pSoldier->bFoodLevel > FoodMoraleMods[FOOD_NORMAL].bThreshold && pSoldier->bDrinkLevel > FoodMoraleMods[FOOD_NORMAL].bThreshold) ) @@ -3683,7 +3683,7 @@ BOOLEAN IsSoldierCloseEnoughToADoctor( SOLDIERTYPE *pPatient ) { // is a doctor - if( pSoldier->bAssignment == DOCTOR ) + if( IS_DOCTOR(pSoldier->bAssignment) ) { // the doctor is in the house @@ -3725,7 +3725,7 @@ BOOLEAN CanSoldierBeHealedByDoctor( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pDoctor, } // must be a patient or a doctor - if( ( pSoldier->bAssignment != PATIENT ) && ( pSoldier->bAssignment != DOCTOR ) && ( fIgnoreAssignment == FALSE ) ) + if ( !IS_PATIENT(pSoldier->bAssignment) && ( fIgnoreAssignment == FALSE ) ) { return(FALSE); } @@ -4123,16 +4123,16 @@ void HandleRepairmenInSector( INT16 sX, INT16 sY, INT8 bZ ) // set psoldier as first in merc ptrs pSoldier = MercPtrs[0]; - // will handle doctor/patient relationship in sector + // will handle repairman/client relationship in sector - // go through list of characters, find all doctors in sector + // go through list of characters, find all repairmen in sector for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; ++cnt, pTeamSoldier++) { if( pTeamSoldier->bActive ) { if( ( pTeamSoldier->sSectorX == sX ) && ( pTeamSoldier->sSectorY == sY ) && ( pTeamSoldier->bSectorZ == bZ) ) { - if ( ( pTeamSoldier->bAssignment == REPAIR ) && ( pTeamSoldier->flags.fMercAsleep == FALSE ) ) + if ( IS_REPAIR(pTeamSoldier->bAssignment) && ( pTeamSoldier->flags.fMercAsleep == FALSE ) ) { if ( MakeSureToolKitIsInHand( pTeamSoldier ) ) { @@ -5102,8 +5102,8 @@ void FatigueCharacter( SOLDIERTYPE *pSoldier ) { switch ( pSoldier->bAssignment ) { - case DOCTOR: - case REPAIR: + CASE_DOCTOR: + CASE_REPAIR: case TRAIN_TEAMMATE: case TRAIN_TOWN: break; @@ -5131,8 +5131,8 @@ void FatigueCharacter( SOLDIERTYPE *pSoldier ) { switch ( pSoldier->bAssignment ) { - case DOCTOR: - case REPAIR: + CASE_DOCTOR: + CASE_REPAIR: case TRAIN_TEAMMATE: if ( Chance( 60 ) ) HandleMoraleEvent( pSoldier, MORALE_PACIFIST_GAIN_NONCOMBAT, pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ); @@ -7481,15 +7481,15 @@ void MakeSoldiersTacticalAnimationReflectAssignment( SOLDIERTYPE *pSoldier ) if( ( pSoldier->bInSector ) && gfWorldLoaded && ( pSoldier->stats.bLife >= OKLIFE ) ) { // Set animation based on his assignment - if ( pSoldier->bAssignment == DOCTOR ) + if ( IS_DOCTOR(pSoldier->bAssignment) ) { SoldierInSectorDoctor( pSoldier, pSoldier->usStrategicInsertionData ); } - else if ( pSoldier->bAssignment == PATIENT ) + else if ( IS_PATIENT(pSoldier->bAssignment) ) { SoldierInSectorPatient( pSoldier, pSoldier->usStrategicInsertionData ); } - else if ( pSoldier->bAssignment == REPAIR ) + else if ( IS_REPAIR(pSoldier->bAssignment) ) { SoldierInSectorRepair( pSoldier, pSoldier->usStrategicInsertionData ); } @@ -7525,7 +7525,7 @@ void AssignmentDone( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote, BOOLEAN fMeToo ) { if ( ( pSoldier->bInSector ) && ( gfWorldLoaded ) ) { - if ( pSoldier->bAssignment == DOCTOR ) + if ( IS_DOCTOR(pSoldier->bAssignment) ) { if ( guiCurrentScreen == GAME_SCREEN ) { @@ -7537,7 +7537,7 @@ void AssignmentDone( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote, BOOLEAN fMeToo ) } } - else if ( pSoldier->bAssignment == REPAIR ) + else if ( IS_REPAIR(pSoldier->bAssignment) ) { if ( guiCurrentScreen == GAME_SCREEN ) { @@ -7548,7 +7548,7 @@ void AssignmentDone( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote, BOOLEAN fMeToo ) pSoldier->ChangeSoldierState( STANDING, 1, TRUE ); } } - else if ( pSoldier->bAssignment == PATIENT ) + else if ( IS_PATIENT(pSoldier->bAssignment) ) { if ( guiCurrentScreen == GAME_SCREEN ) { @@ -7588,8 +7588,8 @@ void AssignmentDone( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote, BOOLEAN fMeToo ) if ( fSayQuote ) { - if ( pSoldier->bAssignment == DOCTOR || pSoldier->bAssignment == REPAIR || - pSoldier->bAssignment == PATIENT || pSoldier->bAssignment == ASSIGNMENT_HOSPITAL ) + if (IS_DOCTOR( pSoldier->bAssignment ) || IS_REPAIR( pSoldier->bAssignment ) || + IS_PATIENT( pSoldier->bAssignment ) || (pSoldier->bAssignment == ASSIGNMENT_HOSPITAL)) { TacticalCharacterDialogue( pSoldier, QUOTE_ASSIGNMENT_COMPLETE ); } @@ -7667,7 +7667,7 @@ void HandleHealingByNaturalCauses( SOLDIERTYPE *pSoldier ) return; } - // any bleeding pts - can' recover if still bleeding! + // any bleeding pts - can't recover if still bleeding! if( pSoldier->bBleeding != 0 ) { return; @@ -7675,15 +7675,15 @@ void HandleHealingByNaturalCauses( SOLDIERTYPE *pSoldier ) // not bleeding and injured... - if( pSoldier->bAssignment == ASSIGNMENT_POW ) + if ((pSoldier->flags.fMercAsleep == TRUE) || (IS_PATIENT(pSoldier->bAssignment) && !IS_DOCTOR(pSoldier->bAssignment)) || (pSoldier->bAssignment == ASSIGNMENT_HOSPITAL)) + { + bActivityLevelDivisor = gGameExternalOptions.ubLowActivityLevel; + } + else if( pSoldier->bAssignment == ASSIGNMENT_POW ) { // use high activity level to simulate stress, torture, poor conditions for healing bActivityLevelDivisor = gGameExternalOptions.ubHighActivityLevel; } - if( ( pSoldier->flags.fMercAsleep == TRUE ) || ( pSoldier->bAssignment == PATIENT ) || ( pSoldier->bAssignment == ASSIGNMENT_HOSPITAL ) ) - { - bActivityLevelDivisor = gGameExternalOptions.ubLowActivityLevel; - } else if ( pSoldier->bAssignment < ON_DUTY ) { // if time is being compressed, and the soldier is not moving strategically @@ -7783,6 +7783,10 @@ void UpDateSoldierLife( SOLDIERTYPE *pSoldier ) pSoldier->bBleeding = pSoldier->stats.bLifeMax - pSoldier->stats.bLife; } + // Autobandage assigned patients - they might still show bleeding for the first minute, but I haven't seen them lose life from it yet. + if (pSoldier->bBleeding > 0) + AddStrategicEvent( EVENT_BANDAGE_BLEEDING_MERCS, GetWorldTotalMin() + 1, 0 ); + // SANDRO - when being healed normally, reduce insta-healable HPs value if ( gGameOptions.fNewTraitSystem && pSoldier->iHealableInjury > 0 ) { @@ -12062,7 +12066,7 @@ void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) if ( !(pMedic->bActive) || !(pMedic->bInSector) || ( pMedic->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (pMedic->bAssignment == VEHICLE ) ) continue; // is nowhere around! - if (( pSoldier->ubID == pMedic->ubID ) || ( pMedic->bAssignment != DOCTOR )) + if ( (pSoldier->ubID == pMedic->ubID) || !IS_DOCTOR(pMedic->bAssignment) ) continue; // cannot make surgery on self or not on the right assignment! bSlot = FindMedKit( pMedic ); @@ -12114,7 +12118,7 @@ void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) case( EPC_MENU_REMOVE ): fShowAssignmentMenu = FALSE; - UnEscortEPC( pSoldier ); + UnEscortEPC( pSoldier ); break; case( EPC_MENU_CANCEL ): @@ -12306,7 +12310,7 @@ void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) if ( !(pMedic->bActive) || !(pMedic->bInSector) || ( pMedic->flags.uiStatusFlags & SOLDIER_VEHICLE ) || (pMedic->bAssignment == VEHICLE ) ) continue; // is nowhere around! - if (( pSoldier->ubID == pMedic->ubID ) || ( pMedic->bAssignment != DOCTOR )) + if ( (pSoldier->ubID == pMedic->ubID) || !IS_DOCTOR(pMedic->bAssignment) ) continue; // cannot make surgery on self or not on the right assignment! bSlot = FindMedKit( pMedic ); @@ -14765,7 +14769,7 @@ void SetSoldierAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment, INT32 iParam AssignMercToAMovementGroup( pSoldier ); } break; - case( PATIENT ): + CASE_PATIENT: if( CanCharacterPatient( pSoldier ) ) { // set as doctor @@ -14793,18 +14797,18 @@ void SetSoldierAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment, INT32 iParam TakeSoldierOutOfVehicle( pSoldier ); } - if( ( pSoldier->bAssignment != PATIENT ) ) + if ((pSoldier->bAssignment != bAssignment)) { SetTimeOfAssignmentChangeForMerc( pSoldier ); } - ChangeSoldiersAssignment( pSoldier, PATIENT ); + ChangeSoldiersAssignment( pSoldier, bAssignment ); AssignMercToAMovementGroup( pSoldier ); } break; - case( DOCTOR ): + CASE_DOCTOR: if( CanCharacterDoctor( pSoldier ) ) { pSoldier->bOldAssignment = pSoldier->bAssignment; @@ -14823,12 +14827,12 @@ void SetSoldierAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment, INT32 iParam TakeSoldierOutOfVehicle( pSoldier ); } - if( ( pSoldier->bAssignment != DOCTOR ) ) + if ((pSoldier->bAssignment != bAssignment)) { SetTimeOfAssignmentChangeForMerc( pSoldier ); } - ChangeSoldiersAssignment( pSoldier, DOCTOR ); + ChangeSoldiersAssignment( pSoldier, bAssignment ); MakeSureMedKitIsInHand( pSoldier ); AssignMercToAMovementGroup( pSoldier ); @@ -15050,7 +15054,7 @@ void SetSoldierAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment, INT32 iParam } break; - case( REPAIR ): + CASE_REPAIR: if( CanCharacterRepair( pSoldier ) ) { pSoldier->bOldAssignment = pSoldier->bAssignment; @@ -15064,12 +15068,12 @@ void SetSoldierAssignment( SOLDIERTYPE *pSoldier, INT8 bAssignment, INT32 iParam TakeSoldierOutOfVehicle( pSoldier ); } - if( ( pSoldier->bAssignment != REPAIR ) ||( pSoldier->flags.fFixingSAMSite != ( UINT8 )iParam1 ) || ( pSoldier->flags.fFixingRobot != ( UINT8 )iParam2 ) || ( pSoldier->bVehicleUnderRepairID != ( UINT8 )iParam3 ) ) + if ((pSoldier->bAssignment != bAssignment) || (pSoldier->flags.fFixingSAMSite != (UINT8)iParam1) || (pSoldier->flags.fFixingRobot != (UINT8)iParam2) || (pSoldier->bVehicleUnderRepairID != (UINT8)iParam3)) { SetTimeOfAssignmentChangeForMerc( pSoldier ); } - ChangeSoldiersAssignment( pSoldier, REPAIR ); + ChangeSoldiersAssignment( pSoldier, bAssignment ); MakeSureToolKitIsInHand( pSoldier ); AssignMercToAMovementGroup( pSoldier ); pSoldier->flags.fFixingSAMSite = ( UINT8 )iParam1; @@ -16399,55 +16403,56 @@ void BandageBleedingDyingPatientsBeingTreated( ) // and he is bleeding or dying if( ( pSoldier->bBleeding ) || ( pSoldier->stats.bLife < OKLIFE ) ) { - // if soldier is receiving care - if( ( pSoldier->bAssignment == PATIENT ) || ( pSoldier->bAssignment == ASSIGNMENT_HOSPITAL ) || ( pSoldier->bAssignment == DOCTOR ) ) + // if in the hospital + if ((pSoldier->bAssignment == FACILITY_PATIENT) || (pSoldier->bAssignment == ASSIGNMENT_HOSPITAL)) { - // if in the hospital - if ( pSoldier->bAssignment == ASSIGNMENT_HOSPITAL ) + // this is instantaneous, and doesn't use up any bandages! + + // stop bleeding automatically + pSoldier->bBleeding = 0; + + if ( pSoldier->stats.bLife < OKLIFE ) { - // this is instantaneous, and doesn't use up any bandages! - - // stop bleeding automatically - pSoldier->bBleeding = 0; - - if ( pSoldier->stats.bLife < OKLIFE ) + // SANDRO - added to alter the value of insta-healable injuries for doctors + if (pSoldier->iHealableInjury > 0) { - // SANDRO - added to alter the value of insta-healable injuries for doctors - if (pSoldier->iHealableInjury > 0) - { - pSoldier->iHealableInjury -= ((OKLIFE - pSoldier->stats.bLife) * 100); - } - - pSoldier->stats.bLife = OKLIFE; + pSoldier->iHealableInjury -= ((OKLIFE - pSoldier->stats.bLife) * 100); } + + pSoldier->stats.bLife = OKLIFE; } - else // assigned to DOCTOR/PATIENT + } + // if treated by fellow merc + else if ((pSoldier->bAssignment == DOCTOR) || (pSoldier->bAssignment == PATIENT)) + { + // see if there's a doctor around who can help him + pDoctor = AnyDoctorWhoCanHealThisPatient( pSoldier, HEALABLE_EVER ); + if ( pDoctor != NULL ) { - // see if there's a doctor around who can help him - pDoctor = AnyDoctorWhoCanHealThisPatient( pSoldier, HEALABLE_EVER ); - if ( pDoctor != NULL ) + iKitSlot = FindObjClass( pDoctor, IC_MEDKIT ); + if( iKitSlot != NO_SLOT ) { - iKitSlot = FindObjClass( pDoctor, IC_MEDKIT ); - if( iKitSlot != NO_SLOT ) + pKit = &( pDoctor->inv[ iKitSlot ] ); + + usKitPts = TotalPoints( pKit ); + if( usKitPts ) { - pKit = &( pDoctor->inv[ iKitSlot ] ); + uiKitPtsUsed = VirtualSoldierDressWound( pDoctor, pSoldier, pKit, usKitPts, usKitPts, FALSE ); // SANDRO - added variable + UseKitPoints( pKit, (UINT16)uiKitPtsUsed, pDoctor ); - usKitPts = TotalPoints( pKit ); - if( usKitPts ) + // if he is STILL bleeding or dying + if( ( pSoldier->bBleeding ) || ( pSoldier->stats.bLife < OKLIFE ) ) { - uiKitPtsUsed = VirtualSoldierDressWound( pDoctor, pSoldier, pKit, usKitPts, usKitPts, FALSE ); // SANDRO - added variable - UseKitPoints( pKit, (UINT16)uiKitPtsUsed, pDoctor ); - - // if he is STILL bleeding or dying - if( ( pSoldier->bBleeding ) || ( pSoldier->stats.bLife < OKLIFE ) ) - { - fSomeoneStillBleedingDying = TRUE; - } + fSomeoneStillBleedingDying = TRUE; } } } } } + else + { + // soldier is not receiving care + } } } @@ -16478,11 +16483,11 @@ void ReEvaluateEveryonesNothingToDo() { switch( pSoldier->bAssignment ) { - case DOCTOR: + CASE_DOCTOR: fNothingToDo = !CanCharacterDoctor( pSoldier ) || ( GetNumberThatCanBeDoctored( pSoldier, HEALABLE_EVER, FALSE, FALSE, FALSE ) == 0 ); // SANDRO - added variable break; - case PATIENT: + CASE_PATIENT: // HEADROCK HAM 3.6: Characters can be facility patients, in which case they are resting with a // bonus or penalty to their healing rate. No doctor is actually required, even though the // character is still eligible for a doctor's treatment. @@ -16495,7 +16500,7 @@ void ReEvaluateEveryonesNothingToDo() fNothingToDo = !CanCharacterPatient( pSoldier ); break; - case REPAIR: + CASE_REPAIR: fNothingToDo = !CanCharacterRepair( pSoldier ) || HasCharacterFinishedRepairing( pSoldier ); break; @@ -16646,23 +16651,23 @@ void SetAssignmentForList( INT8 bAssignment, INT8 bParam ) switch( bAssignment ) { - case( DOCTOR ): + CASE_DOCTOR: // can character doctor? - if( CanCharacterDoctor( pSoldier ) ) + if (CanCharacterDoctor( pSoldier ) && (pSoldier->sFacilityTypeOperated <= 0 || CanCharacterFacility( pSoldier, bParam, FAC_DOCTOR))) { // set as doctor pSoldier->bOldAssignment = pSoldier->bAssignment; - SetSoldierAssignment( pSoldier, DOCTOR, 0,0,0 ); + SetSoldierAssignment( pSoldier, bAssignment, 0, 0, 0 ); fItWorked = TRUE; } break; - case( PATIENT ): + CASE_PATIENT: // can character patient? - if( CanCharacterPatient( pSoldier ) ) + if (CanCharacterPatient( pSoldier ) && (pSoldier->sFacilityTypeOperated <= 0 || CanCharacterFacility( pSoldier, bParam, FAC_PATIENT ))) { // set as patient pSoldier->bOldAssignment = pSoldier->bAssignment; - SetSoldierAssignment( pSoldier, PATIENT, 0,0,0 ); + SetSoldierAssignment( pSoldier, bAssignment, 0, 0, 0 ); fItWorked = TRUE; } break; @@ -16678,8 +16683,8 @@ void SetAssignmentForList( INT8 bAssignment, INT8 bParam ) } } break; - case( REPAIR ): - if( CanCharacterRepair( pSoldier ) ) + CASE_REPAIR: + if (CanCharacterRepair( pSoldier )) { BOOLEAN fCanFixSpecificTarget = TRUE; @@ -16692,20 +16697,24 @@ void SetAssignmentForList( INT8 bAssignment, INT8 bParam ) } else */ - if ( pSelectedSoldier->bVehicleUnderRepairID != -1 ) + if (pSelectedSoldier->bVehicleUnderRepairID != -1) { - fCanFixSpecificTarget = CanCharacterRepairVehicle( pSoldier, pSelectedSoldier->bVehicleUnderRepairID ); + fCanFixSpecificTarget = CanCharacterRepairVehicle( pSoldier, pSelectedSoldier->bVehicleUnderRepairID ) && (pSoldier->sFacilityTypeOperated <= 0 || CanCharacterFacility( pSoldier, bParam, FAC_REPAIR_VEHICLE )); } - else if( pSoldier->flags.fFixingRobot ) + else if (pSoldier->flags.fFixingRobot) { - fCanFixSpecificTarget = CanCharacterRepairRobot( pSoldier ); + fCanFixSpecificTarget = CanCharacterRepairRobot( pSoldier ) && (pSoldier->sFacilityTypeOperated <= 0 || CanCharacterFacility( pSoldier, bParam, FAC_REPAIR_ROBOT )); + } + else + { + fCanFixSpecificTarget = (pSoldier->sFacilityTypeOperated <= 0 || CanCharacterFacility( pSoldier, bParam, FAC_REPAIR_ITEMS )); } if ( fCanFixSpecificTarget ) { // set as repair pSoldier->bOldAssignment = pSoldier->bAssignment; - SetSoldierAssignment( pSoldier, REPAIR, pSelectedSoldier->flags.fFixingSAMSite, pSelectedSoldier->flags.fFixingRobot, pSelectedSoldier->bVehicleUnderRepairID ); + SetSoldierAssignment( pSoldier, bAssignment, pSelectedSoldier->flags.fFixingSAMSite, pSelectedSoldier->flags.fFixingRobot, pSelectedSoldier->bVehicleUnderRepairID ); fItWorked = TRUE; } } @@ -17181,7 +17190,7 @@ BOOLEAN CharacterIsTakingItEasy( SOLDIERTYPE *pSoldier ) } // and healing up? - if ( ( pSoldier->bAssignment == PATIENT ) || ( pSoldier->bAssignment == ASSIGNMENT_HOSPITAL ) ) + if ( (IS_PATIENT(pSoldier->bAssignment) && !IS_DOCTOR(pSoldier->bAssignment)) || (pSoldier->bAssignment == ASSIGNMENT_HOSPITAL) ) { return( TRUE ); } @@ -20280,28 +20289,28 @@ void FacilityAssignmentMenuBtnCallback ( MOUSE_REGION * pRegion, INT32 iReason ) break; case FAC_REPAIR_ITEMS: MakeSureToolKitIsInHand( pSoldier ); - ChangeSoldiersAssignment( pSoldier, REPAIR ); + ChangeSoldiersAssignment( pSoldier, FACILITY_REPAIR ); pSoldier->flags.fFixingRobot = FALSE; pSoldier->bVehicleUnderRepairID = -1; break; case FAC_REPAIR_VEHICLE: MakeSureToolKitIsInHand( pSoldier ); - ChangeSoldiersAssignment( pSoldier, REPAIR ); + ChangeSoldiersAssignment( pSoldier, FACILITY_REPAIR ); pSoldier->flags.fFixingRobot = FALSE; pSoldier->bVehicleUnderRepairID = (INT8)ubVehicleID; break; case FAC_REPAIR_ROBOT: MakeSureToolKitIsInHand( pSoldier ); - ChangeSoldiersAssignment( pSoldier, REPAIR ); + ChangeSoldiersAssignment( pSoldier, FACILITY_REPAIR ); pSoldier->flags.fFixingRobot = TRUE; pSoldier->bVehicleUnderRepairID = -1; break; case FAC_DOCTOR: MakeSureMedKitIsInHand( pSoldier ); - ChangeSoldiersAssignment( pSoldier, DOCTOR ); + ChangeSoldiersAssignment( pSoldier, FACILITY_DOCTOR ); break; case FAC_PATIENT: - ChangeSoldiersAssignment( pSoldier, PATIENT ); + ChangeSoldiersAssignment( pSoldier, FACILITY_PATIENT ); break; case FAC_PRACTICE_STRENGTH: pSoldier->bTrainStat = STRENGTH; @@ -20436,7 +20445,7 @@ void FacilityAssignmentMenuBtnCallback ( MOUSE_REGION * pRegion, INT32 iReason ) } // Flugente: I guess this piece of code is here to get a group Id for the soldier, which must not be there for movement specifically. Just my understanding, in case anybody else coming here wonders - // why we get movement related stuff when we were jsut ordered to stay in a facility + // why we get movement related stuff when we were just ordered to stay in a facility AssignMercToAMovementGroup( pSoldier ); MakeSoldiersTacticalAnimationReflectAssignment( pSoldier ); diff --git a/Strategic/Assignments.h b/Strategic/Assignments.h index 98400fbf..869a6808 100644 --- a/Strategic/Assignments.h +++ b/Strategic/Assignments.h @@ -81,9 +81,24 @@ enum FACILITY_STRATEGIC_MILITIA_MOVEMENT, // Flugente: merc staffs a military HQ, we can now control militia movement on the map DISEASE_DIAGNOSE, // Flugente: check for diseases among mercs and local population DISEASE_DOCTOR_SECTOR, // Flugente: treatpopulation (all non-mercs in the sector) against disease + FACILITY_DOCTOR, + FACILITY_PATIENT, + FACILITY_REPAIR, NUM_ASSIGNMENTS, }; +#define IS_DOCTOR(assignment) ((assignment == DOCTOR) || (assignment == FACILITY_DOCTOR)) +// left the last : off so syntax is visually consistent with non-macro case statements +#define CASE_DOCTOR case DOCTOR: case FACILITY_DOCTOR + +// Does not include HOSPITAL since mercs are not responsible for their care +#define IS_PATIENT(assignment) ((assignment == DOCTOR) || (assignment == PATIENT) || (assignment == FACILITY_DOCTOR) || (assignment == FACILITY_PATIENT)) +// Does not include DOCTOR types because switch cases must be unique +#define CASE_PATIENT case PATIENT: case FACILITY_PATIENT + +#define IS_REPAIR(assignment) ((assignment == REPAIR) || (assignment == FACILITY_REPAIR)) +#define CASE_REPAIR case REPAIR: case FACILITY_REPAIR + // strings for snitch exposition enum { @@ -115,7 +130,8 @@ enum #define NO_ASSIGNMENT 127 //used when no pSoldier->ubDesiredSquad // Train stats defines (must match ATTRIB_MENU_ defines, and pAttributeMenuStrings ) -enum{ +enum +{ HEALTH = 0, AGILITY, DEXTERITY, @@ -481,10 +497,4 @@ BOOLEAN MakeSureMedKitIsInHand( SOLDIERTYPE *pSoldier ); UINT8 CalcSoldierNeedForSleep( SOLDIERTYPE *pSoldier ); -#endif - - - - - - +#endif \ No newline at end of file diff --git a/Strategic/Facilities.cpp b/Strategic/Facilities.cpp index 6ecaedd2..2fba5653 100644 --- a/Strategic/Facilities.cpp +++ b/Strategic/Facilities.cpp @@ -771,33 +771,22 @@ INT8 GetSoldierFacilityAssignmentIndex( SOLDIERTYPE *pSoldier ) INT8 bAssignment = pSoldier->bAssignment; INT8 bAssignmentIndex = -1; // Return variable. -1 = Non-facility assignment. - if (bAssignment <= ON_DUTY || - bAssignment == PATIENT || - bAssignment == VEHICLE || - bAssignment == IN_TRANSIT || - bAssignment == TRAIN_TOWN || - bAssignment == TRAIN_MOBILE || - ( bAssignment > FACILITY_REST && bAssignment != FACILITY_STRATEGIC_MILITIA_MOVEMENT && ( bAssignment < FACILITY_PRISON_SNITCH || bAssignment > FACILITY_GATHER_RUMOURS ) )) - { - // Soldier is performing a distinctly NON-FACILITY assignment. - return (-1); - } - if (pSoldier->sFacilityTypeOperated == -1) { // Soldier is not set to work at a facility... return (-1); } + // switch of ALL possible facility assignments switch (bAssignment) { - case DOCTOR: + case FACILITY_DOCTOR: bAssignmentIndex = FAC_DOCTOR; break; - case PATIENT: + case FACILITY_PATIENT: bAssignmentIndex = FAC_PATIENT; break; - case REPAIR: + case FACILITY_REPAIR: // Determine which kind of repair is he performing if ( pSoldier->bVehicleUnderRepairID != -1 ) { @@ -945,6 +934,7 @@ INT8 GetSoldierFacilityAssignmentIndex( SOLDIERTYPE *pSoldier ) bAssignmentIndex = FAC_STRATEGIC_MILITIA_MOVEMENT; break; default: + // Soldier is performing a distinctly NON-FACILITY assignment. bAssignmentIndex = -1; break; } diff --git a/Tactical/Campaign.cpp b/Tactical/Campaign.cpp index cdae2615..51098619 100644 --- a/Tactical/Campaign.cpp +++ b/Tactical/Campaign.cpp @@ -713,8 +713,8 @@ void ChangeStat( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier, UINT8 ubSta if ( ((pSoldier->bAssignment == TRAIN_BY_OTHER || pSoldier->bAssignment == TRAIN_TEAMMATE || pSoldier->bAssignment == TRAIN_SELF || pSoldier->bAssignment == FACILITY_STAFF || pSoldier->bAssignment == TRAIN_TOWN || pSoldier->bAssignment == TRAIN_MOBILE ) && !gGameSettings.fOptions[TOPTION_QUIET_TRAINING]) || - (pSoldier->bAssignment == REPAIR && !gGameSettings.fOptions[TOPTION_QUIET_REPAIRING]) || - (pSoldier->bAssignment == DOCTOR && !gGameSettings.fOptions[TOPTION_QUIET_DOCTORING])) + (IS_REPAIR(pSoldier->bAssignment) && !gGameSettings.fOptions[TOPTION_QUIET_REPAIRING]) || + (IS_DOCTOR(pSoldier->bAssignment) && !gGameSettings.fOptions[TOPTION_QUIET_DOCTORING])) TacticalCharacterDialogue( pSoldier, QUOTE_EXPERIENCE_GAIN ); } diff --git a/Tactical/Disease.cpp b/Tactical/Disease.cpp index 65cad5f8..d3dfa1ba 100644 --- a/Tactical/Disease.cpp +++ b/Tactical/Disease.cpp @@ -105,12 +105,18 @@ void HandleDisease() // infection chance gets modified depending on assignments FLOAT modifier = 1.0f; - // if both are in the same squad, chance is increased - if ( pTeamSoldier->bAssignment == pSoldier->bAssignment && pSoldier->bAssignment < ON_DUTY ) + // if both are in the same squad or vehicle, chance is increased + if (pTeamSoldier->bAssignment == pSoldier->bAssignment && + (pSoldier->bAssignment < ON_DUTY || + (pSoldier->bAssignment == VEHICLE && pSoldier->iVehicleId == pTeamSoldier->iVehicleId))) + { modifier = 1.5; + } // doctor-patient relations increase chance even more - else if ( (pTeamSoldier->bAssignment == DOCTOR || pTeamSoldier->bAssignment == PATIENT) && (pSoldier->bAssignment == DOCTOR || pSoldier->bAssignment == PATIENT) ) + else if (IS_PATIENT(pTeamSoldier->bAssignment) && IS_PATIENT(pSoldier->bAssignment)) + { modifier = 4; + } // we might get a disease from this... HandlePossibleInfection( pSoldier, pTeamSoldier, INFECTION_TYPE_CONTACT_HUMAN, modifier ); diff --git a/Tactical/DynamicDialogue.cpp b/Tactical/DynamicDialogue.cpp index a1930393..3b9ce5f8 100644 --- a/Tactical/DynamicDialogue.cpp +++ b/Tactical/DynamicDialogue.cpp @@ -1966,7 +1966,7 @@ UINT8 GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ ) UINT8 GetRandomMercInSectorNotInList( INT16 sX, INT16 sY, INT8 sZ, std::vector aTaboo, BOOLEAN fImpOnly ) { - std::vector resultvector; + std::vector resultvector; SOLDIERTYPE* pTeamSoldier = NULL; UINT16 bMercID = gTacticalStatus.Team[gbPlayerNum].bFirstID; UINT16 bLastTeamID = gTacticalStatus.Team[gbPlayerNum].bLastID; @@ -2267,7 +2267,7 @@ void HandleDynamicOpinionChange( SOLDIERTYPE* pSoldier, UINT8 usEvent, BOOLEAN f case OPINIONEVENT_DISEASE_DISGUSTING: // not if the other guy is a doctor, is currently used as a doctor, or has disease themself - if ( pTeamSoldier->bAssignment == DOCTOR || pTeamSoldier->bAssignment == DISEASE_DOCTOR_SECTOR || HAS_SKILL_TRAIT( pTeamSoldier, DOCTOR_NT ) || pTeamSoldier->HasDisease(TRUE, FALSE, FALSE) ) + if ( IS_DOCTOR(pTeamSoldier->bAssignment) || pTeamSoldier->bAssignment == DISEASE_DOCTOR_SECTOR || HAS_SKILL_TRAIT( pTeamSoldier, DOCTOR_NT ) || pTeamSoldier->HasDisease(TRUE, FALSE, FALSE) ) continue; break; diff --git a/Tactical/Faces.cpp b/Tactical/Faces.cpp index 72fec5e7..9e44e181 100644 --- a/Tactical/Faces.cpp +++ b/Tactical/Faces.cpp @@ -2246,7 +2246,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE switch( pSoldier->bAssignment ) { - case DOCTOR: + CASE_DOCTOR: sIconIndex_Assignment = 1; fDoIcon_Assignment = TRUE; sPtsAvailable = CalculateHealingPointsForDoctor( MercPtrs[ pFace->ubSoldierID ], &usMaximumPts, FALSE ); @@ -2258,7 +2258,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE usMaximumPts = ( usMaximumPts + 5 ) / 10; break; - case PATIENT: + CASE_PATIENT: sIconIndex_Assignment = 2; fDoIcon_Assignment = TRUE; // show current health / maximum health @@ -2300,7 +2300,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE } break; - case REPAIR: + CASE_REPAIR: sIconIndex_Assignment = 0; fDoIcon_Assignment = TRUE; diff --git a/Tactical/Food.cpp b/Tactical/Food.cpp index a9b28819..ae728339 100644 --- a/Tactical/Food.cpp +++ b/Tactical/Food.cpp @@ -382,7 +382,7 @@ void HourlyFoodSituationUpdate( SOLDIERTYPE *pSoldier ) else activitymodifier = gGameExternalOptions.sFoodDigestionTravel; } - else if ( pSoldier->bAssignment > DOCTOR ) + else if ( pSoldier->bAssignment > DOCTOR ) // unclear why this does not include DOCTOR assignment??? activitymodifier = gGameExternalOptions.sFoodDigestionAssignment; else if ( (gTacticalStatus.uiFlags & INCOMBAT) ) activitymodifier = gGameExternalOptions.sFoodDigestionCombat; diff --git a/Tactical/Interface Enhanced.cpp b/Tactical/Interface Enhanced.cpp index 64c0ea91..614c3ce6 100644 --- a/Tactical/Interface Enhanced.cpp +++ b/Tactical/Interface Enhanced.cpp @@ -6476,10 +6476,6 @@ void DrawWeaponValues( OBJECTTYPE * gpItemDescObject ) INT16 usX, usY; INT16 ubAttackAPs; UINT8 ubNumLine; - INT16 sTop; - INT16 sHeight; - INT16 sLeft; - INT16 sWidth; OBJECTTYPE *gpComparedItemDescObject = NULL; @@ -7931,7 +7927,7 @@ void DrawWeaponValues( OBJECTTYPE * gpItemDescObject ) * GetAttackAPTraitMultiplier( gpItemDescSoldier, gpComparedItemDescObject, WM_BURST ) + CalcAPsToBurst( APBPConstants[DEFAULT_APS], gpComparedItemDescObject, gpItemDescSoldier ) + 0.5f ); // Get base Burst Cost - INT16 iBurstAPCost = BaseAPsToShootOrStabNoModifier( APBPConstants[DEFAULT_APS], APBPConstants[DEFAULT_AIMSKILL], gpComparedItemDescObject ); + INT16 iBurstAPCost = BaseAPsToShootOrStabNoModifier( APBPConstants[DEFAULT_APS], APBPConstants[DEFAULT_AIMSKILL], gpComparedItemDescObject ) + CalcAPsToBurstNoModifier( APBPConstants[DEFAULT_APS], gpComparedItemDescObject ); // Get Burst Cost Modifier INT16 iBurstAPCostModifier = iFinalBurstAPCost - iBurstAPCost; @@ -8001,7 +7997,7 @@ void DrawWeaponValues( OBJECTTYPE * gpItemDescObject ) * GetAttackAPTraitMultiplier( gpItemDescSoldier, gpComparedItemDescObject, WM_AUTOFIRE ) + CalcAPsToAutofire( APBPConstants[DEFAULT_APS], gpComparedItemDescObject, 3, gpItemDescSoldier ) + 0.5f ); // Get base Autofire Cost - INT16 iAutoAPCost = BaseAPsToShootOrStabNoModifier( APBPConstants[DEFAULT_APS], APBPConstants[DEFAULT_AIMSKILL], gpComparedItemDescObject ); + INT16 iAutoAPCost = BaseAPsToShootOrStabNoModifier( APBPConstants[DEFAULT_APS], APBPConstants[DEFAULT_AIMSKILL], gpComparedItemDescObject ) + CalcAPsToAutofireNoModifier( APBPConstants[DEFAULT_APS], gpComparedItemDescObject, 3 ); // Get Autofire Cost Modifier INT16 iAutoAPCostModifier = iFinalAutoAPCost - iAutoAPCost; @@ -8767,7 +8763,7 @@ void DrawAmmoValues( OBJECTTYPE * gpItemDescObject, int shotsLeft ) INT16 usY; INT16 usX; UINT8 ubNumLine; - INT16 sLeft, sTop, sWidth, sHeight; + INT16 sTop, sHeight; OBJECTTYPE *gpComparedItemDescObject = NULL; @@ -9027,7 +9023,7 @@ void DrawExplosiveValues( OBJECTTYPE * gpItemDescObject ) INT16 usY; INT16 usX; UINT8 ubNumLine; - INT16 sLeft, sTop, sWidth, sHeight; + INT16 sTop, sHeight; OBJECTTYPE *gpComparedItemDescObject = NULL; @@ -9672,7 +9668,6 @@ void DrawArmorValues( OBJECTTYPE * gpItemDescObject ) INT16 usY; INT16 usX; UINT8 ubNumLine; - INT16 sLeft, sTop, sWidth, sHeight; OBJECTTYPE *gpComparedItemDescObject = NULL; diff --git a/Tactical/Soldier Add.cpp b/Tactical/Soldier Add.cpp index a31f975c..0e398f8f 100644 --- a/Tactical/Soldier Add.cpp +++ b/Tactical/Soldier Add.cpp @@ -1730,15 +1730,15 @@ void AddSoldierToSectorGridNo( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDir { InternalSoldierInSectorSleep( pSoldier, pSoldier->sInsertionGridNo, FALSE ); } - else if ( pSoldier->bAssignment == PATIENT ) - { - SoldierInSectorPatient( pSoldier, pSoldier->sInsertionGridNo ); - } - else if ( pSoldier->bAssignment == DOCTOR ) + else if ( IS_DOCTOR(pSoldier->bAssignment) ) { SoldierInSectorDoctor( pSoldier, pSoldier->sInsertionGridNo ); } - else if ( pSoldier->bAssignment == REPAIR ) + else if ( IS_PATIENT(pSoldier->bAssignment) ) + { + SoldierInSectorPatient( pSoldier, pSoldier->sInsertionGridNo ); + } + else if ( IS_REPAIR(pSoldier->bAssignment) ) { SoldierInSectorRepair( pSoldier, pSoldier->sInsertionGridNo ); } diff --git a/TacticalAI/Medical.cpp b/TacticalAI/Medical.cpp index 7dcc6548..7d11ff70 100644 --- a/TacticalAI/Medical.cpp +++ b/TacticalAI/Medical.cpp @@ -490,7 +490,7 @@ BOOLEAN DoctorIsPresent( SOLDIERTYPE * pPatient, BOOLEAN fOnDoctorAssignmentChec // cannot make surgery on self! continue; // NEXT!!! } - if ( fOnDoctorAssignmentCheck && pMedic->bAssignment != DOCTOR ) + if ( fOnDoctorAssignmentCheck && !IS_DOCTOR(pMedic->bAssignment) ) { // not on the right assignment! continue; // NEXT!!! diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index b9a2ba25..dcecd3e6 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -1866,6 +1866,9 @@ STR16 pAssignmentStrings[] = L"Command", // militia movement orders L"Diagnose", // disease diagnosis //TODO.Translate L"Treat D.", // treat disease among the population + L"医生",// administering medical aid + L"病人", // getting medical aid + L"修理", // repairing }; @@ -1964,6 +1967,9 @@ STR16 pPersonnelAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"医生", + L"病人", + L"修理", }; @@ -2021,6 +2027,9 @@ STR16 pLongAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"医生", + L"病人", + L"修理", }; diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index 33226f2b..a2cd41ad 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -1863,6 +1863,9 @@ STR16 pAssignmentStrings[] = L"Command", // militia movement orders L"Diagnose", // disease diagnosis //TODO.Translate L"Treat D.", // treat disease among the population + L"Dokter", // administering medical aid + L"Patiënt", // getting medical aid + L"Repareer", // repairing }; @@ -1961,6 +1964,9 @@ STR16 pPersonnelAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Dokter", // administering medical aid + L"Patiënt", // getting medical aid + L"Repareer", // repairing }; @@ -2018,6 +2024,9 @@ STR16 pLongAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Dokter", // administering medical aid + L"Patiënt", // getting medical aid + L"Repareer", // repairing }; diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 5cc9d811..b84c47dd 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -1867,6 +1867,9 @@ STR16 pAssignmentStrings[] = L"Command", // militia movement orders L"Diagnose", // disease diagnosis L"Treat D.", // treat disease among the population + L"Doctor", // administering medical aid + L"Patient", // getting medical aid + L"Repair", // repairing }; @@ -1965,6 +1968,9 @@ STR16 pPersonnelAssignmentStrings[] = L"Commanding Militia", // militia movement orders L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Doctor", + L"Patient", + L"Repair", }; @@ -2022,6 +2028,9 @@ STR16 pLongAssignmentStrings[] = L"Commanding Militia", // militia movement orders L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Doctor", + L"Patient", + L"Repair", }; diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index a8372f74..748e9847 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -1873,6 +1873,9 @@ STR16 pAssignmentStrings[] = L"Command.", // militia movement orders L"Diagnose", // disease diagnosis //TODO.Translate L"Treat D.", // treat disease among the population + L"Docteur", // administering medical aid + L"Patient(e)", // getting medical aid + L"Réparat.", // repairing }; @@ -1971,6 +1974,9 @@ STR16 pPersonnelAssignmentStrings[] = L"Commande", // militia movement orders L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Docteur", + L"Patient", + L"Réparation", }; @@ -2028,6 +2034,9 @@ STR16 pLongAssignmentStrings[] = L"Commander", // militia movement orders L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Docteur", + L"Patient", + L"Réparation", }; diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 4813436d..44a07786 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -1878,6 +1878,9 @@ STR16 pAssignmentStrings[] = L"Command", // militia movement orders L"Diagnose", // disease diagnosis //TODO.Translate L"Treat D.", // treat disease among the population + L"Doktor", // administering medical aid + L"Patient", // getting medical aid + L"Repar.", // repairing }; STR16 pMilitiaString[] = @@ -1972,6 +1975,9 @@ STR16 pPersonnelAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Doktor", + L"Patient", + L"Reparieren", }; // refer to above for comments @@ -2027,6 +2033,9 @@ STR16 pLongAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Doktor", + L"Patient", + L"Reparieren", }; // the contract options diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index f1aef806..59ac3703 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -1859,6 +1859,9 @@ STR16 pAssignmentStrings[] = L"Command", // militia movement orders L"Diagnose", // disease diagnosis //TODO.Translate L"Treat D.", // treat disease among the population + L"Dottore", // administering medical aid + L"Paziente", // getting medical aid + L"Riparare", // repairing }; @@ -1957,6 +1960,9 @@ STR16 pPersonnelAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Dottore", + L"Paziente", + L"Riparare", }; @@ -2014,6 +2020,9 @@ STR16 pLongAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Dottore", + L"Paziente", + L"Ripara", }; diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 624e01f6..fec43ca6 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -1875,6 +1875,9 @@ STR16 pAssignmentStrings[] = L"Command", // militia movement orders L"Diagnose", // disease diagnosis //TODO.Translate L"Treat D.", // treat disease among the population + L"Lekarz", // administering medical aid + L"Pacjent", // getting medical aid + L"Naprawa", // repairing }; @@ -1973,6 +1976,9 @@ STR16 pPersonnelAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Lekarz", + L"Pacjent", + L"Naprawa", }; @@ -2030,6 +2036,9 @@ STR16 pLongAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Lekarz", + L"Pacjent", + L"Naprawa", }; diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index 03a41ea9..c0d20c24 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -1867,6 +1867,9 @@ STR16 pAssignmentStrings[] = L"Command", // militia movement orders //TODO.Translate L"Diagnose", // disease diagnosis L"Treat D.", // treat disease among the population + L"Медик", // administering medical aid + L"Пациент", // getting medical aid + L"Ремонт", // repairing }; @@ -1965,6 +1968,9 @@ STR16 pPersonnelAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Медик", + L"Пациент", + L"Ремонт", }; @@ -2022,6 +2028,9 @@ STR16 pLongAssignmentStrings[] = L"Commanding Militia", // militia movement orders // TODO.Translate L"Diagnose", // disease diagnosis L"Treat Population disease", // treat disease among the population + L"Медик", + L"Пациент", + L"Ремонтирует", };