diff --git a/Tactical/Points.cpp b/Tactical/Points.cpp index 58a649835..ff1bfeeb6 100644 --- a/Tactical/Points.cpp +++ b/Tactical/Points.cpp @@ -884,9 +884,13 @@ INT16 GetBreathPerAP( SOLDIERTYPE *pSoldier, UINT16 usAnimState ) //rain // Reduce breath gain on 25%/rain intensity - if( sBreathPerAP < 0 && ( pSoldier->bLevel ||!FindStructure( pSoldier->sGridNo, STRUCTURE_ROOF ) ) && pSoldier->bBreath > 1) + // Lalien: only for soldiers that are in loaded sector, + if ( gfWorldLoaded && pSoldier->bInSector) { - sBreathPerAP -= (INT16)( sBreathPerAP * gbCurrentRainIntensity * gGameExternalOptions.ubBreathGainReductionPerRainIntensity / 100 ); + if( sBreathPerAP < 0 && ( pSoldier->bLevel || !FindStructure( pSoldier->sGridNo, STRUCTURE_ROOF ) ) && pSoldier->bBreath > 1) + { + sBreathPerAP -= (INT16)( sBreathPerAP * gbCurrentRainIntensity * gGameExternalOptions.ubBreathGainReductionPerRainIntensity / 100 ); + } } //end rain diff --git a/TileEngine/physics.cpp b/TileEngine/physics.cpp index 23802699f..c65fe22aa 100644 --- a/TileEngine/physics.cpp +++ b/TileEngine/physics.cpp @@ -2010,6 +2010,12 @@ BOOLEAN CalculateLaunchItemChanceToGetThrough( SOLDIERTYPE *pSoldier, OBJECTTYPE vector_3 vForce, vPosition, vDirNormal; DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"CalculateLaunchItemChanceToGetThrough"); + + if ( pSoldier->sGridNo == sGridNo ) + { + printf("Warning! Soldier #%d attempted to launch item at himself\n", pSoldier->ubID); + return FALSE; + } // Ge7t basic launch params... CalculateLaunchItemBasicParams( pSoldier, pItem, sGridNo, ubLevel, sEndZ, &dForce, &dDegrees, psFinalGridNo, fArmed );