Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
6b5215e
Initial commit - spawn a transport group and tell it to go somewhere
rftrdev Dec 8, 2022
81530b5
Update movement logic:
rftrdev Dec 8, 2022
8463a39
Randomly generated soldier backpacks go in the backpack slot (for LOBOT)
rftrdev Dec 10, 2022
110d96d
Merge branch 'master' into new-group-type
rftrdev Dec 10, 2022
7aa929f
TEST - modify soldier inventory after being created
rftrdev Dec 10, 2022
3a46f9a
Put group inventory update logic into its own function
rftrdev Dec 11, 2022
c745efe
TEST - add backpack to group soldier's inventory
rftrdev Dec 11, 2022
9d28566
Handle groups that are moving into player-owned sectors
rftrdev Dec 12, 2022
d1ecb7e
Delete commented code
rftrdev Dec 12, 2022
64dea23
Prevent transport groups from reinforcing
rftrdev Dec 13, 2022
d6f0700
Only reduce non-box/crate ammo drops on non-player soldier death
rftrdev Dec 13, 2022
59e0717
Delay group return order
rftrdev Dec 14, 2022
5ff62f9
Add Strategic AI bonuses on group arrival at destination and return
rftrdev Dec 18, 2022
1b0e7f5
Merge branch 'master' of https://github.com/rftrdev/1dot13-source int…
rftrdev Dec 21, 2022
5b762e4
Move logic to new files (Strategic Transport Groups)
rftrdev Dec 23, 2022
5791575
Remove global transport group map
rftrdev Dec 23, 2022
92a514a
Groups with jeeps: admins/troops/elites drop everything
rftrdev Dec 23, 2022
0410b0a
Deploy groups during queen evals
rftrdev Dec 24, 2022
586093c
Skip transport groups when upgrading admins to troops
rftrdev Dec 25, 2022
52eab0c
Check reinforcement pool before deploying group
rftrdev Dec 25, 2022
c26b66d
Deprioritise group deployment
rftrdev Dec 25, 2022
c5cebc0
Tweak AI group rewards
rftrdev Dec 25, 2022
d49ea73
Properly count adjusted soldiers
rftrdev Jan 4, 2023
0e355db
Update group loot
rftrdev Jan 10, 2023
b207c6c
Merge
rftrdev Jan 11, 2023
85a0350
Add todo list (don't forget to remove!)
rftrdev Jan 17, 2023
d0171f2
Add game setting options
rftrdev Jan 17, 2023
956efe5
Add readiness level to groups
rftrdev Jan 19, 2023
27fdc56
Merge w/ master
rftrdev Jan 24, 2023
3233f4d
Update Strategic CMakeLists
rftrdev Jan 24, 2023
0d60748
Remove #pragma optimize
rftrdev Jan 25, 2023
39fa52c
Add scout and radio detectors
rftrdev Jan 25, 2023
cdd7775
Fix range check
rftrdev Jan 25, 2023
5f84598
Merge branch '1dot13:master' into new-group-type
rftrdev Jan 27, 2023
58237e0
Merge branch 'new-group-type' of https://github.com/rftrdev/1dot13-so…
rftrdev Jan 27, 2023
bb29517
Add covert ops destination monitoring
rftrdev Jan 27, 2023
386a3d1
Merge branch 'master' into new-group-type
rftrdev Jan 28, 2023
d3cec1e
Merge branch '1dot13:master' into new-group-type
rftrdev Feb 7, 2023
7514378
Add random gun loot for jeep groups
rftrdev Feb 7, 2023
0d62c78
Update addItemToInventory lambda
rftrdev Feb 7, 2023
ef9250a
Add <TransportGroupValidLoot> tag to Items.xml to determine valid loot
rftrdev Feb 9, 2023
f4d303e
Properly set up weapons + ammo in jeeps
rftrdev Feb 11, 2023
30d1f22
Adjust item drop loop
rftrdev Feb 13, 2023
22d8fa6
Specify valid progress range in xml
rftrdev Feb 15, 2023
f9be46a
Add history when successfully defeating a transport group
rftrdev Feb 16, 2023
43e7e3d
Fix
rftrdev Feb 16, 2023
125050c
Add strategic event to track recent losses
rftrdev Feb 17, 2023
e0204ec
Remove readiness
rftrdev Feb 17, 2023
dc13640
Refund ASD vehicles in TransferGroupToPool
rftrdev Feb 18, 2023
4e0f906
Add difficulty-specific behaviours
rftrdev Feb 18, 2023
46f9919
Add difficulty-specific behaviours
rftrdev Feb 18, 2023
411628b
Merge
rftrdev Feb 18, 2023
a905aa2
Update group compositions
rftrdev Feb 21, 2023
93280f5
Merge branch '1dot13:master' into new-group-type
rftrdev Feb 21, 2023
18503ab
Merge branch '1dot13:master' into new-group-type
rftrdev Feb 22, 2023
61d67dc
Block out ARC mission to spawn a transport group
rftrdev Feb 23, 2023
6d74381
Hook up forge transport order mission
rftrdev Feb 27, 2023
2cb62f3
Update valid destination check
rftrdev Mar 2, 2023
4d9d420
Fix monitored town colouring
rftrdev Mar 2, 2023
012789c
Add transport group to quest/intel strategic view
rftrdev Mar 3, 2023
f89f5f9
Turncoats in towns can detect incoming transport groups
rftrdev Mar 4, 2023
2d359c1
update todo list
rftrdev Mar 4, 2023
4eb266a
Add loot to foot soldiers
rftrdev Mar 6, 2023
4aec2f8
Merge branch '1dot13:master' into new-group-type
rftrdev Apr 10, 2023
167c4cb
Merge branch 'new-group-type' of https://github.com/rftrdev/1dot13-so…
rftrdev Apr 10, 2023
8e061cc
Add camo kits to loot cache
rftrdev Apr 16, 2023
dccfcdf
Add attachments to loot cache
rftrdev Apr 16, 2023
2049a08
Add camo kits and attachments to jeep/soldier drop logic
rftrdev Apr 17, 2023
f282d85
Merge branch '1dot13:master' into new-group-type
rftrdev Apr 22, 2023
7f14d16
Screw it we'll have the same loot for incoming and outgoing groups. U…
rftrdev Apr 23, 2023
dfb9be4
Merge with upstream master (delete VS files)
rftrdev May 15, 2023
6cc451c
Add transport group debug flag
rftrdev May 26, 2023
044812a
Add transport groups to feature toggles menu
rftrdev May 26, 2023
8c49d59
Merge branch '1dot13:master' into new-group-type
rftrdev May 26, 2023
829e7a6
Merge branch 'new-group-type' of https://github.com/rftrdev/1dot13-so…
rftrdev May 26, 2023
b51da64
Merge branch '1dot13:master' into new-group-type
rftrdev May 27, 2023
1c8cc3a
Merge branch '1dot13:master' into new-group-type
rftrdev May 27, 2023
9120383
Fix element assignments
rftrdev May 29, 2023
f06d863
Some cleanup
rftrdev Jun 1, 2023
fe380bd
Fix ammobox checks
rftrdev Jun 1, 2023
adc99ec
Fixes:
rftrdev Jun 1, 2023
94c05f0
Fix: cache original group jeep counts as we iterate through the soldi…
rftrdev Jun 1, 2023
ec7aa9e
Ammo boxes are always valid loot
rftrdev Jun 5, 2023
ba83156
Properly put backpacks on soldiers
rftrdev Jun 6, 2023
e01e2b9
Delete visual studio files
rftrdev Jun 9, 2023
4f08a10
Merge branch '1dot13:master' into new-group-type
rftrdev Jun 9, 2023
08c69fd
Merge branch '1dot13:master' into new-group-type
rftrdev Jun 22, 2023
88e13a0
Try deploying transport groups before (and in addition to) creating r…
rftrdev Jun 23, 2023
b758ab9
Fix mine ownership check
rftrdev Jun 24, 2023
59085d7
Reduce transport group speed to 50%
rftrdev Jun 24, 2023
3195133
Recent losses impacts max simultaneous groups
rftrdev Jun 24, 2023
abb96ee
Fix group nullptr when ordering a group to return home
rftrdev Jun 25, 2023
b73c0d4
Ensure radio op has a radio for detection
rftrdev Jun 25, 2023
258ea8e
Add nullptr check
rftrdev Jun 26, 2023
90eaee8
Fix backpack creation for soldiers in jeep groups
rftrdev Jun 27, 2023
67fdbe7
Transport group turncoats broadcast their location
rftrdev Jun 28, 2023
976c712
Fix transport speed modifier applying to all groups
rftrdev Jun 28, 2023
2375860
Add face items to transport group loot
rftrdev Jul 2, 2023
cdaddca
Properly populate transport groups moving into a sector where a battl…
rftrdev Jul 4, 2023
e46c2e0
Update text
rftrdev Jul 4, 2023
44c3c68
Remove pragma
rftrdev Jul 4, 2023
83adae0
Merge branch '1dot13:master' into new-group-type
rftrdev Jul 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions GameSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,7 @@ void UpdateFeatureFlags()
gGameExternalOptions.gfAllowSnow = gGameSettings.fFeatures[FF_ALLOW_SNOW];
gGameExternalOptions.fMiniEventsEnabled = gGameSettings.fFeatures[FF_MINI_EVENTS];
gGameExternalOptions.fRebelCommandEnabled = gGameSettings.fFeatures[FF_REBEL_COMMAND];
gGameExternalOptions.fStrategicTransportGroupsEnabled = gGameSettings.fFeatures[FF_STRATEGIC_TRANSPORT_GROUPS];
}
else
{
Expand Down Expand Up @@ -497,6 +498,7 @@ BOOLEAN LoadFeatureFlags()
gGameSettings.fFeatures[FF_ALLOW_SNOW] = iniReader.ReadBoolean("JA2 Feature Flags", "FF_ALLOW_SNOW", TRUE, FALSE);
gGameSettings.fFeatures[FF_MINI_EVENTS] = iniReader.ReadBoolean("JA2 Feature Flags", "FF_MINI_EVENTS", FALSE, FALSE);
gGameSettings.fFeatures[FF_REBEL_COMMAND] = iniReader.ReadBoolean("JA2 Feature Flags", "FF_REBEL_COMMAND", FALSE, FALSE);
gGameSettings.fFeatures[FF_STRATEGIC_TRANSPORT_GROUPS] = iniReader.ReadBoolean("JA2 Feature Flags", "FF_STRATEGIC_TRANSPORT_GROUPS", FALSE, FALSE);
}
}
catch(vfs::Exception)
Expand Down Expand Up @@ -725,6 +727,7 @@ BOOLEAN SaveFeatureFlags()
settings << "FF_ALLOW_SNOW = " << (gGameSettings.fFeatures[FF_ALLOW_SNOW] ? "TRUE" : "FALSE") << endl;
settings << "FF_MINI_EVENTS = " << (gGameSettings.fFeatures[FF_MINI_EVENTS] ? "TRUE" : "FALSE") << endl;
settings << "FF_REBEL_COMMAND = " << (gGameSettings.fFeatures[FF_REBEL_COMMAND] ? "TRUE" : "FALSE") << endl;
settings << "FF_STRATEGIC_TRANSPORT_GROUPS = " << (gGameSettings.fFeatures[FF_STRATEGIC_TRANSPORT_GROUPS] ? "TRUE" : "FALSE") << endl;

try
{
Expand Down Expand Up @@ -2161,6 +2164,10 @@ void LoadGameExternalOptions()
gGameExternalOptions.fAlternativeHelicopterFuelSystem = iniReader.ReadBoolean("Strategic Gameplay Settings","ALTERNATIVE_HELICOPTER_FUEL_SYSTEM", TRUE);
gGameExternalOptions.fHelicopterPassengersCanGetHit = iniReader.ReadBoolean("Strategic Gameplay Settings","HELICOPTER_PASSENGERS_CAN_GET_HIT", TRUE);

gGameExternalOptions.fStrategicTransportGroupsDebug = iniReader.ReadBoolean("Strategic Gameplay Settings", "STRATEGIC_TRANSPORT_GROUPS_DEBUG", FALSE, FALSE);
gGameExternalOptions.fStrategicTransportGroupsEnabled = iniReader.ReadBoolean("Strategic Gameplay Settings", "STRATEGIC_TRANSPORT_GROUPS_ENABLED", FALSE);
gGameExternalOptions.iMaxSimultaneousTransportGroups = iniReader.ReadInteger("Strategic Gameplay Settings", "MAX_SIMULTANEOUS_STRATEGIC_TRANSPORT_GROUPS", 5, 1, 10);

//################# Morale Settings ##################
gGameExternalOptions.sMoraleModAppearance = iniReader.ReadInteger("Morale Settings","MORALE_MOD_APPEARANCE", 1, 0, 5);
gGameExternalOptions.sMoraleModRefinement = iniReader.ReadInteger("Morale Settings","MORALE_MOD_REFINEMENT", 2, 0, 5);
Expand Down Expand Up @@ -4187,6 +4194,8 @@ void LoadRebelCommandSettings()
gRebelCommandSettings.iDisruptAsdDuration_Bonus_Nightops = iniReader.ReadInteger("Rebel Command Settings", "DISRUPT_ASD_DURATION_BONUS_NIGHTOPS", 48, 0, 255);
gRebelCommandSettings.iDisruptAsdDuration_Bonus_Technician = iniReader.ReadInteger("Rebel Command Settings", "DISRUPT_ASD_DURATION_BONUS_TECHNICIAN", 48, 0, 255);

gRebelCommandSettings.iForgeTransportOrdersSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "FORGE_TRANSPORT_ORDERS_SUCCESS_CHANCE", 50, 0, 100);

gRebelCommandSettings.iGetEnemyMovementTargetsSuccessChance = iniReader.ReadInteger("Rebel Command Settings", "STRATEGIC_INTEL_SUCCESS_CHANCE", 50, 0, 100);
gRebelCommandSettings.iGetEnemyMovementTargetsDuration = iniReader.ReadInteger("Rebel Command Settings", "STRATEGIC_INTEL_DURATION", 72, 0, 255);
gRebelCommandSettings.iGetEnemyMovementTargetsDuration_Bonus_Covert = iniReader.ReadInteger("Rebel Command Settings", "STRATEGIC_INTEL_DURATION_BONUS_COVERT", 48, 0, 255);
Expand Down
7 changes: 7 additions & 0 deletions GameSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ enum
FF_ALLOW_SNOW,
FF_MINI_EVENTS,
FF_REBEL_COMMAND,
FF_STRATEGIC_TRANSPORT_GROUPS,

NUM_FEATURE_FLAGS,
};
Expand Down Expand Up @@ -1602,6 +1603,10 @@ typedef struct
BOOLEAN fAlternativeHelicopterFuelSystem;
BOOLEAN fHelicopterPassengersCanGetHit;

BOOLEAN fStrategicTransportGroupsDebug;
BOOLEAN fStrategicTransportGroupsEnabled;
INT8 iMaxSimultaneousTransportGroups;

UINT16 usHelicopterHoverCostOnGreenTile;
UINT16 usHelicopterHoverCostOnRedTile;

Expand Down Expand Up @@ -1878,6 +1883,8 @@ typedef struct
UINT8 iDisruptAsdDuration_Bonus_Nightops;
UINT8 iDisruptAsdDuration_Bonus_Technician;

INT8 iForgeTransportOrdersSuccessChance;

INT8 iGetEnemyMovementTargetsSuccessChance;
UINT8 iGetEnemyMovementTargetsDuration;
UINT8 iGetEnemyMovementTargetsDuration_Bonus_Covert;
Expand Down
1 change: 1 addition & 0 deletions Laptop/history.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1259,6 +1259,7 @@ void ProcessHistoryTransactionString(STR16 pString, HistoryUnitPtr pHistory)
case HISTORY_SLAY_MYSTERIOUSLY_LEFT:
case HISTORY_WALDO:
case HISTORY_HELICOPTER_REPAIR_STARTED:
case HISTORY_INTERCEPTED_TRANSPORT_GROUP:
//swprintf( pString, pHistoryStrings[ pHistory->ubCode ], pHistory->ubSecondCode );
swprintf( pString, HistoryName[ pHistory->ubCode ].sHistory, pHistory->ubSecondCode );
break;
Expand Down
1 change: 1 addition & 0 deletions Laptop/history.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ enum{
HISTORY_MERC_KILLED_CHARACTER,
HISTORY_WALDO,
HISTORY_HELICOPTER_REPAIR_STARTED,
HISTORY_INTERCEPTED_TRANSPORT_GROUP,
TEXT_NUM_HISTORY
};

Expand Down
5 changes: 3 additions & 2 deletions Strategic/Auto Resolve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,7 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Autoresolve1");
switch( GetEnemyEncounterCode() )
{
case ENEMY_ENCOUNTER_CODE:
case TRANSPORT_INTERCEPT_CODE:
gpAR->ubPlayerDefenceAdvantage = 21; //Skewed to the player's advantage for convenience purposes.
break;
case ENEMY_INVASION_CODE:
Expand Down Expand Up @@ -1745,6 +1746,7 @@ void RenderAutoResolve()
swprintf( str, gpStrategicString[STR_AR_ATTACK_HEADER] );
break;
case ENEMY_ENCOUNTER_CODE:
case TRANSPORT_INTERCEPT_CODE:
swprintf( str, gpStrategicString[STR_AR_ENCOUNTER_HEADER] );
break;
case ENEMY_INVASION_CODE:
Expand Down Expand Up @@ -6058,6 +6060,5 @@ BOOLEAN IndividualMilitiaInUse_AutoResolve( UINT32 aMilitiaId )
}
}
}

return FALSE;
}
}
1 change: 1 addition & 0 deletions Strategic/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ set(StrategicSrc
"${CMAKE_CURRENT_SOURCE_DIR}/Strategic Status.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Strategic Town Loyalty.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/strategic town reputation.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Strategic Transport Groups.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Strategic Turns.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/strategic.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/strategicmap.cpp"
Expand Down
6 changes: 6 additions & 0 deletions Strategic/Game Event Hook.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
#include "LuaInitNPCs.h" // added by Flugente
#include "MiniEvents.h"
#include "Rebel Command.h"
#include "interface Dialogue.h"

#include "connect.h"

Expand Down Expand Up @@ -668,6 +669,11 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent )
case EVENT_REBELCOMMAND:
RebelCommand::HandleStrategicEvent(pEvent->uiParam);
break;

case EVENT_RETURN_TRANSPORT_GROUP:
// for this action, we only care about the groupid, which is in the event param
ExecuteStrategicAIAction(NPC_ACTION_RETURN_TRANSPORT_GROUP, 0, 0, pEvent->uiParam);
break;
}
gfPreventDeletionOfAnyEvent = fOrigPreventFlag;
return TRUE;
Expand Down
5 changes: 4 additions & 1 deletion Strategic/Game Event Hook.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@ enum

EVENT_REBELCOMMAND,

EVENT_RETURN_TRANSPORT_GROUP,
EVENT_TRANSPORT_GROUP_DEFEATED,

NUMBER_OF_EVENT_TYPES_PLUS_ONE,
NUMBER_OF_EVENT_TYPES = NUMBER_OF_EVENT_TYPES_PLUS_ONE - 1
};
Expand Down Expand Up @@ -217,4 +220,4 @@ void DeleteAllStrategicEvents();
// Flugente: return vector of all events of type ubCallbackID with time and param
std::vector< std::pair<UINT32, UINT32> > GetAllStrategicEventsOfType( UINT8 ubCallbackID );

#endif
#endif
1 change: 1 addition & 0 deletions Strategic/Game Events.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ CHAR16 gEventName[NUMBER_OF_EVENT_TYPES_PLUS_ONE][40]={
L"ArmyFinishTraining",
L"MiniEvent",
L"ARC_Event",
L"ReturnTransportGroup",
};

#endif
Expand Down
22 changes: 22 additions & 0 deletions Strategic/Map Screen Interface Map.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
#include "LuaInitNPCs.h" // added by Flugente
#include "Game Event Hook.h" // added by Flugente
#include "Rebel Command.h"
#include "Strategic Transport Groups.h"

#include "Quests.h"
#include "connect.h"
Expand Down Expand Up @@ -841,6 +842,8 @@ void fillMapColoursForVisitedSectors(INT32(&colorMap)[ MAXIMUM_VALID_Y_COORDINAT
}
}

FillMapColoursForTransportGroups(colorMap);

if (RebelCommand::ShowEnemyMovementTargets())
{
const auto targetColor = MAP_SHADE_LT_RED;
Expand Down Expand Up @@ -8584,6 +8587,25 @@ void DetermineMapIntelData( INT32 asSectorZ )
}
}

// transport groups
std::map<UINT8, TransportGroupSectorInfo> map = GetTransportGroupSectorInfo();
for (const auto iter : map)
{
CHAR16 str[128];

switch (iter.second)
{
case TransportGroupSectorInfo::TransportGroupSectorInfo_LocatedGroup:
swprintf( str, gpStrategicString[STR_PB_TRANSPORT_GROUP]);
break;

case TransportGroupSectorInfo::TransportGroupSectorInfo_LocatedDestination:
swprintf( str, gpStrategicString[STR_PB_TRANSPORT_GROUP_EN_ROUTE]);
break;
}
AddIntelAndQuestMapDataForSector( SECTORX(iter.first), SECTORY(iter.first), MAP_SHADE_LT_YELLOW, -1, str, L"" );
}

// uncovered terrorists we know of
for ( int cnt = 0; cnt < 6; ++cnt )
{
Expand Down
38 changes: 33 additions & 5 deletions Strategic/PreBattle Interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
#include "CampaignStats.h" // added by Flugente
#include "militiasquads.h" // added by Flugente
#include "SkillCheck.h" // added by Flugente
#include "Strategic Transport Groups.h"

#ifdef JA2UB
#include "ub_config.h"
Expand Down Expand Up @@ -438,7 +439,7 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI )
}
else if ( pBattleGroup && pBattleGroup->usGroupTeam != OUR_TEAM && NumNonPlayerTeamMembersInSector( pBattleGroup->ubSectorX, pBattleGroup->ubSectorY, MILITIA_TEAM ) > 0 )
{
SetEnemyEncounterCode( ENEMY_ENCOUNTER_CODE );
SetEnemyEncounterCode( pBattleGroup->usGroupTeam == ENEMY_TEAM && pBattleGroup->pEnemyGroup->ubIntention == TRANSPORT ? TRANSPORT_INTERCEPT_CODE : ENEMY_ENCOUNTER_CODE );
}
else if( GetEnemyEncounterCode() == ENTERING_ENEMY_SECTOR_CODE ||
GetEnemyEncounterCode() == ENEMY_ENCOUNTER_CODE ||
Expand All @@ -452,7 +453,8 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI )
GetEnemyEncounterCode() == CONCEALINSERTION_CODE ||
GetEnemyEncounterCode() == BLOODCAT_ATTACK_CODE ||
GetEnemyEncounterCode() == ZOMBIE_ATTACK_CODE ||
GetEnemyEncounterCode() == BANDIT_ATTACK_CODE )
GetEnemyEncounterCode() == BANDIT_ATTACK_CODE ||
GetEnemyEncounterCode() == TRANSPORT_INTERCEPT_CODE )
{
//use same code
SetExplicitEnemyEncounterCode( GetEnemyEncounterCode() );
Expand Down Expand Up @@ -679,8 +681,24 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI )
{
SetEnemyEncounterCode( ENEMY_ENCOUNTER_CODE );

GROUP* pGroup = gpGroupList;
BOOLEAN encounteredTransportGroup = FALSE;
while (pGroup)
{
if (pGroup->usGroupTeam == ENEMY_TEAM && pGroup->pEnemyGroup->ubIntention == TRANSPORT && pGroup->ubSectorX == gpBattleGroup->ubSectorX && pGroup->ubSectorY == gpBattleGroup->ubSectorY && pGroup->ubSectorZ == gpBattleGroup->ubSectorZ)
{
encounteredTransportGroup = TRUE;
break;
}

pGroup = pGroup->next;
}
if (encounteredTransportGroup)
{
SetEnemyEncounterCode( TRANSPORT_INTERCEPT_CODE );
}
// Flugente: no ambushes on an airdrop
if ( !fAirDrop )
else if ( !fAirDrop )
{
//Don't consider ambushes until the player has reached 25% (normal) progress
if( gfHighPotentialForAmbush )
Expand Down Expand Up @@ -798,7 +816,9 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI )
}
else
{ //Are enemies invading a town, or just encountered the player.
if( GetTownIdForSector( gubPBSectorX, gubPBSectorY ) )
if (pBattleGroup && pBattleGroup->usGroupTeam == ENEMY_TEAM && pBattleGroup->pEnemyGroup->ubIntention == TRANSPORT)
SetEnemyEncounterCode( TRANSPORT_INTERCEPT_CODE );
else if( GetTownIdForSector( gubPBSectorX, gubPBSectorY ) )
SetEnemyEncounterCode( ENEMY_INVASION_CODE );
//SAM sites not in towns will also be considered to be important
else if( pSector->uiFlags & SF_SAM_SITE )
Expand Down Expand Up @@ -866,7 +886,7 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI )
}
HideButton( giMapContractButton );

if( GetEnemyEncounterCode() == ENEMY_ENCOUNTER_CODE )
if( GetEnemyEncounterCode() == ENEMY_ENCOUNTER_CODE || GetEnemyEncounterCode() == TRANSPORT_INTERCEPT_CODE )
{ //we know how many enemies are here, so until we leave the sector, we will continue to display the value.
//the flag will get cleared when time advances after the fEnemyInSector flag is clear.

Expand Down Expand Up @@ -955,6 +975,7 @@ void InitPreBattleInterface( GROUP *pBattleGroup, BOOLEAN fPersistantPBI )
{
case CREATURE_ATTACK_CODE:
case ENEMY_ENCOUNTER_CODE:
case TRANSPORT_INTERCEPT_CODE:
case ENEMY_INVASION_CODE:
case ENEMY_INVASION_AIRDROP_CODE:
case BLOODCAT_ATTACK_CODE:
Expand Down Expand Up @@ -1213,6 +1234,7 @@ void RenderPBHeader( INT32 *piX, INT32 *piWidth)
swprintf( str, gpStrategicString[ STR_PB_ENEMYINVASION_HEADER ] );
break;
case ENEMY_ENCOUNTER_CODE:
case TRANSPORT_INTERCEPT_CODE:
swprintf( str, gpStrategicString[ STR_PB_ENEMYENCOUNTER_HEADER ] );
break;
case ENEMY_AMBUSH_CODE:
Expand Down Expand Up @@ -2520,6 +2542,10 @@ void LogBattleResults( UINT8 ubVictoryCode)
break;
case CONCEALINSERTION_CODE:
break;
case TRANSPORT_INTERCEPT_CODE:
AddHistoryToPlayersLog( HISTORY_INTERCEPTED_TRANSPORT_GROUP, 0, GetWorldTotalMin(), sSectorX, sSectorY );
NotifyTransportGroupDefeated();
break;
}

// Flugente: campaign stats
Expand All @@ -2534,6 +2560,7 @@ void LogBattleResults( UINT8 ubVictoryCode)
AddHistoryToPlayersLog( HISTORY_LOSTTOWNSECTOR, 0, GetWorldTotalMin(), sSectorX, sSectorY );
break;
case ENEMY_ENCOUNTER_CODE:
case TRANSPORT_INTERCEPT_CODE:
AddHistoryToPlayersLog( HISTORY_LOSTBATTLE, 0, GetWorldTotalMin(), sSectorX, sSectorY );
break;
case ENEMY_AMBUSH_CODE:
Expand Down Expand Up @@ -2567,6 +2594,7 @@ void LogBattleResults( UINT8 ubVictoryCode)
gCurrentIncident.usIncidentFlags |= INCIDENT_ATTACK_ENEMY;
break;
case ENEMY_ENCOUNTER_CODE:
case TRANSPORT_INTERCEPT_CODE:
case ENTERING_ENEMY_SECTOR_CODE:
case CREATURE_ATTACK_CODE:
case ENTERING_BLOODCAT_LAIR_CODE:
Expand Down
4 changes: 3 additions & 1 deletion Strategic/PreBattle Interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ enum
BLOODCAT_ATTACK_CODE, // Flugente: like CREATURE_ATTACK_CODE, but with cats
ZOMBIE_ATTACK_CODE, // Flugente: like CREATURE_ATTACK_CODE, but with zombies
BANDIT_ATTACK_CODE, // Flugente: like CREATURE_ATTACK_CODE, but with bandits

TRANSPORT_INTERCEPT_CODE, // rftr: like ENEMY_ENCOUNTER_CODE
};

extern BOOLEAN gfAutoAmbush;
Expand Down Expand Up @@ -112,4 +114,4 @@ enum
};
void LogBattleResults( UINT8 ubVictoryCode);

#endif
#endif
Loading