mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
unified code for enemy/militia gear selection
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8334 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+95
-245
@@ -247,7 +247,7 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ARMED_VEHICLE( pp ) )
|
if ( ARMED_VEHICLE( pp ) )
|
||||||
{
|
{
|
||||||
EquipArmouredVehicle( pp, TANK( pp ) );
|
EquipArmouredVehicle( pp, TANK( pp ) );
|
||||||
@@ -332,15 +332,22 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
// SANDRO - I've split the item choosing below, so the item choices for militia can be
|
// SANDRO - I've split the item choosing below, so the item choices for militia can be
|
||||||
// handled differently than for enemies.
|
// handled differently than for enemies.
|
||||||
case SOLDIER_CLASS_ADMINISTRATOR:
|
case SOLDIER_CLASS_ADMINISTRATOR:
|
||||||
//if ( gGameOptions.fSlowProgressForEnemyItemsChoice )
|
case SOLDIER_CLASS_GREEN_MILITIA:
|
||||||
// bRating = bEquipmentModifier - ( bSoldierClass == SOLDIER_CLASS_ADMINISTRATOR );
|
|
||||||
//else
|
|
||||||
bRating = BAD_ADMINISTRATOR_EQUIPMENT_RATING + bEquipmentModifier;
|
bRating = BAD_ADMINISTRATOR_EQUIPMENT_RATING + bEquipmentModifier;
|
||||||
|
|
||||||
// Equipment quality modifier
|
// Equipment quality modifier
|
||||||
if ( gGameExternalOptions.sEnemyAdminEquipmentQualityModifier != 0 )
|
if ( bSoldierClass == SOLDIER_CLASS_ADMINISTRATOR )
|
||||||
bRating += gGameExternalOptions.sEnemyAdminEquipmentQualityModifier;
|
{
|
||||||
|
if ( gGameExternalOptions.sEnemyAdminEquipmentQualityModifier != 0 )
|
||||||
|
bRating += gGameExternalOptions.sEnemyAdminEquipmentQualityModifier;
|
||||||
|
}
|
||||||
|
else if ( bSoldierClass == SOLDIER_CLASS_GREEN_MILITIA )
|
||||||
|
{
|
||||||
|
// SANDRO - Militia equipment quality bonus
|
||||||
|
if ( gGameExternalOptions.bGreenMilitiaEquipmentQualityModifier != 0 )
|
||||||
|
bRating += gGameExternalOptions.bGreenMilitiaEquipmentQualityModifier;
|
||||||
|
}
|
||||||
|
|
||||||
bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) );
|
bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) );
|
||||||
|
|
||||||
bWeaponClass = bRating;
|
bWeaponClass = bRating;
|
||||||
@@ -353,9 +360,17 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
bHelmetClass = bRating;
|
bHelmetClass = bRating;
|
||||||
// no leggings
|
// no leggings
|
||||||
|
|
||||||
if( Chance( 30 ) )
|
if ( bSoldierClass == SOLDIER_CLASS_ADMINISTRATOR )
|
||||||
bKnifeClass = bRating;
|
{
|
||||||
|
if ( Chance( 30 ) )
|
||||||
|
bKnifeClass = bRating;
|
||||||
|
}
|
||||||
|
else if ( bSoldierClass == SOLDIER_CLASS_GREEN_MILITIA )
|
||||||
|
{
|
||||||
|
if ( Chance( 15 ) )
|
||||||
|
bKnifeClass = bRating;
|
||||||
|
}
|
||||||
|
|
||||||
bAmmoClips = (INT8)(3 + Random( 2 ));
|
bAmmoClips = (INT8)(3 + Random( 2 ));
|
||||||
|
|
||||||
if( bRating >= GOOD_ADMINISTRATOR_EQUIPMENT_RATING )
|
if( bRating >= GOOD_ADMINISTRATOR_EQUIPMENT_RATING )
|
||||||
@@ -373,53 +388,6 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
bGrenades = 1, bGrenadeClass = bRating;
|
bGrenades = 1, bGrenadeClass = bRating;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ( bRating > MIN_EQUIPMENT_CLASS ) && bRating < MAX_EQUIPMENT_CLASS )
|
|
||||||
{ //Randomly decide if there is to be an upgrade of guns vs armour (one goes up, the other down)
|
|
||||||
switch( Random( 5 ) )
|
|
||||||
{
|
|
||||||
case 0: bWeaponClass++, bVestClass--; break; //better gun, worse armour
|
|
||||||
case 1: bWeaponClass--, bVestClass++; break; //worse gun, better armour
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SOLDIER_CLASS_GREEN_MILITIA:
|
|
||||||
|
|
||||||
bRating = BAD_ADMINISTRATOR_EQUIPMENT_RATING + bEquipmentModifier;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// SANDRO - Militia equipment quality bonus
|
|
||||||
if ( gGameExternalOptions.bGreenMilitiaEquipmentQualityModifier != 0 )
|
|
||||||
bRating += gGameExternalOptions.bGreenMilitiaEquipmentQualityModifier;
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) );
|
|
||||||
|
|
||||||
bWeaponClass = bRating;
|
|
||||||
//Headrocktest, remove for release
|
|
||||||
//bLBEClass = bRating;
|
|
||||||
|
|
||||||
//Note: in some cases the class of armour and/or helmet won't be high enough to make
|
|
||||||
// the lowest level.
|
|
||||||
bVestClass = bRating;
|
|
||||||
bHelmetClass = bRating;
|
|
||||||
|
|
||||||
if( Chance( 15 ) )
|
|
||||||
bKnifeClass = bRating;
|
|
||||||
|
|
||||||
bAmmoClips = (INT8)(3 + Random( 2 ));
|
|
||||||
|
|
||||||
if( bRating >= GOOD_ADMINISTRATOR_EQUIPMENT_RATING )
|
|
||||||
{
|
|
||||||
bAmmoClips++;
|
|
||||||
|
|
||||||
bMiscClass = bRating;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( bRating >= GREAT_ADMINISTRATOR_EQUIPMENT_RATING )
|
|
||||||
{
|
|
||||||
bGrenades = 1, bGrenadeClass = bRating;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ( bRating > MIN_EQUIPMENT_CLASS ) && bRating < MAX_EQUIPMENT_CLASS )
|
if( ( bRating > MIN_EQUIPMENT_CLASS ) && bRating < MAX_EQUIPMENT_CLASS )
|
||||||
{ //Randomly decide if there is to be an upgrade of guns vs armour (one goes up, the other down)
|
{ //Randomly decide if there is to be an upgrade of guns vs armour (one goes up, the other down)
|
||||||
switch( Random( 5 ) )
|
switch( Random( 5 ) )
|
||||||
@@ -431,16 +399,26 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SOLDIER_CLASS_ARMY:
|
case SOLDIER_CLASS_ARMY:
|
||||||
|
case SOLDIER_CLASS_REG_MILITIA:
|
||||||
//army guys tend to have a broad range of equipment
|
//army guys tend to have a broad range of equipment
|
||||||
//if ( gGameOptions.fSlowProgressForEnemyItemsChoice )
|
//if ( gGameOptions.fSlowProgressForEnemyItemsChoice )
|
||||||
// bRating = bEquipmentModifier - ( bSoldierClass == SOLDIER_CLASS_ARMY );
|
// bRating = bEquipmentModifier - ( bSoldierClass == SOLDIER_CLASS_ARMY );
|
||||||
//else
|
//else
|
||||||
bRating = BAD_ARMY_EQUIPMENT_RATING + bEquipmentModifier;
|
bRating = BAD_ARMY_EQUIPMENT_RATING + bEquipmentModifier;
|
||||||
|
|
||||||
// Equipment quality modifier
|
// Equipment quality modifier
|
||||||
if ( gGameExternalOptions.sEnemyRegularEquipmentQualityModifier != 0 )
|
if ( bSoldierClass == SOLDIER_CLASS_ARMY )
|
||||||
bRating += gGameExternalOptions.sEnemyRegularEquipmentQualityModifier;
|
{
|
||||||
|
if ( gGameExternalOptions.sEnemyRegularEquipmentQualityModifier != 0 )
|
||||||
|
bRating += gGameExternalOptions.sEnemyRegularEquipmentQualityModifier;
|
||||||
|
}
|
||||||
|
else if ( bSoldierClass == SOLDIER_CLASS_REG_MILITIA )
|
||||||
|
{
|
||||||
|
// SANDRO - Militia equipment quality bonus
|
||||||
|
if ( gGameExternalOptions.bRegularMilitiaEquipmentQualityModifier != 0 )
|
||||||
|
bRating += gGameExternalOptions.bRegularMilitiaEquipmentQualityModifier;
|
||||||
|
}
|
||||||
|
|
||||||
bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) );
|
bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) );
|
||||||
|
|
||||||
bWeaponClass = bRating;
|
bWeaponClass = bRating;
|
||||||
@@ -484,9 +462,17 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
bBombClass = bRating;
|
bBombClass = bRating;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( Chance( 35 ) )
|
if ( bSoldierClass == SOLDIER_CLASS_ARMY )
|
||||||
bKnifeClass = bRating;
|
{
|
||||||
|
if ( Chance( 35 ) )
|
||||||
|
bKnifeClass = bRating;
|
||||||
|
}
|
||||||
|
else if ( bSoldierClass == SOLDIER_CLASS_REG_MILITIA )
|
||||||
|
{
|
||||||
|
if ( Chance( 20 ) )
|
||||||
|
bKnifeClass = bRating;
|
||||||
|
}
|
||||||
|
|
||||||
// Headrock: Chance for soldier to carry better LBE
|
// Headrock: Chance for soldier to carry better LBE
|
||||||
//if( Chance( 50 ) )
|
//if( Chance( 50 ) )
|
||||||
@@ -541,7 +527,7 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
// one per team maximum!
|
// one per team maximum!
|
||||||
if ( (pp->bExpLevel >= 5) && (guiMortarsRolledByTeam < zDiffSetting[gGameOptions.ubDifficultyLevel].usMaxMortarsPerTeam) )
|
if ( bSoldierClass != SOLDIER_CLASS_REG_MILITIA && ( pp->bExpLevel >= 5 ) && (guiMortarsRolledByTeam < zDiffSetting[gGameOptions.ubDifficultyLevel].usMaxMortarsPerTeam) )
|
||||||
{
|
{
|
||||||
//mortar
|
//mortar
|
||||||
fMortar = TRUE;
|
fMortar = TRUE;
|
||||||
@@ -555,121 +541,27 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SOLDIER_CLASS_REG_MILITIA:
|
|
||||||
|
|
||||||
bRating = BAD_ARMY_EQUIPMENT_RATING + bEquipmentModifier;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// SANDRO - Militia equipment quality bonus
|
|
||||||
if ( gGameExternalOptions.bRegularMilitiaEquipmentQualityModifier != 0 )
|
|
||||||
bRating += gGameExternalOptions.bRegularMilitiaEquipmentQualityModifier;
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) );
|
|
||||||
|
|
||||||
bWeaponClass = bRating;
|
|
||||||
bVestClass = bRating;
|
|
||||||
bHelmetClass = bRating;
|
|
||||||
bGrenadeClass = bRating;
|
|
||||||
//WarmSteel - attachments don't need to be as high a class, controversional and might be better to externalize?
|
|
||||||
bAttachClass = bRating*3/8;
|
|
||||||
|
|
||||||
|
|
||||||
if( ( bRating >= GOOD_ARMY_EQUIPMENT_RATING ) && Chance(33) )
|
|
||||||
{
|
|
||||||
fAttachment = TRUE;
|
|
||||||
bAttachClass = bRating*5/8;
|
|
||||||
}
|
|
||||||
|
|
||||||
bAmmoClips = (INT8)(3 + Random( 2 ));
|
|
||||||
|
|
||||||
if( bRating >= AVERAGE_ARMY_EQUIPMENT_RATING )
|
|
||||||
{
|
|
||||||
bGrenades = (INT8)Random( 2 );
|
|
||||||
bKitClass = bRating;
|
|
||||||
bMiscClass = bRating;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( bRating >= GOOD_ARMY_EQUIPMENT_RATING )
|
|
||||||
{
|
|
||||||
bGrenades++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( bRating >= GREAT_ARMY_EQUIPMENT_RATING )
|
|
||||||
{
|
|
||||||
bGrenades++;
|
|
||||||
|
|
||||||
bLeggingClass = bRating;
|
|
||||||
|
|
||||||
if ( Chance( 25 ) )
|
|
||||||
{
|
|
||||||
bBombClass = bRating;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( Chance( 20 ) )
|
|
||||||
bKnifeClass = bRating;
|
|
||||||
|
|
||||||
if( ( bRating > MIN_EQUIPMENT_CLASS ) && bRating < MAX_EQUIPMENT_CLASS )
|
|
||||||
{
|
|
||||||
switch( Random( 7 ) )
|
|
||||||
{
|
|
||||||
case 3: bWeaponClass++, bVestClass--; break; //better gun, worse armour
|
|
||||||
case 4: bWeaponClass--, bVestClass++; break; //worse gun, better armour
|
|
||||||
case 5: bVestClass++, bHelmetClass--; break; //better armour, worse helmet
|
|
||||||
case 6: bVestClass--, bHelmetClass++; break; //worse armour, better helmet
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if well-enough equipped, 1/5 chance of something really special
|
|
||||||
if( ( bRating >= GREAT_ARMY_EQUIPMENT_RATING ) && ( Random( 100 ) < 20 ) )
|
|
||||||
{
|
|
||||||
//give this man a special weapon! No mortars if underground, however
|
|
||||||
ubMaxSpecialWeaponRoll = ( !IsAutoResolveActive() && ( gbWorldSectorZ != 0 ) ) ? 6 : 7;
|
|
||||||
switch ( Random ( ubMaxSpecialWeaponRoll ) )
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
if ( pp->bExpLevel >= 3 )
|
|
||||||
{
|
|
||||||
//grenade launcher
|
|
||||||
fGrenadeLauncher = TRUE;
|
|
||||||
bGrenades = 3 + (INT8)(Random( 3 )); //3-5
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
case 4:
|
|
||||||
if ( pp->bExpLevel >= 4 )
|
|
||||||
{
|
|
||||||
// LAW rocket launcher
|
|
||||||
fLAW = TRUE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
if ( pp->bExpLevel >= 5 )
|
|
||||||
{
|
|
||||||
// RPG rocket launcher
|
|
||||||
fRPG = TRUE;
|
|
||||||
bGrenades = 2 + (INT8)(Random( 3 )); //2-4
|
|
||||||
bGrenadeClass = RPG_GRENADE_CLASS;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SOLDIER_CLASS_ELITE:
|
case SOLDIER_CLASS_ELITE:
|
||||||
|
case SOLDIER_CLASS_ELITE_MILITIA:
|
||||||
//if ( gGameOptions.fSlowProgressForEnemyItemsChoice )
|
//if ( gGameOptions.fSlowProgressForEnemyItemsChoice )
|
||||||
// bRating = bEquipmentModifier - ( bSoldierClass == SOLDIER_CLASS_ELITE );
|
// bRating = bEquipmentModifier - ( bSoldierClass == SOLDIER_CLASS_ELITE );
|
||||||
//else
|
//else
|
||||||
bRating = BAD_ELITE_EQUIPMENT_RATING + bEquipmentModifier;
|
bRating = BAD_ELITE_EQUIPMENT_RATING + bEquipmentModifier;
|
||||||
|
|
||||||
// Equipment quality modifier
|
// Equipment quality modifier
|
||||||
if ( gGameExternalOptions.sEnemyEliteEquipmentQualityModifier != 0 )
|
if ( bSoldierClass == SOLDIER_CLASS_ELITE )
|
||||||
bRating += gGameExternalOptions.sEnemyEliteEquipmentQualityModifier;
|
{
|
||||||
|
if ( gGameExternalOptions.sEnemyEliteEquipmentQualityModifier != 0 )
|
||||||
|
bRating += gGameExternalOptions.sEnemyEliteEquipmentQualityModifier;
|
||||||
|
}
|
||||||
|
else if ( bSoldierClass == SOLDIER_CLASS_ELITE_MILITIA )
|
||||||
|
{
|
||||||
|
// SANDRO - Militia equipment quality bonus
|
||||||
|
if ( gGameExternalOptions.bVeteranMilitiaEquipmentQualityModifier != 0 )
|
||||||
|
bRating += gGameExternalOptions.bVeteranMilitiaEquipmentQualityModifier;
|
||||||
|
}
|
||||||
|
|
||||||
bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) );
|
bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) );
|
||||||
|
|
||||||
bWeaponClass = bRating;
|
bWeaponClass = bRating;
|
||||||
@@ -698,9 +590,17 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
bAttachClass = bRating;
|
bAttachClass = bRating;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( Chance( 35 ) )
|
if ( bSoldierClass == SOLDIER_CLASS_ELITE )
|
||||||
bKnifeClass = bRating;
|
{
|
||||||
|
if ( Chance( 35 ) )
|
||||||
|
bKnifeClass = bRating;
|
||||||
|
}
|
||||||
|
else if ( bSoldierClass == SOLDIER_CLASS_ELITE_MILITIA )
|
||||||
|
{
|
||||||
|
if ( Chance( 25 ) )
|
||||||
|
bKnifeClass = bRating;
|
||||||
|
}
|
||||||
|
|
||||||
if( ( bRating > MIN_EQUIPMENT_CLASS ) && bRating < MAX_EQUIPMENT_CLASS )
|
if( ( bRating > MIN_EQUIPMENT_CLASS ) && bRating < MAX_EQUIPMENT_CLASS )
|
||||||
{
|
{
|
||||||
UINT32 uiRange = ((UsingNewInventorySystem() == false)) ? Random(11) : Random(12);
|
UINT32 uiRange = ((UsingNewInventorySystem() == false)) ? Random(11) : Random(12);
|
||||||
@@ -717,13 +617,15 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if well-enough equipped, 1/3 chance of something really special
|
if ( bSoldierClass == SOLDIER_CLASS_ELITE )
|
||||||
if( ( bRating >= GOOD_ELITE_EQUIPMENT_RATING ) && ( Random( 100 ) < 33 ) )
|
|
||||||
{
|
{
|
||||||
//give this man a special weapon! No mortars if underground, however
|
// if well-enough equipped, 1/3 chance of something really special
|
||||||
ubMaxSpecialWeaponRoll = ( !IsAutoResolveActive() && ( gbWorldSectorZ != 0 ) ) ? 6 : 7;
|
if ( (bRating >= GOOD_ELITE_EQUIPMENT_RATING) && (Random( 100 ) < 33) )
|
||||||
switch ( Random ( ubMaxSpecialWeaponRoll ) )
|
|
||||||
{
|
{
|
||||||
|
//give this man a special weapon! No mortars if underground, however
|
||||||
|
ubMaxSpecialWeaponRoll = (!IsAutoResolveActive( ) && (gbWorldSectorZ != 0)) ? 6 : 7;
|
||||||
|
switch ( Random( ubMaxSpecialWeaponRoll ) )
|
||||||
|
{
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
@@ -755,70 +657,18 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
bGrenadeClass = MORTAR_GRENADE_CLASS;
|
bGrenadeClass = MORTAR_GRENADE_CLASS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
else if ( bSoldierClass == SOLDIER_CLASS_ELITE_MILITIA )
|
||||||
case SOLDIER_CLASS_ELITE_MILITIA:
|
|
||||||
|
|
||||||
bRating = BAD_ELITE_EQUIPMENT_RATING + bEquipmentModifier;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// SANDRO - Militia equipment quality bonus
|
|
||||||
if ( gGameExternalOptions.bVeteranMilitiaEquipmentQualityModifier != 0 )
|
|
||||||
bRating += gGameExternalOptions.bVeteranMilitiaEquipmentQualityModifier;
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
bRating = (INT8)max( MIN_EQUIPMENT_CLASS, min( MAX_EQUIPMENT_CLASS, bRating ) );
|
|
||||||
|
|
||||||
bWeaponClass = bRating;
|
|
||||||
bHelmetClass = bRating;
|
|
||||||
bVestClass = bRating;
|
|
||||||
bLeggingClass = bRating;
|
|
||||||
bAttachClass = bRating*7/8;
|
|
||||||
bGrenadeClass = bRating;
|
|
||||||
bKitClass = bRating;
|
|
||||||
bMiscClass = bRating;
|
|
||||||
|
|
||||||
if ( Chance( 25 ) )
|
|
||||||
{
|
{
|
||||||
bBombClass = bRating;
|
// if well-enough equipped, 1/3 chance of something really special
|
||||||
}
|
if ( (bRating >= GOOD_ELITE_EQUIPMENT_RATING) && (Random( 100 ) < 60) )
|
||||||
|
|
||||||
bAmmoClips = (INT8)(3 + Random( 2 ));
|
|
||||||
bGrenades = (INT8)(2 + Random( 3 ));
|
|
||||||
|
|
||||||
if( ( bRating >= AVERAGE_ELITE_EQUIPMENT_RATING ) && Chance(75) )
|
|
||||||
{
|
|
||||||
fAttachment = TRUE;
|
|
||||||
bAttachClass = bRating;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( Chance( 25 ) )
|
|
||||||
bKnifeClass = bRating;
|
|
||||||
|
|
||||||
if( ( bRating > MIN_EQUIPMENT_CLASS ) && bRating < MAX_EQUIPMENT_CLASS )
|
|
||||||
{
|
|
||||||
UINT32 uiRange = ((UsingNewInventorySystem() == false)) ? Random(10) : Random(11);
|
|
||||||
switch( uiRange )
|
|
||||||
{
|
|
||||||
case 4: bWeaponClass++, bVestClass--; break;
|
|
||||||
case 5: bWeaponClass--, bVestClass--; break;
|
|
||||||
case 6: bVestClass++, bHelmetClass--; break;
|
|
||||||
case 7: bGrenades += 2; break;
|
|
||||||
case 8: bHelmetClass++; break;
|
|
||||||
case 9: bVestClass++; break;
|
|
||||||
case 10: bWeaponClass++; break;
|
|
||||||
//case 11: bLBEClass++; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if well-enough equipped, 1/3 chance of something really special
|
|
||||||
if( ( bRating >= GOOD_ELITE_EQUIPMENT_RATING ) && ( Random( 100 ) < 60 ) )
|
|
||||||
{
|
|
||||||
//give this man a special weapon! No mortars if underground, however
|
|
||||||
ubMaxSpecialWeaponRoll = ( !IsAutoResolveActive() && ( gbWorldSectorZ != 0 ) ) ? 4 : 5;
|
|
||||||
switch ( Random ( ubMaxSpecialWeaponRoll ) )
|
|
||||||
{
|
{
|
||||||
|
//give this man a special weapon! No mortars if underground, however
|
||||||
|
ubMaxSpecialWeaponRoll = (!IsAutoResolveActive( ) && (gbWorldSectorZ != 0)) ? 4 : 5;
|
||||||
|
switch ( Random( ubMaxSpecialWeaponRoll ) )
|
||||||
|
{
|
||||||
case 0:
|
case 0:
|
||||||
//grenade launcher
|
//grenade launcher
|
||||||
fGrenadeLauncher = TRUE;
|
fGrenadeLauncher = TRUE;
|
||||||
@@ -841,7 +691,7 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
{
|
{
|
||||||
//mortar
|
//mortar
|
||||||
fMortar = TRUE;
|
fMortar = TRUE;
|
||||||
guiMortarsRolledByTeam++;
|
++guiMortarsRolledByTeam;
|
||||||
|
|
||||||
// the grenades will actually represent mortar shells in this case
|
// the grenades will actually represent mortar shells in this case
|
||||||
bGrenades = 3 + (INT8)(Random( 5 )); //3-7
|
bGrenades = 3 + (INT8)(Random( 5 )); //3-7
|
||||||
@@ -855,12 +705,12 @@ void GenerateRandomEquipment( SOLDIERCREATE_STRUCT *pp, INT8 bSoldierClass, INT8
|
|||||||
bGrenadeClass = RPG_GRENADE_CLASS;
|
bGrenadeClass = RPG_GRENADE_CLASS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case SOLDIER_CLASS_ZOMBIE:
|
case SOLDIER_CLASS_ZOMBIE: // zombies get no items at all...
|
||||||
// zombies get no items at all...
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user