- Fix: machines have opinions

- Fix: machines get diseases
- Fix: disease assignment menu box accessible if feature is off

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8093 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2016-03-05 19:51:39 +00:00
parent d23f9313bd
commit 7e7476a4ea
3 changed files with 19 additions and 19 deletions
+6 -18
View File
@@ -12220,39 +12220,27 @@ void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason )
break;
case ASSIGN_MENU_DOCTOR_DIAGNOSIS:
if ( 1 )
if ( CanCharacterDiagnoseDisease( pSoldier ) )
{
fShowSquadMenu = FALSE;
fShowTrainingMenu = FALSE;
fShowVehicleMenu = FALSE;
fShowFacilityMenu = FALSE; // HEADROCK HAM 3.6: Facility Menu
fShowPrisonerMenu = FALSE;
fShowDiseaseMenu = FALSE;
fShowRepairMenu = FALSE;
fShownContractMenu = FALSE;
fTeamPanelDirty = TRUE;
fMapScreenBottomDirty = TRUE;
pSoldier->bOldAssignment = pSoldier->bAssignment;
if ( pSoldier->bSectorZ == 0 )
if ( DisplayDiseaseMenu( pSoldier ) )
{
fShowDiseaseMenu = FALSE;
if ( DisplayDiseaseMenu( pSoldier ) )
{
fShowDiseaseMenu = TRUE;
DetermineBoxPositions( );
}
fShowDiseaseMenu = TRUE;
DetermineBoxPositions( );
}
}
else if ( 0 )
{
fTeamPanelDirty = TRUE;
fMapScreenBottomDirty = TRUE;
swprintf( sString, zMarksMapScreenText[18], pSoldier->GetName( ) );
DoScreenIndependantMessageBox( sString, MSG_BOX_FLAG_OK, NULL );
}
break;
case( ASSIGN_MENU_PATIENT ):
+5 -1
View File
@@ -1299,7 +1299,11 @@ INT8 GetDynamicOpinion( UINT8 usProfileA, UINT8 usProfileB, UINT8 usEvent )
{
INT32 opinion = 0;
if ( usProfileA == NO_PROFILE || usProfileA == NO_PROFILE )
if ( usProfileA == NO_PROFILE || usProfileB == NO_PROFILE )
return opinion;
// machines aren't people
if ( gMercProfiles[usProfileA].ubBodyType == ROBOTNOWEAPON || gMercProfiles[usProfileB].ubBodyType == ROBOTNOWEAPON )
return opinion;
if ( usEvent >= OPINIONEVENT_MAX )
+8
View File
@@ -18371,6 +18371,10 @@ void SOLDIERTYPE::Infect( UINT8 aDisease )
if ( !gGameExternalOptions.fDisease )
return;
// diseases should not affect machines
if ( (this->flags.uiStatusFlags & SOLDIER_VEHICLE) || AM_A_ROBOT( this ) )
return;
// we are getting infected. Raise our disease points, but not over the level of an infection
if ( aDisease < NUM_DISEASES && this->sDiseasePoints[aDisease] < Disease[aDisease].sInfectionPtsInitial )
{
@@ -18404,6 +18408,10 @@ void SOLDIERTYPE::AddDiseasePoints( UINT8 aDisease, INT32 aVal )
if ( !gGameExternalOptions.fDisease )
return;
// diseases should not affect machines
if ( (this->flags.uiStatusFlags & SOLDIER_VEHICLE) || AM_A_ROBOT( this ) )
return;
if ( aDisease < NUM_DISEASES )
{
this->sDiseasePoints[aDisease] = min( Disease[aDisease].sInfectionPtsFull, max( this->sDiseasePoints[aDisease] + aVal, -Disease[aDisease].sInfectionPtsOutbreak ) );