mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
New Feature: tracking allows rangers to track past movements.
Fro more info, see http://www.ja-galaxy-forum.com/ubbthreads.php/topics/337545#Post337545 git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7646 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -2313,6 +2313,8 @@ void LoadSkillTraitsExternalSettings()
|
||||
gSkillTraitValues.ubRAWeatherPenaltiesReduction = iniReader.ReadInteger("Ranger","WEATHER_PENALTIES_REDUCTION", 50, 0, 100);
|
||||
//gSkillTraitValues.ubRACamoEffectivenessBonus = iniReader.ReadInteger("Ranger","CAMO_EFFECTIVENESS_BONUS_PERCENT", 10, 0, 100);
|
||||
gSkillTraitValues.ubRACamoWornountSpeedReduction = iniReader.ReadInteger("Ranger","CAMO_WORNOUT_SPEED_REDUCTION", 50, 0, 100);
|
||||
gSkillTraitValues.usTrackerMaxRange = iniReader.ReadInteger( "Ranger", "TRACKER_MAX_RANGE", 30, 0, 50 );
|
||||
gSkillTraitValues.usTrackerAbility = iniReader.ReadInteger( "Ranger", "TRACKER_ABILITY", 30, 0, 50 );
|
||||
|
||||
// GUNSLINGER
|
||||
gSkillTraitValues.ubGSFiringSpeedBonusPistols = iniReader.ReadInteger("Gunslinger","FIRING_SPEED_BONUS_PISTOLS", 15, 0, 45);
|
||||
|
||||
@@ -1608,6 +1608,8 @@ typedef struct
|
||||
UINT8 ubRACamoWornountSpeedReduction;
|
||||
UINT8 ubRAFiringSpeedBonusShotguns;
|
||||
UINT8 ubRAAimClicksAdded;
|
||||
UINT16 usTrackerMaxRange;
|
||||
UINT8 usTrackerAbility;
|
||||
|
||||
// GUNSLINGER
|
||||
UINT8 ubGSFiringSpeedBonusPistols;
|
||||
|
||||
+9
-9
@@ -15,9 +15,9 @@
|
||||
#ifdef JA2EDITOR
|
||||
|
||||
#ifdef JA2UB
|
||||
CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.7614 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.7646 (Development Build)" };
|
||||
#else
|
||||
CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.7614 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.7646 (Development Build)" };
|
||||
#endif
|
||||
|
||||
// ------------------------------
|
||||
@@ -27,11 +27,11 @@
|
||||
|
||||
//DEBUG BUILD VERSION
|
||||
#ifdef JA2UB
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.7614 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.7646 (Development Build)" };
|
||||
#elif defined (JA113DEMO)
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.7614 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.7646 (Development Build)" };
|
||||
#else
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: v1.13.7614 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: v1.13.7646 (Development Build)" };
|
||||
#endif
|
||||
|
||||
#elif defined CRIPPLED_VERSION
|
||||
@@ -46,16 +46,16 @@
|
||||
|
||||
//RELEASE BUILD VERSION
|
||||
#ifdef JA2UB
|
||||
CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.7614 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.7646 (Development Build)" };
|
||||
#elif defined (JA113DEMO)
|
||||
CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.7614 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.7646 (Development Build)" };
|
||||
#else
|
||||
CHAR16 zVersionLabel[256] = { L"Release v1.13.7614 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Release v1.13.7646 (Development Build)" };
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
CHAR8 czVersionNumber[16] = { "Build 14.10.26" }; //YY.MM.DD
|
||||
CHAR8 czVersionNumber[16] = { "Build 14.11.3" }; //YY.MM.DD
|
||||
CHAR16 zTrackingNumber[16] = { L"Z" };
|
||||
|
||||
// SAVE_GAME_VERSION is defined in header, change it there
|
||||
|
||||
@@ -499,6 +499,11 @@ void AssignBackgroundHelpText( UINT16 ubNumber, MOUSE_REGION* pMouseregion )
|
||||
swprintf( atStr, szBackgroundText_Value[i] );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
else if ( BG_TRACKER_ABILITY == i && zBackground[ubNumber].value[i] )
|
||||
{
|
||||
swprintf( atStr, szBackgroundText_Value[i], (UINT16)((gSkillTraitValues.usTrackerMaxRange * zBackground[ubNumber].value[i]) / 100) );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
else if ( zBackground[ ubNumber ].value[i] )
|
||||
{
|
||||
swprintf(atStr, szBackgroundText_Value[ i ], zBackground[ ubNumber ].value[i] > 0 ? L"+" : L"", zBackground[ ubNumber ].value[i] );
|
||||
|
||||
@@ -7444,6 +7444,13 @@ void AssignPersonnelSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLeve
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[11], ( gSkillTraitValues.ubRACamoWornountSpeedReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
|
||||
if ( gSkillTraitValues.usTrackerMaxRange && gSkillTraitValues.usTrackerAbility )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[12], (gSkillTraitValues.usTrackerAbility * (fExpertLevel ? 2 : 1) * gSkillTraitValues.usTrackerMaxRange / 100) );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case GUNSLINGER_NT:
|
||||
|
||||
+412
-492
File diff suppressed because it is too large
Load Diff
+73
-48
@@ -1,8 +1,8 @@
|
||||
#ifndef _DISPLAY_COVER__H_
|
||||
#define _DISPLAY_COVER__H_
|
||||
|
||||
void DisplayCoverOfSelectedGridNo( );
|
||||
void RemoveCoverOfSelectedGridNo();
|
||||
// resets the overlay modes so that everything will be reset at the NEXT display cycle
|
||||
void ResetOverlayModes();
|
||||
|
||||
void DisplayRangeToTarget( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo );
|
||||
void DisplayCover(const BOOLEAN& forceUpdate = FALSE);
|
||||
@@ -14,29 +14,66 @@ void SwitchViewOff();
|
||||
void ToggleMercView();
|
||||
void ToggleEnemyView();
|
||||
|
||||
void SwitchCoverDrawMode();
|
||||
|
||||
void RemoveVisibleGridNoAtSelectedGridNo();
|
||||
void DisplayGridNoVisibleToSoldierGrid( );
|
||||
|
||||
void CalculateCoverForSoldier( SOLDIERTYPE* pForSoldier, const INT32& sTargetGridNo, const BOOLEAN& fRoof, INT8& bCover );
|
||||
void CalculateCoverFromSoldier( SOLDIERTYPE* pFromSoldier, const INT32& sTargetGridNo, const BOOLEAN& fRoof, INT8& bCover, SOLDIERTYPE* pToSoldier = NULL );
|
||||
BOOLEAN CanSoldierSeeFloor( SOLDIERTYPE* pSoldier, INT32 sGridNo, INT8 bLevel );
|
||||
|
||||
|
||||
#define DC_MAX_COVER_RANGE 43 //31
|
||||
#define DC__SOLDIER_VISIBLE_RANGE 43 //31
|
||||
#define DC__MIN_SIZE 4
|
||||
#define DC__MAX_SIZE 21 //11
|
||||
|
||||
enum COVER_VALUES
|
||||
// Flugente: all different overlays in one enum
|
||||
enum OVERLAY_VALUES
|
||||
{
|
||||
INVALID_COVER = -1,
|
||||
NO_COVER = 0,
|
||||
MIN_COVER = 1,
|
||||
MED_COVER = 2,
|
||||
MAX_COVER = 3
|
||||
NO_COVER,
|
||||
MIN_COVER,
|
||||
MED_COVER,
|
||||
MAX_COVER,
|
||||
|
||||
NO_SEE,
|
||||
MIN_SEE,
|
||||
MED_SEE,
|
||||
MAX_SEE,
|
||||
|
||||
MINES_ALL,
|
||||
MINE_BOMB,
|
||||
MINE_WIRE,
|
||||
MINE_BOMB_AND_WIRE,
|
||||
MINES_NET_1,
|
||||
MINES_NET_2,
|
||||
MINES_NET_3,
|
||||
MINES_NET_4,
|
||||
MINES_LVL_1,
|
||||
MINES_LVL_2,
|
||||
MINES_LVL_3,
|
||||
MINES_LVL_4,
|
||||
MAX_MINES,
|
||||
|
||||
TRAIT_ALL,
|
||||
TRAIT_1,
|
||||
TRAIT_2,
|
||||
MAX_TRAIT,
|
||||
|
||||
TRACKS_VERYOLD,
|
||||
TRACKS_OLD,
|
||||
TRACKS_RECENT,
|
||||
TRACKS_BLOOD,
|
||||
MAX_TRACKS,
|
||||
};
|
||||
|
||||
enum COVER_DRAW_MODE {
|
||||
COVER_DRAW_OFF,
|
||||
COVER_DRAW_MERC_VIEW,
|
||||
COVER_DRAW_ENEMY_VIEW
|
||||
};
|
||||
|
||||
void ChangeSizeOfDisplayCover( INT32 iNewSize );
|
||||
|
||||
void ChangeSizeOfLOS( INT32 iNewSize );
|
||||
//ddd for optimize oppponent turn
|
||||
INT8 CalcCoverForGridNoBasedOnTeamKnownEnemies( SOLDIERTYPE *pSoldier, INT16 sTargetGridNo, INT8 bStance );
|
||||
//ddd for optimize oppponent turn
|
||||
|
||||
|
||||
// ----------------------------- Mines display after this ----------------------------------------
|
||||
// added by Flugente: display of mine, bombs and tripwire
|
||||
// Flugente: mines display - stuff needs to be here
|
||||
// Sevenfm: moved here from DisplayCover.cpp
|
||||
enum MINES_DRAW_MODE {
|
||||
@@ -51,35 +88,6 @@ enum MINES_DRAW_MODE {
|
||||
MINES_DRAW_MAX
|
||||
};
|
||||
|
||||
// Flugente: trait draw mode
|
||||
enum TRAIT_DRAW_MODE {
|
||||
TRAIT_DRAW_OFF,
|
||||
TRAIT_DRAW_RANGE,
|
||||
TRAIT_DRAW_MAX
|
||||
};
|
||||
|
||||
enum COVER_DRAW_MODE {
|
||||
COVER_DRAW_OFF,
|
||||
COVER_DRAW_MERC_VIEW,
|
||||
COVER_DRAW_ENEMY_VIEW
|
||||
};
|
||||
|
||||
#ifdef JA2TESTVERSION
|
||||
void DisplayLosAndDisplayCoverUsageScreenMsg();
|
||||
#endif
|
||||
|
||||
void ChangeSizeOfDisplayCover( INT32 iNewSize );
|
||||
|
||||
void ChangeSizeOfLOS( INT32 iNewSize );
|
||||
//ddd for optimize oppponent turn
|
||||
INT8 CalcCoverForGridNoBasedOnTeamKnownEnemies( SOLDIERTYPE *pSoldier, INT16 sTargetGridNo, INT8 bStance );
|
||||
//ddd for optimize oppponent turn
|
||||
|
||||
|
||||
// ----------------------------- Mines display after this ----------------------------------------
|
||||
// added by Flugente: display of mine, bombs and tripwire
|
||||
void DisplayMines(const BOOLEAN& forceUpdate = FALSE);
|
||||
|
||||
void SwitchToTrapNetworkView();
|
||||
void SwitchToHostileTrapsView();
|
||||
void SwitchMineViewOff();
|
||||
@@ -91,10 +99,27 @@ void SwitchMinesDrawModeForNetworks();
|
||||
|
||||
// ----------------------------- trait range display after this ----------------------------------------
|
||||
// added by Flugente: display of ranges and areas of effects for traits
|
||||
void DisplayTraitRange(const BOOLEAN& forceUpdate = FALSE);
|
||||
// Flugente: trait draw mode
|
||||
enum TRAIT_DRAW_MODE {
|
||||
TRAIT_DRAW_OFF,
|
||||
TRAIT_DRAW_RANGE,
|
||||
TRAIT_DRAW_MAX
|
||||
};
|
||||
|
||||
void ToggleTraitRangeView(BOOLEAN fOn = TRUE);
|
||||
void SetTraitToDisplay( UINT32 aTrait );
|
||||
void SetGridNoForTraitDisplay( INT32 sGridNo );
|
||||
|
||||
// ----------------------------- tracker display after this ----------------------------------------
|
||||
// added by Flugente: display of ranges and areas of effects for traits
|
||||
|
||||
// Flugente: trait draw mode
|
||||
enum TRACKER_DRAW_MODE {
|
||||
TRACKER_DRAW_OFF,
|
||||
TRACKER_DRAW_SMELL,
|
||||
TRACKER_DRAW_MAX
|
||||
};
|
||||
|
||||
extern TRACKER_DRAW_MODE gubDrawModeTracker;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -650,8 +650,6 @@ UINT32 HandleTacticalUI( void )
|
||||
|
||||
DisplayCover();
|
||||
|
||||
DisplayMines(); // added by Flugente
|
||||
|
||||
if ( HandleItemPickupMenu( ) )
|
||||
{
|
||||
uiNewEvent = A_CHANGE_TO_MOVE;
|
||||
|
||||
@@ -189,6 +189,7 @@ enum {
|
||||
BG_PERC_SPOTTER,
|
||||
BG_PERC_DISEASE_DIAGNOSE,
|
||||
BG_PERC_DISEASE_TREAT,
|
||||
BG_TRACKER_ABILITY,
|
||||
|
||||
BG_DISLIKEBG, // dislike any other background that has the negative of this value set
|
||||
|
||||
|
||||
@@ -2691,6 +2691,7 @@ void HandleJohnArrival( SOLDIERTYPE * pSoldier )
|
||||
}
|
||||
}
|
||||
|
||||
extern void DisplayCover( const BOOLEAN& forceUpdate );
|
||||
|
||||
BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
||||
{
|
||||
@@ -2940,6 +2941,11 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
||||
|
||||
HandleSystemNewAISituation( pSoldier, FALSE );
|
||||
|
||||
// Flugente: tracker...
|
||||
if ( pSoldier->bInSector && gusSelectedSoldier == pSoldier->ubID && !pSoldier->bCollapsed )
|
||||
{
|
||||
DisplayCover( TRUE );
|
||||
}
|
||||
|
||||
#ifdef LUA_OVERHEAD
|
||||
LetLuaMyCustomHandleAtNewGridNo(NULL,pSoldier->ubProfile, 0);
|
||||
|
||||
@@ -17372,6 +17372,8 @@ INT16 SOLDIERTYPE::GetInterruptModifier( UINT8 usDistance )
|
||||
return bonus;
|
||||
}
|
||||
|
||||
extern void DisplayCover( const BOOLEAN& forceUpdate );
|
||||
|
||||
void SOLDIERTYPE::SoldierPropertyUpkeep( )
|
||||
{
|
||||
// these effects last only one turn
|
||||
@@ -17427,7 +17429,12 @@ void SOLDIERTYPE::SoldierPropertyUpkeep( )
|
||||
{
|
||||
this->usSoldierFlagMask &= ~SOLDIER_BATTLE_PARTICIPATION;
|
||||
}
|
||||
|
||||
if ( this->bInSector && this->bTeam == gbPlayerNum && !this->bCollapsed )
|
||||
{
|
||||
DisplayCover( TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
// check if Soldier can use the spell skillwise, with fAPCheck = TRUE also check current APs
|
||||
BOOLEAN SOLDIERTYPE::CanUseSkill( INT8 iSkill, BOOLEAN fAPCheck )
|
||||
|
||||
@@ -8231,6 +8231,7 @@ void HandleTacticalCoverMenu( void )
|
||||
gzUserDefinedButtonColor[1] = FONT_MCOLOR_LTYELLOW;
|
||||
gzUserDefinedButtonColor[2] = FONT_MCOLOR_LTYELLOW;
|
||||
gzUserDefinedButtonColor[4] = gDisplayEnemyRoles ? FONT_MCOLOR_LTGREEN : FONT_LTRED;
|
||||
gzUserDefinedButtonColor[6] = (gubDrawModeTracker == TRACKER_DRAW_OFF) ? FONT_LTRED : FONT_MCOLOR_LTGREEN;
|
||||
gzUserDefinedButtonColor[8] = FONT_ORANGE;
|
||||
gzUserDefinedButtonColor[9] = FONT_ORANGE;
|
||||
gzUserDefinedButtonColor[10] = FONT_ORANGE;
|
||||
@@ -8244,22 +8245,18 @@ void HandleTacticalCoverMenu( void )
|
||||
|
||||
void TacticalCoverMessageBoxCallBack( UINT8 ubExitValue )
|
||||
{
|
||||
gubDrawModeMine = MINES_DRAW_OFF;
|
||||
gubDrawMode = COVER_DRAW_OFF;
|
||||
switch( ubExitValue )
|
||||
{
|
||||
case 1:
|
||||
gubDrawModeMine = MINES_DRAW_OFF;
|
||||
gubDrawMode = COVER_DRAW_OFF;
|
||||
DisplayMines(TRUE);
|
||||
ResetOverlayModes( );
|
||||
break;
|
||||
case 2:
|
||||
ResetOverlayModes( );
|
||||
gubDrawMode = COVER_DRAW_ENEMY_VIEW;
|
||||
DisplayCover(TRUE);
|
||||
break;
|
||||
case 3:
|
||||
ResetOverlayModes( );
|
||||
gubDrawMode = COVER_DRAW_MERC_VIEW;
|
||||
DisplayCover(TRUE);
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
@@ -8269,40 +8266,52 @@ void TacticalCoverMessageBoxCallBack( UINT8 ubExitValue )
|
||||
case 6:
|
||||
break;
|
||||
case 7:
|
||||
if ( gubDrawModeTracker == TRACKER_DRAW_SMELL )
|
||||
{
|
||||
ResetOverlayModes( );
|
||||
}
|
||||
else
|
||||
{
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeTracker = TRACKER_DRAW_SMELL;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
break;
|
||||
case 9:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_PLAYERTEAM_NETWORKS;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 10:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NETWORKCOLOURING;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 11:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_DETECT_ENEMY;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 12:
|
||||
break;
|
||||
case 13:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NET_A;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 14:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NET_B;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 15:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NET_C;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 16:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NET_D;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
DisplayCover( TRUE );
|
||||
|
||||
if( ubExitValue <= TACTICAL_COVER_DIALOG_NUM )
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szTacticalCoverDialogPrintString[ubExitValue-1]);
|
||||
}
|
||||
|
||||
@@ -128,6 +128,7 @@ backgroundStartElementHandle(void *userData, const XML_Char *name, const XML_Cha
|
||||
strcmp(name, "spotter") == 0 ||
|
||||
strcmp(name, "disease_diagnose" ) == 0 ||
|
||||
strcmp(name, "disease_treatment" ) == 0 ||
|
||||
strcmp(name, "tracker_ability" ) == 0 ||
|
||||
strcmp(name, "dislikebackground" ) == 0 ||
|
||||
strcmp(name, "druguse") == 0 ||
|
||||
strcmp(name, "xenophobic") == 0 ||
|
||||
@@ -137,7 +138,7 @@ backgroundStartElementHandle(void *userData, const XML_Char *name, const XML_Cha
|
||||
strcmp(name, "traplevel") == 0 ||
|
||||
strcmp(name, "no_male") == 0 ||
|
||||
strcmp(name, "no_female") == 0 ||
|
||||
strcmp( name, "loyalitylossondeath" ) == 0 ))
|
||||
strcmp(name, "loyalitylossondeath" ) == 0 ))
|
||||
|
||||
{
|
||||
pData->curElement = ELEMENT_PROPERTY;
|
||||
@@ -538,6 +539,11 @@ backgroundEndElementHandle(void *userData, const XML_Char *name)
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.value[BG_PERC_DISEASE_TREAT] = min( 50, max( -50, (INT16)atol( pData->szCharData ) ) );
|
||||
}
|
||||
else if ( strcmp( name, "tracker_ability" ) == 0 )
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.value[BG_TRACKER_ABILITY] = min( 40, max( 0, (INT16)atol( pData->szCharData ) ) );
|
||||
}
|
||||
else if ( strcmp( name, "dislikebackground" ) == 0 )
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
|
||||
+21
-40
@@ -63,19 +63,19 @@
|
||||
UINT8 ubBloodGraphicLUT [ ] = { 3, 3, 2, 2, 1, 1, 0, 0 };
|
||||
|
||||
|
||||
#define SMELL_STRENGTH_MAX 63
|
||||
#define BLOOD_STRENGTH_MAX 7
|
||||
#define BLOOD_DELAY_MAX 3
|
||||
#define SMELL_STRENGTH_MAX 63
|
||||
#define BLOOD_STRENGTH_MAX 7
|
||||
#define BLOOD_DELAY_MAX 3
|
||||
|
||||
#define SMELL_TYPE_BITS( s ) (s & 0x03)
|
||||
#define SMELL_TYPE_BITS( s ) (s & 0x03)
|
||||
|
||||
#define BLOOD_ROOF_TYPE( s ) (s & 0x02)
|
||||
#define BLOOD_FLOOR_TYPE( s ) (s & 0x01)
|
||||
#define BLOOD_ROOF_TYPE( s ) (s & 0x02)
|
||||
#define BLOOD_FLOOR_TYPE( s ) (s & 0x01)
|
||||
|
||||
#define BLOOD_ROOF_STRENGTH( b ) (b & 0xE0)
|
||||
#define BLOOD_FLOOR_STRENGTH( b ) ( (b & 0x1C) >> 2 )
|
||||
#define BLOOD_DELAY_TIME( b ) (b & 0x03)
|
||||
#define NO_BLOOD_STRENGTH( b ) ((b & 0xFC) == 0)
|
||||
#define BLOOD_FLOOR_STRENGTH( b ) ( (b & 0x1C) >> 2 )
|
||||
#define BLOOD_DELAY_TIME( b ) (b & 0x03)
|
||||
#define NO_BLOOD_STRENGTH( b ) ((b & 0xFC) == 0)
|
||||
|
||||
#define DECAY_SMELL_STRENGTH( s ) \
|
||||
{ \
|
||||
@@ -150,17 +150,13 @@ void RemoveBlood( INT32 sGridNo, INT8 bLevel )
|
||||
UpdateBloodGraphics( sGridNo, bLevel );
|
||||
}
|
||||
|
||||
|
||||
void DecaySmells( void )
|
||||
{
|
||||
INT32 uiLoop;
|
||||
MAP_ELEMENT * pMapElement;
|
||||
|
||||
//return;
|
||||
|
||||
for (uiLoop = 0, pMapElement = gpWorldLevelData; uiLoop < WORLD_MAX; uiLoop++, pMapElement++)
|
||||
for ( uiLoop = 0, pMapElement = gpWorldLevelData; uiLoop < WORLD_MAX; ++uiLoop, ++pMapElement )
|
||||
{
|
||||
|
||||
if (pMapElement->ubSmellInfo)
|
||||
{
|
||||
// decay smell strength!
|
||||
@@ -174,13 +170,12 @@ void DecaySmells( void )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DecayBlood()
|
||||
{
|
||||
INT32 uiLoop;
|
||||
MAP_ELEMENT * pMapElement;
|
||||
|
||||
for (uiLoop = 0, pMapElement = gpWorldLevelData; uiLoop < WORLD_MAX; uiLoop++, pMapElement++)
|
||||
for (uiLoop = 0, pMapElement = gpWorldLevelData; uiLoop < WORLD_MAX; ++uiLoop, ++pMapElement)
|
||||
{
|
||||
if (pMapElement->ubBloodInfo)
|
||||
{
|
||||
@@ -274,10 +269,10 @@ void DecayBloodAndSmells( UINT32 uiTime )
|
||||
void DropSmell( SOLDIERTYPE * pSoldier )
|
||||
{
|
||||
MAP_ELEMENT * pMapElement;
|
||||
UINT8 ubOldSmell;
|
||||
UINT8 ubOldStrength;
|
||||
UINT8 ubSmell;
|
||||
UINT8 ubStrength;
|
||||
UINT8 ubOldSmell;
|
||||
UINT8 ubOldStrength;
|
||||
UINT8 ubSmell;
|
||||
UINT8 ubStrength;
|
||||
|
||||
/*
|
||||
* Here we are creating a new smell on the ground. If there is blood in
|
||||
@@ -354,7 +349,6 @@ void DropSmell( SOLDIERTYPE * pSoldier )
|
||||
// otherwise skip dropping smell
|
||||
}
|
||||
|
||||
|
||||
void InternalDropBlood( INT32 sGridNo, INT8 bLevel, UINT8 ubType, UINT8 ubStrength, INT8 bVisible )
|
||||
{
|
||||
CHAR tmpMPDbgString[512];
|
||||
@@ -381,9 +375,9 @@ void InternalDropBlood( INT32 sGridNo, INT8 bLevel, UINT8 ubType, UINT8 ubStreng
|
||||
// ATE: Send warning if dropping blood nowhere....
|
||||
if (TileIsOutOfBounds(sGridNo))
|
||||
{
|
||||
#ifdef JA2BETAVERSION
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_TESTVERSION, L"Attempting to drop blood NOWHERE" );
|
||||
#endif
|
||||
#ifdef JA2BETAVERSION
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_TESTVERSION, L"Attempting to drop blood NOWHERE" );
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -469,10 +463,8 @@ void InternalDropBlood( INT32 sGridNo, INT8 bLevel, UINT8 ubType, UINT8 ubStreng
|
||||
{
|
||||
UpdateBloodGraphics( sGridNo, bLevel );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void DropBlood( SOLDIERTYPE * pSoldier, UINT8 ubStrength, INT8 bVisible )
|
||||
{
|
||||
UINT8 ubType;
|
||||
@@ -485,30 +477,23 @@ void DropBlood( SOLDIERTYPE * pSoldier, UINT8 ubStrength, INT8 bVisible )
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_MONSTER )
|
||||
{
|
||||
if ( pSoldier->pathing.bLevel == 0 )
|
||||
{
|
||||
ubType = CREATURE_ON_FLOOR;
|
||||
}
|
||||
else
|
||||
{
|
||||
ubType = CREATURE_ON_ROOF;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ubType = 0;
|
||||
ubType = HUMAN;
|
||||
}
|
||||
|
||||
|
||||
InternalDropBlood( pSoldier->sGridNo, pSoldier->pathing.bLevel, ubType, ubStrength, bVisible );
|
||||
}
|
||||
|
||||
|
||||
|
||||
void UpdateBloodGraphics( INT32 sGridNo, INT8 bLevel )
|
||||
{
|
||||
MAP_ELEMENT * pMapElement;
|
||||
INT8 bValue;
|
||||
UINT16 usIndex, usNewIndex;
|
||||
INT8 bValue;
|
||||
UINT16 usIndex, usNewIndex;
|
||||
|
||||
// OK, based on level, type, display graphics for blood
|
||||
pMapElement = &(gpWorldLevelData[ sGridNo ]);
|
||||
@@ -521,7 +506,6 @@ void UpdateBloodGraphics( INT32 sGridNo, INT8 bLevel )
|
||||
|
||||
if ( pMapElement->uiFlags & MAPELEMENT_REEVALUATEBLOOD )
|
||||
{
|
||||
|
||||
// Turn off flag!
|
||||
pMapElement->uiFlags &= ( ~MAPELEMENT_REEVALUATEBLOOD );
|
||||
|
||||
@@ -567,18 +551,15 @@ void UpdateBloodGraphics( INT32 sGridNo, INT8 bLevel )
|
||||
|
||||
//ApplyMapChangesToMapTempFile( FALSE );
|
||||
|
||||
|
||||
// Update rendering!
|
||||
pMapElement->uiFlags|=MAPELEMENT_REDRAW;
|
||||
SetRenderFlags(RENDER_FLAG_MARKED);
|
||||
|
||||
}
|
||||
}
|
||||
// Roof
|
||||
else
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8247,6 +8247,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%%发现狙击手的成功率\n",
|
||||
L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at treating population against diseases\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
|
||||
L" dislikes some other backgrounds", // TODO.Translate
|
||||
};
|
||||
@@ -9109,7 +9110,7 @@ STR16 szTacticalCoverDialogString[]=
|
||||
|
||||
L"Roles", // TODO.Translate
|
||||
L"",
|
||||
L"",
|
||||
L"Tracker",
|
||||
L"",
|
||||
|
||||
L"陷阱",
|
||||
|
||||
@@ -8260,6 +8260,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at treating population against diseases\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
|
||||
L" dislikes some other backgrounds", // TODO.Translate
|
||||
};
|
||||
@@ -9120,7 +9121,7 @@ STR16 szTacticalCoverDialogString[]=
|
||||
|
||||
L"Roles", // TODO.Translate
|
||||
L"",
|
||||
L"",
|
||||
L"Tracker",
|
||||
L"",
|
||||
|
||||
L"Traps",
|
||||
|
||||
@@ -8245,6 +8245,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness as spotter for fellow snipers\n",
|
||||
L" %s%d%% effectiveness at diagnosing diseases\n",
|
||||
L" %s%d%% effectiveness at treating population against diseases\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
|
||||
L" dislikes some other backgrounds",
|
||||
};
|
||||
@@ -9158,7 +9159,7 @@ STR16 szTacticalCoverDialogString[]=
|
||||
|
||||
L"Roles",
|
||||
L"",
|
||||
L"",
|
||||
L"Tracker",
|
||||
L"",
|
||||
|
||||
L"Traps",
|
||||
|
||||
@@ -8246,6 +8246,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% d'efficacité comme guetteur pour vos tireurs d'élite\n",
|
||||
L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at treating population against diseases\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
|
||||
L" dislikes some other backgrounds", // TODO.Translate
|
||||
};
|
||||
@@ -9106,7 +9107,7 @@ STR16 szTacticalCoverDialogString[]=
|
||||
|
||||
L"Roles", // TODO.Translate
|
||||
L"",
|
||||
L"",
|
||||
L"Tracker",
|
||||
L"",
|
||||
|
||||
L"Pièges",
|
||||
|
||||
@@ -8077,6 +8077,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at treating population against diseases\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
|
||||
L" dislikes some other backgrounds", // TODO.Translate
|
||||
};
|
||||
@@ -8937,7 +8938,7 @@ STR16 szTacticalCoverDialogString[]=
|
||||
|
||||
L"Roles", // TODO.Translate
|
||||
L"",
|
||||
L"",
|
||||
L"Tracker",
|
||||
L"",
|
||||
|
||||
L"Traps",
|
||||
|
||||
@@ -8256,6 +8256,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at treating population against diseases\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
|
||||
L" dislikes some other backgrounds", // TODO.Translate
|
||||
};
|
||||
@@ -9116,7 +9117,7 @@ STR16 szTacticalCoverDialogString[]=
|
||||
|
||||
L"Roles", // TODO.Translate
|
||||
L"",
|
||||
L"",
|
||||
L"Tracker",
|
||||
L"",
|
||||
|
||||
L"Traps",
|
||||
|
||||
@@ -155,6 +155,7 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"天气效果惩罚 -%d%s\n",// L"-%d%s weather penalties\n",
|
||||
L"迷彩涂装效果 +%d%s\n",// L"+%d%s camouflage effectiveness\n",
|
||||
L"迷彩涂装退色的速度 -%d%s\n",// L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
|
||||
@@ -155,6 +155,7 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
|
||||
@@ -155,6 +155,7 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
|
||||
@@ -156,6 +156,7 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s de pénalités du temps\n",
|
||||
L"+%d%s d'efficacité du camouflage\n",
|
||||
L"-%d%s de l'usure du camouflage due au temps ou à l'eau\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
|
||||
@@ -155,6 +155,7 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s Einfluss durch schlechtes Wetter\n",
|
||||
L"+%d%s Tarnungs-Effektivität\n",
|
||||
L"-%d%s Abnutzung von Tarnfarbe durch Wasser oder Zeit\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
|
||||
@@ -153,6 +153,7 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
|
||||
@@ -155,6 +155,7 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
|
||||
@@ -155,6 +155,7 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s к штрафам от погодных условий\n",
|
||||
L"+%d%s к эффективности камуфляжа\n",
|
||||
L"-%d%s на скорость ухудшения камуфляжа от воды и времени\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
|
||||
@@ -8271,6 +8271,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness as spotter for fellow snipers\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at treating population against diseases\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
|
||||
L" dislikes some other backgrounds", // TODO.Translate
|
||||
};
|
||||
@@ -9131,7 +9132,7 @@ STR16 szTacticalCoverDialogString[]=
|
||||
|
||||
L"Roles", // TODO.Translate
|
||||
L"",
|
||||
L"",
|
||||
L"Tracker",
|
||||
L"",
|
||||
|
||||
L"Traps",
|
||||
|
||||
@@ -8243,6 +8243,7 @@ STR16 szBackgroundText_Value[]=
|
||||
|
||||
L" %s%d%% effectiveness at diagnosing diseases\n", // TODO.Translate
|
||||
L" %s%d%% effectiveness at treating population against diseases\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
|
||||
L" dislikes some other backgrounds", // TODO.Translate
|
||||
};
|
||||
@@ -9102,7 +9103,7 @@ STR16 szTacticalCoverDialogString[]=
|
||||
|
||||
L"Roles", // TODO.Translate
|
||||
L"",
|
||||
L"",
|
||||
L"Tracker",
|
||||
L"",
|
||||
|
||||
L"Ловушки",
|
||||
|
||||
Reference in New Issue
Block a user