new disabilities:

- 'deaf' reduces hearing ability
- 'shortsighted' reduces sight range

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6049 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-05-02 00:15:51 +00:00
parent 265fd3bc61
commit 8fb494ff53
20 changed files with 249 additions and 47 deletions
+3
View File
@@ -11272,6 +11272,9 @@ INT16 GetTotalVisionRangeBonus( SOLDIERTYPE * pSoldier, UINT8 bLightLevel )
bonus -= 10;
}
// Flugente: add sight range bonus due to disabilities, traits etc. (not equipment)
bonus += pSoldier->GetSightRangeBonus();
// SANDRO - STOMP traits - Scouting bonus for sight range with binoculars and similar
if ( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, SCOUTING_NT ) && pSoldier->pathing.bLevel == 0 )
{
+27
View File
@@ -13999,6 +13999,33 @@ INT32 SOLDIERTYPE::GetDamageResistance(BOOLEAN fAutoResolve, BOOLEAN fCalcBreath
return( resistance );
}
INT8 SOLDIERTYPE::GetHearingBonus()
{
INT8 bonus = 0;
INT8 bSlot = FindHearingAid(this);
if ( bSlot != -1 )
{
// at 81-100% adds +5, at 61-80% adds +4, at 41-60% adds +3, etc.
bonus += GetHearingRangeBonus(this); // pSoldier->inv[bSlot][0]->data.objectStatus / 20 + 1;
}
if ( gMercProfiles[ this->ubProfile ].bDisability == DEAF )
bonus -= 5;
return bonus;
}
INT16 SOLDIERTYPE::GetSightRangeBonus()
{
INT16 bonus = 0;
if ( gMercProfiles[ this->ubProfile ].bDisability == SHORTSIGHTED )
bonus -= 10;
return bonus;
}
INT16 SOLDIERTYPE::GetSoldierCriticalDamageBonus( void )
{
INT16 val = 0;
+2
View File
@@ -1469,6 +1469,8 @@ public:
// returns damage resistance in percent
INT32 GetDamageResistance( BOOLEAN fAutoResolve = FALSE, BOOLEAN fCalcBreathLoss = FALSE);
INT8 GetHearingBonus();
INT16 GetSightRangeBonus();
INT16 GetSoldierCriticalDamageBonus( void ); // Flugente: determines critical damage bonus depending on class, skill, etc.
+4
View File
@@ -371,6 +371,10 @@ void RevealRoofsAndItems(SOLDIERTYPE *pSoldier, UINT32 itemsToo, BOOLEAN fShowLo
else
{
range = pSoldier->bViewRange;
// Flugente: adjust sightrange
range = (UINT16)( (range * (100 + pSoldier->GetSightRangeBonus()) ) / 100);
// balance item viewing range between normal and the limit set by opplist-type functions -- CJC
range = (AdjustMaxSightRangeForEnvEffects( pSoldier, LightTrueLevel( pSoldier->sGridNo, pSoldier->pathing.bLevel), range ) + range) / 2;
}
+1 -10
View File
@@ -1539,8 +1539,6 @@ void TurnOffTeamsMuzzleFlashes( UINT8 ubTeam )
INT8 DecideHearing( SOLDIERTYPE * pSoldier )
{
// calculate the hearing value for the merc...
INT8 bSlot;
INT8 bHearing;
if ( TANK( pSoldier ) )
@@ -1571,14 +1569,7 @@ INT8 DecideHearing( SOLDIERTYPE * pSoldier )
bHearing += 1 * NUM_SKILL_TRAITS( pSoldier, NIGHTOPS_OT );
}
//bSlot = FindObj( pSoldier, EXTENDEDEAR );
//if ( bSlot == HEAD1POS || bSlot == HEAD2POS)
bSlot = FindHearingAid(pSoldier);
if ( bSlot != -1 )
{
// at 81-100% adds +5, at 61-80% adds +4, at 41-60% adds +3, etc.
bHearing += GetHearingRangeBonus(pSoldier); // pSoldier->inv[bSlot][0]->data.objectStatus / 20 + 1;
}
bHearing += pSoldier->GetHearingBonus();
// adjust for dark conditions
switch ( ubAmbientLightLevel )
+3
View File
@@ -216,6 +216,9 @@ typedef enum
FEAR_OF_INSECTS,
FORGETFUL,
PSYCHO,
// Flugente: more disabilities
DEAF,
SHORTSIGHTED,
NUM_DISABILITIES
} PersonalityTrait;