Skip to content

Commit daf7f87

Browse files
committed
bugfix: Prevent ranking of riders that are not trainable
1 parent 0413b62 commit daf7f87

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4513,8 +4513,21 @@ GameMessageDisposition CommandTranslator::translateGameMessage(const GameMessage
45134513
if (!pObject)
45144514
continue;
45154515

4516-
ExperienceTracker *et = pObject->getExperienceTracker();
4517-
if (!et || !et->isTrainable())
4516+
ExperienceTracker* et;
4517+
Bool isRiderTrainable = true;
4518+
4519+
const ContainModuleInterface* contain = pObject->getContain();
4520+
if (contain && contain->isRiderChangeContain())
4521+
{
4522+
if (Object* rider = (Object*)contain->friend_getRider())
4523+
{
4524+
et = rider->getExperienceTracker();
4525+
isRiderTrainable = et && et->isTrainable();
4526+
}
4527+
}
4528+
4529+
et = pObject->getExperienceTracker();
4530+
if (!et || !isRiderTrainable || !et->isTrainable())
45184531
continue;
45194532

45204533
VeterancyLevel oldVet = et->getVeterancyLevel();

GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Collide/CrateCollide/SalvageCrateCollide.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
#include "GameClient/GameText.h"
4343
#include "GameClient/InGameUI.h"
4444
#include "GameLogic/ExperienceTracker.h"
45+
#include "GameLogic/Module/ContainModule.h"
4546
#include "GameLogic/Object.h"
4647

4748
//-------------------------------------------------------------------------------------------------
@@ -163,6 +164,19 @@ Bool SalvageCrateCollide::eligibleForLevel( Object *other )
163164
if( !other->getExperienceTracker()->isTrainable() )
164165
return FALSE;
165166

167+
#if !RETAIL_COMPATIBLE_CRC
168+
const ContainModuleInterface* contain = other->getContain();
169+
if (contain && contain->isRiderChangeContain())
170+
{
171+
if (Object* rider = (Object*)contain->friend_getRider())
172+
{
173+
const ExperienceTracker* et = rider->getExperienceTracker();
174+
if (!et || !et->isTrainable())
175+
return FALSE;
176+
}
177+
}
178+
#endif
179+
166180
return TRUE;
167181
}
168182

0 commit comments

Comments
 (0)