diff --git a/GameSettings.cpp b/GameSettings.cpp index 3653469c9..57cd4aabe 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -481,12 +481,42 @@ void LoadGameExternalOptions() gGameExternalOptions.iMilitiaTrainingCost = iniReader.ReadInteger("JA2 Gameplay Settings","MILITIA_TRAINING_COST",750); gGameExternalOptions.iMinLoyaltyToTrain = iniReader.ReadInteger("JA2 Gameplay Settings","MIN_LOYALTY_TO_TRAIN",20); - //Misc - gGameExternalOptions.fAmmoDynamicWeight = iniReader.ReadBoolean("JA2 Gameplay Settings", "DYNAMIC_AMMO_WEIGHT", TRUE); //Pulmu - gGameExternalOptions.fEnableCrepitus = iniReader.ReadBoolean("JA2 Gameplay Settings", "ENABLE_CREPITUS", TRUE); + //Assignment Settings (training, repairing, doctoring, etc) + gGameExternalOptions.ubAssignmentUnitsPerDay = iniReader.ReadInteger("JA2 Gameplay Settings","ASSIGNMENT_UNITS_PER_DAY",24); + gGameExternalOptions.ubMinutesForAssignmentToCount = iniReader.ReadInteger("JA2 Gameplay Settings","MINUTES_FOR_ASSIGNMENT_TO_COUNT",45); - gGameExternalOptions.fEnableAllTerrorists = iniReader.ReadBoolean("JA2 Gameplay Settings", "ENABLE_ALL_TERRORISTS", FALSE); - gGameExternalOptions.fEnableAllWeaponCaches = iniReader.ReadBoolean("JA2 Gameplay Settings", "ENABLE_ALL_WEAPON_CACHES", FALSE); + + gGameExternalOptions.ubTrainingSkillMin = iniReader.ReadInteger("JA2 Gameplay Settings","TRAINING_SKILL_MIN",0); + gGameExternalOptions.ubTrainingSkillMax = iniReader.ReadInteger("JA2 Gameplay Settings","TRAINING_SKILL_MAX",100); + gGameExternalOptions.ubSelfTrainingDivisor = iniReader.ReadInteger("JA2 Gameplay Settings","SELF_TRAINING_DIVISOR",1000); + gGameExternalOptions.ubInstructedTrainingDivisor = iniReader.ReadInteger("JA2 Gameplay Settings","INSTRUCTED_TRAINING_DIVISOR",3000); + gGameExternalOptions.ubGunRangeTrainingBonus = iniReader.ReadInteger("JA2 Gameplay Settings","GUN_RANGE_TRAINING_BONUS",25); + gGameExternalOptions.ubTownMilitiaTrainingRate = iniReader.ReadInteger("JA2 Gameplay Settings","MILITIA_TRAINING_RATE",4); + gGameExternalOptions.ubMaxMilitiaTrainersPerSector = iniReader.ReadInteger("JA2 Gameplay Settings","MAX_MILITIA_TRAINERS_PER_SECTOR",2); + gGameExternalOptions.ubTeachBonusToTrain = iniReader.ReadInteger("JA2 Gameplay Settings","TEACH_BONUS_TO_TRAIN",30); + gGameExternalOptions.ubRpcBonusToTrainMilitia = iniReader.ReadInteger("JA2 Gameplay Settings","RPC_BONUS_TO_TRAIN_MILITIA",10); + gGameExternalOptions.ubMinSkillToTeach = iniReader.ReadInteger("JA2 Gameplay Settings","MIN_RATING_TO_TEACH",25); + + gGameExternalOptions.ubLowActivityLevel = iniReader.ReadInteger("JA2 Gameplay Settings","LOW_ACTIVITY_LEVEL",1); + gGameExternalOptions.ubMediumActivityLevel = iniReader.ReadInteger("JA2 Gameplay Settings","MEDIUM_ACTIVITY_LEVEL",4); + gGameExternalOptions.ubHighActivityLevel = iniReader.ReadInteger("JA2 Gameplay Settings","HIGH_ACTIVITY_LEVEL",12); + gGameExternalOptions.ubDoctoringRateDivisor = iniReader.ReadInteger("JA2 Gameplay Settings","DOCTORING_RATE_DIVISOR",2400); + gGameExternalOptions.ubHospitalHealingRate = iniReader.ReadInteger("JA2 Gameplay Settings","HOSPITAL_HEALING_RATE",5); + gGameExternalOptions.ubBaseMedicalSkillToDealWithEmergency = iniReader.ReadInteger("JA2 Gameplay Settings","BASE_MEDICAL_SKILL_TO_DEAL_WITH_EMERGENCY",20); + gGameExternalOptions.ubMultiplierForDifferenceInLifeValueForEmergency = iniReader.ReadInteger("JA2 Gameplay Settings","MULTIPLIER_FOR_DIFFERENCE_IN_LIFE_VALUE_FOR_EMERGENCY",4); + gGameExternalOptions.ubPointCostPerHealthBelowOkLife = iniReader.ReadInteger("JA2 Gameplay Settings","POINT_COST_PER_HEALTH_BELOW_OKLIFE",2);//OKLIFE = 15 + + gGameExternalOptions.ubRepairCostPerJam = iniReader.ReadInteger("JA2 Gameplay Settings","REPAIR_COST_PER_JAM",2); + gGameExternalOptions.ubRepairRateDivisor = iniReader.ReadInteger("JA2 Gameplay Settings","REPAIR_RATE_DIVISOR",2500); + + + + //Misc + gGameExternalOptions.fAmmoDynamicWeight = iniReader.ReadBoolean("JA2 Gameplay Settings", "DYNAMIC_AMMO_WEIGHT", TRUE); //Pulmu + gGameExternalOptions.fEnableCrepitus = iniReader.ReadBoolean("JA2 Gameplay Settings", "ENABLE_CREPITUS", TRUE); + + gGameExternalOptions.fEnableAllTerrorists = iniReader.ReadBoolean("JA2 Gameplay Settings", "ENABLE_ALL_TERRORISTS", FALSE); + gGameExternalOptions.fEnableAllWeaponCaches = iniReader.ReadBoolean("JA2 Gameplay Settings", "ENABLE_ALL_WEAPON_CACHES", FALSE); } diff --git a/GameSettings.h b/GameSettings.h index aee1d6d81..d20c85dec 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -304,6 +304,34 @@ typedef struct BOOLEAN gfHardAggressiveQueen; BOOLEAN gfInsaneAggressiveQueen; + //Merc Assignment settings + INT32 ubAssignmentUnitsPerDay; + INT32 ubMinutesForAssignmentToCount; + + + INT32 ubTrainingSkillMin; + INT32 ubTrainingSkillMax; + INT32 ubSelfTrainingDivisor; + INT32 ubInstructedTrainingDivisor; + INT32 ubGunRangeTrainingBonus; + INT32 ubTownMilitiaTrainingRate; + INT32 ubMaxMilitiaTrainersPerSector; + INT32 ubTeachBonusToTrain; + INT32 ubRpcBonusToTrainMilitia; + INT32 ubMinSkillToTeach; + + INT32 ubLowActivityLevel; + INT32 ubMediumActivityLevel; + INT32 ubHighActivityLevel; + INT32 ubDoctoringRateDivisor; + INT32 ubHospitalHealingRate; + INT32 ubBaseMedicalSkillToDealWithEmergency; + INT32 ubMultiplierForDifferenceInLifeValueForEmergency; + INT32 ubPointCostPerHealthBelowOkLife;//OKLIFE = 15 + + INT32 ubRepairCostPerJam; + INT32 ubRepairRateDivisor; + //Misc settings BOOLEAN fAmmoDynamicWeight; //Pulmu BOOLEAN fEnableCrepitus; diff --git a/GameVersion.cpp b/GameVersion.cpp index b9b338922..7f4ece597 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -23,12 +23,12 @@ INT16 zVersionLabel[256] = { L"Beta v. 0.98" }; #else //RELEASE BUILD VERSION - INT16 zVersionLabel[256] = { L"Release v1.13.430" }; + INT16 zVersionLabel[256] = { L"Release v1.13.432" }; #endif -INT8 czVersionNumber[16] = { "Build 06.08.12" }; +INT8 czVersionNumber[16] = { "Build 06.08.13" }; INT16 zTrackingNumber[16] = { L"Z" }; diff --git a/Strategic/Assignments.cpp b/Strategic/Assignments.cpp index 6c4da5d05..24a96766c 100644 --- a/Strategic/Assignments.cpp +++ b/Strategic/Assignments.cpp @@ -186,7 +186,7 @@ SOLDIERTYPE *gpDismissSoldier = NULL; BOOLEAN gfReEvaluateEveryonesNothingToDo = FALSE; - +/* // the amount time must be on assignment before it can have any effect #define MINUTES_FOR_ASSIGNMENT_TO_COUNT 45 @@ -241,7 +241,7 @@ BOOLEAN gfReEvaluateEveryonesNothingToDo = FALSE; #define LOW_ACTIVITY_LEVEL 1 #define MEDIUM_ACTIVITY_LEVEL 4 #define HIGH_ACTIVITY_LEVEL 12 - +*/ /* // the min breath to stay awake #define MIN_BREATH_TO_STAY_AWAKE 15 @@ -1100,7 +1100,7 @@ BOOLEAN CanCharacterTrainMilitia( SOLDIERTYPE *pSoldier ) MilitiaTrainingAllowedInSector( pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ) && DoesSectorMercIsInHaveSufficientLoyaltyToTrainMilitia( pSoldier ) && ( IsMilitiaTrainableFromSoldiersSectorMaxed( pSoldier ) == FALSE ) && - ( CountMilitiaTrainersInSoldiersSector( pSoldier ) < MAX_MILITIA_TRAINERS_PER_SECTOR ) ) + ( CountMilitiaTrainersInSoldiersSector( pSoldier ) < gGameExternalOptions.ubMaxMilitiaTrainersPerSector ) ) { return( TRUE ); } @@ -1276,45 +1276,53 @@ BOOLEAN CanCharacterTrainStat( SOLDIERTYPE *pSoldier, INT8 bStat, BOOLEAN fTrain { case ( STRENGTH ): // strength - if( ( ( pSoldier -> bStrength < MIN_RATING_TO_TEACH ) && ( fTrainTeammate ) ) ) + if ( pSoldier->bStrength < gGameExternalOptions.ubTrainingSkillMin ) + return FALSE; + else if( ( ( pSoldier -> bStrength < gGameExternalOptions.ubMinSkillToTeach ) && ( fTrainTeammate ) ) ) { return ( FALSE ); } - else if( ( pSoldier -> bStrength >= TRAINING_RATING_CAP ) && ( fTrainSelf ) ) + else if( ( pSoldier -> bStrength >= gGameExternalOptions.ubTrainingSkillMax ) && ( fTrainSelf ) ) { return ( FALSE ); } break; case( DEXTERITY ): // dexterity - if( ( ( pSoldier -> bDexterity < MIN_RATING_TO_TEACH ) && ( fTrainTeammate ) ) ) + if ( pSoldier->bDexterity < gGameExternalOptions.ubTrainingSkillMin ) + return FALSE; + else if( ( ( pSoldier -> bDexterity < gGameExternalOptions.ubMinSkillToTeach ) && ( fTrainTeammate ) ) ) { return ( FALSE ); } - else if( ( pSoldier -> bDexterity >= TRAINING_RATING_CAP )&&( fTrainSelf ) ) + else if( ( pSoldier -> bDexterity >= gGameExternalOptions.ubTrainingSkillMax )&&( fTrainSelf ) ) { return ( FALSE ); } break; case( AGILITY ): // agility - if( ( ( pSoldier -> bAgility < MIN_RATING_TO_TEACH ) && ( fTrainTeammate ) ) ) + if ( pSoldier->bAgility < gGameExternalOptions.ubTrainingSkillMin ) + return FALSE; + else if( ( ( pSoldier -> bAgility < gGameExternalOptions.ubMinSkillToTeach ) && ( fTrainTeammate ) ) ) { return ( FALSE ); } - else if( ( pSoldier -> bAgility >= TRAINING_RATING_CAP )&&( fTrainSelf ) ) + else if( ( pSoldier -> bAgility >= gGameExternalOptions.ubTrainingSkillMax )&&( fTrainSelf ) ) { return ( FALSE ); } break; case( HEALTH ): - // wisdom - if( ( ( pSoldier -> bLifeMax < MIN_RATING_TO_TEACH ) && ( fTrainTeammate ) ) ) + // health + if ( pSoldier->bLifeMax < gGameExternalOptions.ubTrainingSkillMin ) + return FALSE; + else if( ( ( pSoldier -> bLifeMax < gGameExternalOptions.ubMinSkillToTeach ) && ( fTrainTeammate ) ) ) { return ( FALSE ); } - else if( ( pSoldier -> bLifeMax >= TRAINING_RATING_CAP )&&( fTrainSelf ) ) + else if( ( pSoldier -> bLifeMax >= gGameExternalOptions.ubTrainingSkillMax )&&( fTrainSelf ) ) { return ( FALSE ); } @@ -1322,11 +1330,13 @@ BOOLEAN CanCharacterTrainStat( SOLDIERTYPE *pSoldier, INT8 bStat, BOOLEAN fTrain break; case( MARKSMANSHIP ): // marksmanship - if( ( ( pSoldier -> bMarksmanship < MIN_RATING_TO_TEACH ) && ( fTrainTeammate ) ) ) + if ( pSoldier->bMarksmanship < gGameExternalOptions.ubTrainingSkillMin ) + return FALSE; + else if( ( ( pSoldier -> bMarksmanship < gGameExternalOptions.ubMinSkillToTeach ) && ( fTrainTeammate ) ) ) { return ( FALSE ); } - else if( ( pSoldier -> bMarksmanship >= TRAINING_RATING_CAP )&&( fTrainSelf ) ) + else if( ( pSoldier -> bMarksmanship >= gGameExternalOptions.ubTrainingSkillMax )&&( fTrainSelf ) ) { return ( FALSE ); } @@ -1334,11 +1344,13 @@ BOOLEAN CanCharacterTrainStat( SOLDIERTYPE *pSoldier, INT8 bStat, BOOLEAN fTrain break; case( MEDICAL ): // medical - if( ( ( pSoldier -> bMedical < MIN_RATING_TO_TEACH ) && ( fTrainTeammate ) ) ) + if ( pSoldier->bMedical < gGameExternalOptions.ubTrainingSkillMin ) + return FALSE; + else if( ( ( pSoldier -> bMedical < gGameExternalOptions.ubMinSkillToTeach ) && ( fTrainTeammate ) ) ) { return ( FALSE ); } - else if( ( pSoldier -> bMedical >= TRAINING_RATING_CAP )&&( fTrainSelf ) ) + else if( ( pSoldier -> bMedical >= gGameExternalOptions.ubTrainingSkillMax )&&( fTrainSelf ) ) { return ( FALSE ); } @@ -1346,33 +1358,39 @@ BOOLEAN CanCharacterTrainStat( SOLDIERTYPE *pSoldier, INT8 bStat, BOOLEAN fTrain break; case( MECHANICAL ): // mechanical - if( ( ( pSoldier -> bMechanical < MIN_RATING_TO_TEACH ) && ( fTrainTeammate ) ) ) + if ( pSoldier->bMechanical < gGameExternalOptions.ubTrainingSkillMin ) + return FALSE; + else if( ( ( pSoldier -> bMechanical < gGameExternalOptions.ubMinSkillToTeach ) && ( fTrainTeammate ) ) ) { return ( FALSE ); } - else if( ( pSoldier -> bMechanical >= TRAINING_RATING_CAP )&&( fTrainSelf ) ) + else if( ( pSoldier -> bMechanical >= gGameExternalOptions.ubTrainingSkillMax )&&( fTrainSelf ) ) { return ( FALSE ); } break; case( LEADERSHIP ): // leadership - if( ( ( pSoldier -> bLeadership < MIN_RATING_TO_TEACH ) && ( fTrainTeammate ) ) ) + if ( pSoldier->bLeadership < gGameExternalOptions.ubTrainingSkillMin ) + return FALSE; + else if( ( ( pSoldier -> bLeadership < gGameExternalOptions.ubMinSkillToTeach ) && ( fTrainTeammate ) ) ) { return ( FALSE ); } - else if( ( pSoldier -> bLeadership >= TRAINING_RATING_CAP )&&( fTrainSelf ) ) + else if( ( pSoldier -> bLeadership >= gGameExternalOptions.ubTrainingSkillMax )&&( fTrainSelf ) ) { return ( FALSE ); } break; case( EXPLOSIVE_ASSIGN ): // explosives - if( ( ( pSoldier -> bExplosive < MIN_RATING_TO_TEACH ) && ( fTrainTeammate ) ) ) + if ( pSoldier->bExplosive < gGameExternalOptions.ubTrainingSkillMin ) + return FALSE; + else if( ( ( pSoldier -> bExplosive < gGameExternalOptions.ubMinSkillToTeach ) && ( fTrainTeammate ) ) ) { return ( FALSE ); } - else if( ( pSoldier -> bExplosive >= TRAINING_RATING_CAP )&&( fTrainSelf ) ) + else if( ( pSoldier -> bExplosive >= gGameExternalOptions.ubTrainingSkillMax )&&( fTrainSelf ) ) { return ( FALSE ); } @@ -2090,11 +2108,11 @@ UINT16 CalculateHealingPointsForDoctor(SOLDIERTYPE *pDoctor, UINT16 *pusMaxPts, } // calculate effective doctoring rate (adjusted for drugs, alcohol, etc.) - usHealPts = ( EffectiveMedical( pDoctor ) * (( EffectiveDexterity( pDoctor ) + EffectiveWisdom( pDoctor ) ) / 2) * (100 + ( 5 * EffectiveExpLevel( pDoctor) ) ) ) / DOCTORING_RATE_DIVISOR; + usHealPts = ( EffectiveMedical( pDoctor ) * (( EffectiveDexterity( pDoctor ) + EffectiveWisdom( pDoctor ) ) / 2) * (100 + ( 5 * EffectiveExpLevel( pDoctor) ) ) ) / gGameExternalOptions.ubDoctoringRateDivisor; // calculate normal doctoring rate - what it would be if his stats were "normal" (ignoring drugs, fatigue, equipment condition) // and equipment was not a hindrance - *pusMaxPts = ( pDoctor -> bMedical * (( pDoctor -> bDexterity + pDoctor -> bWisdom ) / 2 ) * (100 + ( 5 * pDoctor->bExpLevel) ) ) / DOCTORING_RATE_DIVISOR; + *pusMaxPts = ( pDoctor -> bMedical * (( pDoctor -> bDexterity + pDoctor -> bWisdom ) / 2 ) * (100 + ( 5 * pDoctor->bExpLevel) ) ) / gGameExternalOptions.ubDoctoringRateDivisor; // adjust for fatigue ReducePointsForFatigue( pDoctor, &usHealPts ); @@ -2149,11 +2167,11 @@ UINT8 CalculateRepairPointsForRepairman(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts } // calculate effective repair rate (adjusted for drugs, alcohol, etc.) - usRepairPts = (EffectiveMechanical( pSoldier ) * EffectiveDexterity( pSoldier ) * (100 + ( 5 * EffectiveExpLevel( pSoldier) ) ) ) / ( REPAIR_RATE_DIVISOR * ASSIGNMENT_UNITS_PER_DAY ); + usRepairPts = (EffectiveMechanical( pSoldier ) * EffectiveDexterity( pSoldier ) * (100 + ( 5 * EffectiveExpLevel( pSoldier) ) ) ) / ( gGameExternalOptions.ubRepairRateDivisor * gGameExternalOptions.ubAssignmentUnitsPerDay ); // calculate normal repair rate - what it would be if his stats were "normal" (ignoring drugs, fatigue, equipment condition) // and equipment was not a hindrance - *pusMaxPts = ( pSoldier -> bMechanical * pSoldier -> bDexterity * (100 + ( 5 * pSoldier->bExpLevel) ) ) / ( REPAIR_RATE_DIVISOR * ASSIGNMENT_UNITS_PER_DAY ); + *pusMaxPts = ( pSoldier -> bMechanical * pSoldier -> bDexterity * (100 + ( 5 * pSoldier->bExpLevel) ) ) / ( gGameExternalOptions.ubRepairRateDivisor * gGameExternalOptions.ubAssignmentUnitsPerDay ); // adjust for fatigue @@ -2542,7 +2560,7 @@ UINT8 GetMinHealingSkillNeeded( SOLDIERTYPE *pPatient ) if( pPatient -> bLife < OKLIFE ) { // less than ok life, return skill needed - return( BASE_MEDICAL_SKILL_TO_DEAL_WITH_EMERGENCY + ( MULTIPLIER_FOR_DIFFERENCE_IN_LIFE_VALUE_FOR_EMERGENCY * ( OKLIFE - pPatient -> bLife ) ) ); + return( gGameExternalOptions.ubBaseMedicalSkillToDealWithEmergency + ( gGameExternalOptions.ubMultiplierForDifferenceInLifeValueForEmergency * ( OKLIFE - pPatient -> bLife ) ) ); } else { @@ -2623,7 +2641,7 @@ UINT16 HealPatient( SOLDIERTYPE *pPatient, SOLDIERTYPE * pDoctor, UINT16 usHundr if( pPatient -> bLife < OKLIFE ) { // get points needed to heal him to OKLIFE - bPointsToUse = POINT_COST_PER_HEALTH_BELOW_OKLIFE * ( OKLIFE - pPatient -> bLife ); + bPointsToUse = gGameExternalOptions.ubPointCostPerHealthBelowOkLife * ( OKLIFE - pPatient -> bLife ); // if he needs more than we have, reduce to that if( bPointsToUse > usHealingPtsLeft ) @@ -2650,7 +2668,7 @@ UINT16 HealPatient( SOLDIERTYPE *pPatient, SOLDIERTYPE * pDoctor, UINT16 usHundr usTotalFullPtsUsed += bPointsHealed; // heal person the amount / POINT_COST_PER_HEALTH_BELOW_OKLIFE - pPatient -> bLife += (bPointsHealed / POINT_COST_PER_HEALTH_BELOW_OKLIFE); + pPatient -> bLife += (bPointsHealed / gGameExternalOptions.ubPointCostPerHealthBelowOkLife); // if we're done all we're supposed to, or the guy's at OKLIFE, bail if ( ( bPointsToUse <= 0 ) || ( pPatient -> bLife >= OKLIFE ) ) @@ -2750,7 +2768,7 @@ void CheckForAndHandleHospitalPatients( void ) if ( ( pTeamSoldier -> sSectorX == HOSPITAL_SECTOR_X ) && ( pTeamSoldier -> sSectorY == HOSPITAL_SECTOR_Y ) && ( pTeamSoldier -> bSectorZ == 0 ) ) { // heal this character - HealHospitalPatient( pTeamSoldier, HOSPITAL_HEALING_RATE ); + HealHospitalPatient( pTeamSoldier, gGameExternalOptions.ubHospitalHealingRate ); } } } @@ -2780,7 +2798,7 @@ void HealHospitalPatient( SOLDIERTYPE *pPatient, UINT16 usHealingPtsLeft ) if( pPatient -> bLife < OKLIFE ) { // get points needed to heal him to OKLIFE - bPointsToUse = POINT_COST_PER_HEALTH_BELOW_OKLIFE * ( OKLIFE - pPatient -> bLife ); + bPointsToUse = gGameExternalOptions.ubPointCostPerHealthBelowOkLife * ( OKLIFE - pPatient -> bLife ); // if he needs more than we have, reduce to that if( bPointsToUse > usHealingPtsLeft ) @@ -2791,7 +2809,7 @@ void HealHospitalPatient( SOLDIERTYPE *pPatient, UINT16 usHealingPtsLeft ) usHealingPtsLeft -= bPointsToUse; // heal person the amount / POINT_COST_PER_HEALTH_BELOW_OKLIFE - pPatient -> bLife += ( bPointsToUse / POINT_COST_PER_HEALTH_BELOW_OKLIFE ); + pPatient -> bLife += ( bPointsToUse / gGameExternalOptions.ubPointCostPerHealthBelowOkLife ); } // critical condition handled, now solve normal healing @@ -3756,7 +3774,7 @@ INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE // if trainee skill 0 or at/beyond the training cap, can't train //Orig: if ( ( bTraineeSkill == 0 ) || ( bTraineeSkill >= TRAINING_RATING_CAP ) ) // Madd - if ( ( bTraineeSkill >= TRAINING_RATING_CAP ) ) + if ( bTraineeSkill < gGameExternalOptions.ubTrainingSkillMin || bTraineeSkill >= gGameExternalOptions.ubTrainingSkillMax ) { return 0; } @@ -3775,10 +3793,10 @@ INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE } // calculate effective training pts - sTrainingPts = ( bTrainerEffSkill - bTraineeSkill ) * ( bTraineeEffWisdom + ( EffectiveWisdom( pInstructor ) + EffectiveLeadership( pInstructor ) ) / 2 ) / INSTRUCTED_TRAINING_DIVISOR; + sTrainingPts = ( bTrainerEffSkill - bTraineeSkill ) * ( bTraineeEffWisdom + ( EffectiveWisdom( pInstructor ) + EffectiveLeadership( pInstructor ) ) / 2 ) / gGameExternalOptions.ubInstructedTrainingDivisor; // calculate normal training pts - what it would be if his stats were "normal" (ignoring drugs, fatigue) - *pusMaxPts = ( bTrainerNatSkill - bTraineeSkill ) * ( bTraineeNatWisdom + ( pInstructor->bWisdom + pInstructor->bLeadership ) / 2 ) / INSTRUCTED_TRAINING_DIVISOR; + *pusMaxPts = ( bTrainerNatSkill - bTraineeSkill ) * ( bTraineeNatWisdom + ( pInstructor->bWisdom + pInstructor->bLeadership ) / 2 ) / gGameExternalOptions.ubInstructedTrainingDivisor; // put in a minimum (that can be reduced due to instructor being tired?) if (*pusMaxPts == 0) @@ -3794,11 +3812,11 @@ INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE // check for teaching skill bonuses if( gMercProfiles[ pInstructor -> ubProfile ].bSkillTrait == TEACHING ) { - bTrainingBonus += TEACH_BONUS_TO_TRAIN; + bTrainingBonus += gGameExternalOptions.ubTeachBonusToTrain; } if( gMercProfiles[ pInstructor -> ubProfile ].bSkillTrait2 == TEACHING ) { - bTrainingBonus += TEACH_BONUS_TO_TRAIN; + bTrainingBonus += gGameExternalOptions.ubTeachBonusToTrain; } // teaching bonus is counted as normal, but gun range bonus is not @@ -3807,7 +3825,7 @@ INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE // get special bonus if we're training marksmanship and we're in the gun range sector in Alma if ( ( bTrainStat == MARKSMANSHIP ) && fAtGunRange ) { - bTrainingBonus += GUN_RANGE_TRAINING_BONUS; + bTrainingBonus += gGameExternalOptions.ubGunRangeTrainingBonus; } // adjust for any training bonuses and for the relationship @@ -3868,27 +3886,23 @@ INT16 GetSoldierTrainingPts( SOLDIERTYPE *pSoldier, INT8 bTrainStat, BOOLEAN fAt return(0); } - // Madd - if ( bSkill == 0 ) - bSkill = 1; - // if skill 0 or at/beyond the training cap, can't train - if ( ( bSkill == 0 ) || ( bSkill >= TRAINING_RATING_CAP ) ) + if ( ( bSkill < gGameExternalOptions.ubTrainingSkillMin) || ( bSkill >= gGameExternalOptions.ubTrainingSkillMax ) ) { return 0; } // calculate normal training pts - what it would be if his stats were "normal" (ignoring drugs, fatigue) - *pusMaxPts = __max( ( ( pSoldier->bWisdom * ( TRAINING_RATING_CAP - bSkill ) ) / SELF_TRAINING_DIVISOR ), 1 ); + *pusMaxPts = __max( ( ( pSoldier->bWisdom * ( gGameExternalOptions.ubTrainingSkillMax - bSkill ) ) / gGameExternalOptions.ubSelfTrainingDivisor ), 1 ); // calculate effective training pts - sTrainingPts = __max( ( ( EffectiveWisdom( pSoldier ) * ( TRAINING_RATING_CAP - bSkill ) ) / SELF_TRAINING_DIVISOR ), 1 ); + sTrainingPts = __max( ( ( EffectiveWisdom( pSoldier ) * ( gGameExternalOptions.ubTrainingSkillMax - bSkill ) ) / gGameExternalOptions.ubSelfTrainingDivisor ), 1 ); // get special bonus if we're training marksmanship and we're in the gun range sector in Alma if ( ( bTrainStat == MARKSMANSHIP ) && fAtGunRange ) { - bTrainingBonus += GUN_RANGE_TRAINING_BONUS; + bTrainingBonus += gGameExternalOptions.ubGunRangeTrainingBonus; } // adjust for any training bonuses @@ -3954,22 +3968,22 @@ INT16 GetSoldierStudentPts( SOLDIERTYPE *pSoldier, INT8 bTrainStat, BOOLEAN fAtG } // if skill 0 or at/beyond the training cap, can't train - if ( ( bSkill == 0 ) || ( bSkill >= TRAINING_RATING_CAP ) ) + if ( bSkill < gGameExternalOptions.ubTrainingSkillMin || bSkill >= gGameExternalOptions.ubTrainingSkillMax ) { return 0; } // calculate normal training pts - what it would be if his stats were "normal" (ignoring drugs, fatigue) - *pusMaxPts = __max( ( ( pSoldier->bWisdom * ( TRAINING_RATING_CAP - bSkill ) ) / SELF_TRAINING_DIVISOR ), 1 ); + *pusMaxPts = __max( ( ( pSoldier->bWisdom * ( gGameExternalOptions.ubTrainingSkillMax - bSkill ) ) / gGameExternalOptions.ubSelfTrainingDivisor ), 1 ); // calculate effective training pts - sTrainingPts = __max( ( ( EffectiveWisdom( pSoldier ) * ( TRAINING_RATING_CAP - bSkill ) ) / SELF_TRAINING_DIVISOR ), 1 ); + sTrainingPts = __max( ( ( EffectiveWisdom( pSoldier ) * ( gGameExternalOptions.ubTrainingSkillMax - bSkill ) ) / gGameExternalOptions.ubSelfTrainingDivisor ), 1 ); // get special bonus if we're training marksmanship and we're in the gun range sector in Alma if ( ( bTrainStat == MARKSMANSHIP ) && fAtGunRange ) { - bTrainingBonus += GUN_RANGE_TRAINING_BONUS; + bTrainingBonus += gGameExternalOptions.ubGunRangeTrainingBonus; } // adjust for any training bonuses @@ -4145,26 +4159,26 @@ INT16 GetTownTrainPtsForCharacter( SOLDIERTYPE *pTrainer, UINT16 *pusMaxPts ) // UINT8 ubTownId = 0; // calculate normal training pts - what it would be if his stats were "normal" (ignoring drugs, fatigue) - *pusMaxPts = ( pTrainer -> bWisdom + pTrainer -> bLeadership + ( 10 * pTrainer -> bExpLevel ) ) * TOWN_TRAINING_RATE; + *pusMaxPts = ( pTrainer -> bWisdom + pTrainer -> bLeadership + ( 10 * pTrainer -> bExpLevel ) ) * gGameExternalOptions.ubTownMilitiaTrainingRate; // calculate effective training points (this is hundredths of pts / hour) // typical: 300/hr, maximum: 600/hr - sTotalTrainingPts = ( EffectiveWisdom( pTrainer ) + EffectiveLeadership ( pTrainer ) + ( 10 * EffectiveExpLevel ( pTrainer ) ) ) * TOWN_TRAINING_RATE; + sTotalTrainingPts = ( EffectiveWisdom( pTrainer ) + EffectiveLeadership ( pTrainer ) + ( 10 * EffectiveExpLevel ( pTrainer ) ) ) * gGameExternalOptions.ubTownMilitiaTrainingRate; // check for teaching bonuses if( gMercProfiles[ pTrainer -> ubProfile ].bSkillTrait == TEACHING ) { - bTrainingBonus += TEACH_BONUS_TO_TRAIN; + bTrainingBonus += gGameExternalOptions.ubTeachBonusToTrain; } if( gMercProfiles[ pTrainer -> ubProfile ].bSkillTrait2 == TEACHING ) { - bTrainingBonus += TEACH_BONUS_TO_TRAIN; + bTrainingBonus += gGameExternalOptions.ubTeachBonusToTrain; } // RPCs get a small training bonus for being more familiar with the locals and their customs/needs than outsiders if( pTrainer->ubProfile >= FIRST_RPC ) { - bTrainingBonus += RPC_BONUS_TO_TRAIN; + bTrainingBonus += gGameExternalOptions.ubRpcBonusToTrainMilitia; } // adjust for teaching bonus (a percentage) @@ -4402,11 +4416,11 @@ void HandleHealingByNaturalCauses( SOLDIERTYPE *pSoldier ) if( pSoldier -> bAssignment == ASSIGNMENT_POW ) { // use high activity level to simulate stress, torture, poor conditions for healing - bActivityLevelDivisor = HIGH_ACTIVITY_LEVEL; + bActivityLevelDivisor = gGameExternalOptions.ubHighActivityLevel; } if( ( pSoldier -> fMercAsleep == TRUE ) || ( pSoldier -> bAssignment == PATIENT ) || ( pSoldier -> bAssignment == ASSIGNMENT_HOSPITAL ) ) { - bActivityLevelDivisor = LOW_ACTIVITY_LEVEL; + bActivityLevelDivisor = gGameExternalOptions.ubLowActivityLevel; } else if ( pSoldier->bAssignment < ON_DUTY ) { @@ -4414,17 +4428,17 @@ void HandleHealingByNaturalCauses( SOLDIERTYPE *pSoldier ) if ( IsTimeBeingCompressed() && !PlayerIDGroupInMotion( pSoldier->ubGroupID ) ) { // basically resting - bActivityLevelDivisor = LOW_ACTIVITY_LEVEL; + bActivityLevelDivisor = gGameExternalOptions.ubLowActivityLevel; } else { // either they're on the move, or they're being tactically active - bActivityLevelDivisor = HIGH_ACTIVITY_LEVEL; + bActivityLevelDivisor = gGameExternalOptions.ubHighActivityLevel; } } else // this includes being in a vehicle - that's neither very strenous, nor very restful { - bActivityLevelDivisor = MEDIUM_ACTIVITY_LEVEL; + bActivityLevelDivisor = gGameExternalOptions.ubMediumActivityLevel; } @@ -7376,9 +7390,9 @@ void TrainingMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) break; } - if ( CountMilitiaTrainersInSoldiersSector( pSoldier ) >= MAX_MILITIA_TRAINERS_PER_SECTOR ) + if ( CountMilitiaTrainersInSoldiersSector( pSoldier ) >= gGameExternalOptions.ubMaxMilitiaTrainersPerSector ) { - swprintf( sString, gzLateLocalizedString[ 47 ], MAX_MILITIA_TRAINERS_PER_SECTOR ); + swprintf( sString, gzLateLocalizedString[ 47 ], gGameExternalOptions.ubMaxMilitiaTrainersPerSector ); DoScreenIndependantMessageBox( sString, MSG_BOX_FLAG_OK, NULL ); break; } @@ -10295,7 +10309,7 @@ void SetTimeOfAssignmentChangeForMerc( SOLDIERTYPE *pSoldier ) // have we spent enough time on assignment for it to count? BOOLEAN EnoughTimeOnAssignment( SOLDIERTYPE *pSoldier ) { - if( GetWorldTotalMin() - pSoldier->uiLastAssignmentChangeMin >= MINUTES_FOR_ASSIGNMENT_TO_COUNT ) + if( GetWorldTotalMin() - pSoldier->uiLastAssignmentChangeMin >= gGameExternalOptions.ubMinutesForAssignmentToCount ) { return( TRUE ); } @@ -11503,9 +11517,9 @@ BOOLEAN UnjamGunsOnSoldier( SOLDIERTYPE *pOwnerSoldier, SOLDIERTYPE *pRepairSold // the object a weapon? and jammed? if ( ( Item[ pOwnerSoldier->inv[ bPocket ].usItem ].usItemClass == IC_GUN ) && ( pOwnerSoldier->inv[ bPocket ].bGunAmmoStatus < 0 ) ) { - if ( *pubRepairPtsLeft >= REPAIR_COST_PER_JAM ) + if ( *pubRepairPtsLeft >= gGameExternalOptions.ubRepairCostPerJam ) { - *pubRepairPtsLeft -= REPAIR_COST_PER_JAM; + *pubRepairPtsLeft -= gGameExternalOptions.ubRepairCostPerJam; pOwnerSoldier->inv [ bPocket ].bGunAmmoStatus *= -1; diff --git a/Tactical/ArmsDealerInvInit.cpp b/Tactical/ArmsDealerInvInit.cpp index 531e3804c..6f84af106 100644 --- a/Tactical/ArmsDealerInvInit.cpp +++ b/Tactical/ArmsDealerInvInit.cpp @@ -1063,7 +1063,7 @@ UINT8 ChanceOfItemTransaction( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEAN fDe // Madd if ( !fDealerIsSelling && fBobbyRay ) - ubChance *= gGameOptions.ubBobbyRay; + ubChance = min(100,gGameOptions.ubBobbyRay * ubChance); // if there's any uncertainty if ((ubChance > 0) && (ubChance < 100)) @@ -1181,6 +1181,7 @@ UINT8 HowManyItemsAreSold( INT8 bArmsDealerID, UINT16 usItemIndex, UINT8 ubNumIn UINT8 HowManyItemsToReorder(UINT8 ubWanted, UINT8 ubStillHave) { UINT8 ubNumReordered; + DebugMsg(TOPIC_JA2, DBG_LEVEL_3,String("HowManyItemsToReorder: wanted = %d, still have = %d",ubWanted, ubStillHave)); Assert(ubStillHave <= ubWanted); @@ -1197,6 +1198,7 @@ UINT8 HowManyItemsToReorder(UINT8 ubWanted, UINT8 ubStillHave) break; } + DebugMsg(TOPIC_JA2, DBG_LEVEL_3,String("HowManyBRItemsToOrder: reordered = %d",ubNumReordered)); return(ubNumReordered); } diff --git a/Tactical/Campaign.cpp b/Tactical/Campaign.cpp index 6f2150bd8..197503013 100644 --- a/Tactical/Campaign.cpp +++ b/Tactical/Campaign.cpp @@ -252,7 +252,7 @@ void ProcessStatChange(MERCPROFILESTRUCT *pProfile, UINT8 ubStat, UINT16 usNumCh usChance = 100 - (bCurrentRating + (*psStatGainPtr / usSubpointsPerPoint)); // prevent training beyond the training cap - if ((ubReason == FROM_TRAINING) && (bCurrentRating + (*psStatGainPtr / usSubpointsPerPoint) >= TRAINING_RATING_CAP)) + if ((ubReason == FROM_TRAINING) && (bCurrentRating + (*psStatGainPtr / usSubpointsPerPoint) >= gGameExternalOptions.ubTrainingSkillMax)) { usChance = 0; } diff --git a/Tactical/Campaign.h b/Tactical/Campaign.h index 45d9308fe..3b163679f 100644 --- a/Tactical/Campaign.h +++ b/Tactical/Campaign.h @@ -38,7 +38,7 @@ // training cap: you can't train any stat/skill beyond this value // Madd -#define TRAINING_RATING_CAP 100 // 85 +//#define TRAINING_RATING_CAP 100 // 85 // stat change causes #define FROM_SUCCESS 0 diff --git a/Tactical/Handle Items.cpp b/Tactical/Handle Items.cpp index 4f191d678..2425bbba9 100644 --- a/Tactical/Handle Items.cpp +++ b/Tactical/Handle Items.cpp @@ -116,6 +116,7 @@ void StartBombMessageBox( SOLDIERTYPE * pSoldier, INT16 sGridNo ); BOOLEAN HandleCheckForBadChangeToGetThrough( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pTargetSoldier, INT16 sTargetGridNo , INT8 bLevel ) { BOOLEAN fBadChangeToGetThrough = FALSE; + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("HandleCheckForBadChangeToGetThrough")); if ( pTargetSoldier != NULL ) { diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 5da823a97..11c37fbd8 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -7605,6 +7605,7 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( UINT8 ubID, BOOLEAN fCalledByAttacke SOLDIERTYPE * ReduceAttackBusyCount( UINT8 ubID, BOOLEAN fCalledByAttacker ) { + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("ReduceAttackBusyCount") ); if ( ubID == NOBODY ) { return( InternalReduceAttackBusyCount( ubID, fCalledByAttacker, NOBODY ) ); @@ -7620,7 +7621,7 @@ SOLDIERTYPE * FreeUpAttacker( UINT8 ubID ) // Strange as this may seem, this function returns a pointer to // the *target* in case the target has changed sides as a result // of being attacked - + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("FreeUpAttacker") ); return( ReduceAttackBusyCount( ubID, TRUE ) ); } @@ -7629,7 +7630,7 @@ SOLDIERTYPE * FreeUpAttackerGivenTarget( UINT8 ubID, UINT8 ubTargetID ) // Strange as this may seem, this function returns a pointer to // the *target* in case the target has changed sides as a result // of being attacked - + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("FreeUpAttackerGivenTarget") ); return( InternalReduceAttackBusyCount( ubID, TRUE, ubTargetID ) ); } @@ -7638,7 +7639,7 @@ SOLDIERTYPE * ReduceAttackBusyGivenTarget( UINT8 ubID, UINT8 ubTargetID ) // Strange as this may seem, this function returns a pointer to // the *target* in case the target has changed sides as a result // of being attacked - + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("ReduceAttackBusyGivenTarget") ); return( InternalReduceAttackBusyCount( ubID, FALSE, ubTargetID ) ); } diff --git a/Tactical/Soldier Ani.cpp b/Tactical/Soldier Ani.cpp index 8c74e614c..61a3f7fed 100644 --- a/Tactical/Soldier Ani.cpp +++ b/Tactical/Soldier Ani.cpp @@ -331,6 +331,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) case 430: + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"AdjustToNextAnimationFrame: case 430"); // SHOOT GUN // MAKE AN EVENT, BUT ONLY DO STUFF IF WE OWN THE GUY! SFireWeapon.usSoldierID = pSoldier->ubID; @@ -714,6 +715,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) if ( ( pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST && pSoldier->bDoBurst > Weapon[GetAttachedGrenadeLauncher(&pSoldier->inv[HANDPOS])].ubShotsPerBurst) || (pSoldier->bWeaponMode != WM_ATTACHED_GL_BURST && pSoldier->bDoBurst > ((pSoldier->bDoAutofire)?(pSoldier->bDoAutofire):(GetShotsPerBurst(&pSoldier->inv[HANDPOS])))) ) { + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"AdjustToNextAnimationFrame: Burst case 448, stopping because burst size too large"); fStop = TRUE; fFreeUpAttacker = TRUE; } @@ -721,6 +723,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) // CHECK IF WE HAVE AMMO LEFT, IF NOT, END ANIMATION! if ( !EnoughAmmo( pSoldier, FALSE, pSoldier->ubAttackingHand ) ) { + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"AdjustToNextAnimationFrame: Burst case 448, stopping because not enough ammo"); fStop = TRUE; fFreeUpAttacker = TRUE; if ( pSoldier->bTeam == gbPlayerNum ) @@ -734,6 +737,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) bWeaponJammed = CheckForGunJam( pSoldier ); if ( bWeaponJammed == TRUE ) { + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"AdjustToNextAnimationFrame: Burst case 448, stopping because weapon jammed"); fStop = TRUE; fFreeUpAttacker = TRUE; // stop shooting! diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 06b92367b..c18e40f8d 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -1333,6 +1333,7 @@ void CheckForFreeupFromHit( SOLDIERTYPE *pSoldier, UINT32 uiOldAnimFlags, UINT32 // THIS IS CALLED FROM AN EVENT ( S_CHANGESTATE )! BOOLEAN EVENT_InitNewSoldierAnim( SOLDIERTYPE *pSoldier, UINT16 usNewState, UINT16 usStartingAniCode, BOOLEAN fForce ) { + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"EVENT_InitNewSoldierAnim"); UINT16 usNewGridNo = 0; INT16 sAPCost = 0; INT16 sBPCost = 0; @@ -2827,6 +2828,7 @@ void EVENT_FireSoldierWeapon( SOLDIERTYPE *pSoldier, INT16 sTargetGridNo ) pSoldier->bBulletsLeft = __min( pSoldier->bDoAutofire, pSoldier->inv[ pSoldier->ubAttackingHand ].ubGunShotsLeft ); else { + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"EVENT_FireSoldierWeapon: do burst"); if ( pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST ) pSoldier->bBulletsLeft = __min( Weapon[GetAttachedGrenadeLauncher(&pSoldier->inv[pSoldier->ubAttackingHand])].ubShotsPerBurst, pSoldier->inv[ pSoldier->ubAttackingHand ].ubGunShotsLeft ); else @@ -5167,6 +5169,7 @@ void TurnSoldier( SOLDIERTYPE *pSoldier) { if ( ( (gAnimControl[ pSoldier->usAnimState ].uiFlags & ANIM_FIREREADY ) && !pSoldier->fTurningFromPronePosition ) || pSoldier->ubBodyType == ROBOTNOWEAPON || pSoldier->ubBodyType == TANK_NW || pSoldier->ubBodyType == TANK_NE ) { + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("TurnSoldier: EVENT_InitNewSoldierAnim") ); EVENT_InitNewSoldierAnim( pSoldier, SelectFireAnimation( pSoldier, gAnimControl[ pSoldier->usAnimState ].ubEndHeight ), 0, FALSE ); pSoldier->fTurningToShoot = FALSE; @@ -5744,6 +5747,7 @@ void AdjustAniSpeed( SOLDIERTYPE *pSoldier ) void CalculateSoldierAniSpeed( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pStatsSoldier ) { + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"CalculateSoldierAniSpeed"); UINT32 uiTerrainDelay; UINT32 uiSpeed = 0; @@ -5924,6 +5928,7 @@ void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier ) { SOLDIERTYPE *pStatsSoldier; + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,"SetSoldierAniSpeed"); // ATE: If we are an enemy and are not visible...... // Set speed to 0 @@ -8125,6 +8130,7 @@ void SendChangeSoldierStanceEvent( SOLDIERTYPE *pSoldier, UINT8 ubNewStance ) void SendBeginFireWeaponEvent( SOLDIERTYPE *pSoldier, INT16 sTargetGridNo ) { + DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SendBeginFireWeaponEvent")); EV_S_BEGINFIREWEAPON SBeginFireWeapon; SBeginFireWeapon.usSoldierID = pSoldier->ubID; @@ -9189,6 +9195,7 @@ void GivingSoldierCancelServices( SOLDIERTYPE *pSoldier ) void HaultSoldierFromSighting( SOLDIERTYPE *pSoldier, BOOLEAN fFromSightingEnemy ) { + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("HaultSoldierFromSighting") ); // SEND HUALT EVENT! //EV_S_STOP_MERC SStopMerc; diff --git a/Tactical/TeamTurns.cpp b/Tactical/TeamTurns.cpp index a2af069af..bc2cfaf86 100644 --- a/Tactical/TeamTurns.cpp +++ b/Tactical/TeamTurns.cpp @@ -1851,7 +1851,7 @@ void DoneAddingToIntList( SOLDIERTYPE * pSoldier, BOOLEAN fChange, UINT8 ubInter void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType) { - DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"ResolveInterruptsVs"); + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("ResolveInterruptsVs: Soldier ID = %d, APs = %d",pSoldier->ubID,pSoldier->bActionPoints)); UINT8 ubTeam, ubOpp; UINT8 ubIntCnt; UINT8 ubIntList[MAXMERCS]; @@ -1901,6 +1901,7 @@ void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType) switch (pOpponent->bInterruptDuelPts) { case NO_INTERRUPT: // no interrupt possible, no duel necessary + DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("ResolveInterruptsVs: No interrupt for opponent %d", pOpponent->ubID ) ); fIntOccurs = FALSE; break;