mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
Bugfixes / Improvements (macros) of Assignments (by Franimus)
- Fixed warning for INT8 overflow on scroll region priority, seemingly had no effect though - Use new assignment macros - Bugfix - POWs' activity level being overwritten - Feature - automatically bandage bleeding mercs on a PATIENT assignment - Bugfix - mercs treated at facilities should not use mercs' medkits - Added 3 new enums for facility doctor, patient, and repair - Bugfix for facility patients not detected as being in a facility - Bugfix - iBurstAPCost was ignoring half of its calculation due to extraneous semicolon git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7988 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -1966,7 +1966,7 @@ UINT8 GetBestMercLeaderInSector( INT16 sX, INT16 sY, INT8 sZ )
|
||||
|
||||
UINT8 GetRandomMercInSectorNotInList( INT16 sX, INT16 sY, INT8 sZ, std::vector<UINT8> aTaboo, BOOLEAN fImpOnly )
|
||||
{
|
||||
std::vector<UINT8> resultvector;
|
||||
std::vector<UINT16> 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;
|
||||
|
||||
|
||||
+3
-3
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user