mirror of
https://github.com/1dot13/source.git
synced 2026-08-12 14:10:23 +02:00
Add robots to enemy groups (by rftr).
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8956 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+52
-2
@@ -99,12 +99,14 @@ void InitASD( )
|
||||
gASDResource[ASD_HELI] = 0;
|
||||
gASDResource[ASD_JEEP] = 2;
|
||||
gASDResource[ASD_TANK] = 2;
|
||||
gASDResource[ASD_ROBOT] = 8;
|
||||
|
||||
gASDResource_Ordered[ASD_MONEY] = 0;
|
||||
gASDResource_Ordered[ASD_FUEL] = 0;
|
||||
gASDResource_Ordered[ASD_HELI] = 0;
|
||||
gASDResource_Ordered[ASD_JEEP] = 0;
|
||||
gASDResource_Ordered[ASD_TANK] = 0;
|
||||
gASDResource_Ordered[ASD_ROBOT] = 0;
|
||||
|
||||
gASD_Flags = 0;
|
||||
|
||||
@@ -196,6 +198,8 @@ void UpdateASD( )
|
||||
if ( !(gASD_Flags & ASDFACT_TANK_UNLOCKED) && HighestPlayerProgressPercentage( ) >= gGameExternalOptions.usTankMinimumProgress )
|
||||
SetASDFlag( ASDFACT_TANK_UNLOCKED );
|
||||
|
||||
if ( !(gASD_Flags & ASDFACT_ROBOT_UNLOCKED) && HighestPlayerProgressPercentage( ) >= gGameExternalOptions.usRobotMinimumProgress )
|
||||
SetASDFlag( ASDFACT_ROBOT_UNLOCKED );
|
||||
|
||||
// determine whether we need to buy new toys
|
||||
ASDDecideOnPurchases();
|
||||
@@ -210,6 +214,7 @@ void ASDDecideOnPurchases()
|
||||
INT32 needed_heli = 0;
|
||||
INT32 needed_tank = 0;
|
||||
INT32 needed_jeep = 0;
|
||||
INT32 needed_robot = 0;
|
||||
|
||||
UINT16 highestplayerprogress = HighestPlayerProgressPercentage( );
|
||||
|
||||
@@ -275,24 +280,39 @@ void ASDDecideOnPurchases()
|
||||
needed_fuel += needed_tank * ASDResourceCostFuel( ASD_TANK );
|
||||
}
|
||||
|
||||
// do we need new robots?
|
||||
if ( gASD_Flags & ASDFACT_ROBOT_UNLOCKED )
|
||||
{
|
||||
// how many would we like to have? Note that this refers to the ones in our pool, the vehicles awarded to enemy groups are no longer accounted for
|
||||
needed_robot = min( 10, 2 + highestplayerprogress / 10 );
|
||||
|
||||
// how many are needed?
|
||||
needed_robot = max( 0, needed_robot - gASDResource[ASD_ROBOT] );
|
||||
|
||||
needed_fuel += needed_robot * ASDResourceCostFuel( ASD_ROBOT );
|
||||
}
|
||||
|
||||
// how much new fuel do we need?
|
||||
needed_fuel = max( 0, needed_fuel - gASDResource[ASD_FUEL] );
|
||||
|
||||
// reduce order by what we'e alreay ordered
|
||||
// reduce order by what we'e already ordered
|
||||
needed_fuel = max( 0, needed_fuel - gASDResource_Ordered[ASD_FUEL] );
|
||||
needed_jeep = max( 0, needed_jeep - gASDResource_Ordered[ASD_JEEP] );
|
||||
needed_tank = max( 0, needed_tank - gASDResource_Ordered[ASD_TANK] );
|
||||
needed_heli = max( 0, needed_heli - gASDResource_Ordered[ASD_HELI] );
|
||||
needed_robot = max( 0, needed_robot - gASDResource_Ordered[ASD_ROBOT] );
|
||||
|
||||
// check whether we can afford all new purchases. If we can't, lower your expectations
|
||||
while ( needed_fuel * ASDResourceCostMoney( ASD_FUEL ) +
|
||||
needed_jeep * ASDResourceCostMoney( ASD_JEEP ) +
|
||||
needed_tank * ASDResourceCostMoney( ASD_TANK ) +
|
||||
needed_heli * ASDResourceCostMoney( ASD_HELI ) > gASDResource[ASD_MONEY] )
|
||||
needed_heli * ASDResourceCostMoney( ASD_HELI ) +
|
||||
needed_robot * ASDResourceCostMoney( ASD_ROBOT ) > gASDResource[ASD_MONEY] )
|
||||
{
|
||||
if ( needed_tank ) --needed_tank;
|
||||
else if ( needed_heli ) --needed_heli;
|
||||
else if ( needed_jeep ) --needed_jeep;
|
||||
else if ( needed_robot ) --needed_robot;
|
||||
else needed_fuel = max( 0, needed_fuel - 10 );
|
||||
}
|
||||
|
||||
@@ -334,6 +354,15 @@ void ASDDecideOnPurchases()
|
||||
|
||||
AddStrategicEvent( EVENT_ASD_PURCHASE_HELI, GetWorldTotalMin( ) + ASDResourceDeliveryTime( ASD_HELI ), needed_heli );
|
||||
}
|
||||
|
||||
if ( needed_robot )
|
||||
{
|
||||
AddStrategicAIResources( ASD_MONEY, -needed_robot * ASDResourceCostMoney( ASD_ROBOT ) );
|
||||
|
||||
gASDResource_Ordered[ASD_ROBOT] += needed_robot;
|
||||
|
||||
AddStrategicEvent( EVENT_ASD_PURCHASE_ROBOT, GetWorldTotalMin( ) + ASDResourceDeliveryTime( ASD_ROBOT ), needed_robot );
|
||||
}
|
||||
}
|
||||
|
||||
void ASDDecideHeliOperations()
|
||||
@@ -1470,6 +1499,10 @@ UINT32 ASDResourceCostFuel( UINT8 aType )
|
||||
case ASD_JEEP:
|
||||
return gGameExternalOptions.gASDResource_Fuel_Jeep;
|
||||
break;
|
||||
|
||||
case ASD_ROBOT:
|
||||
return gGameExternalOptions.gASDResource_Fuel_Robot;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -1509,3 +1542,20 @@ BOOLEAN ASDSoldierUpgradeToJeep( )
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOLEAN ASDSoldierUpgradeToRobot( )
|
||||
{
|
||||
if ( gGameExternalOptions.fASDActive && gGameExternalOptions.fASDAssignsRobots )
|
||||
{
|
||||
if ( gASD_Flags & ASDFACT_ROBOT_UNLOCKED )
|
||||
{
|
||||
if ( gASDResource[ASD_ROBOT] )
|
||||
{
|
||||
gASDResource[ASD_ROBOT] = max( 0, gASDResource[ASD_ROBOT] - 1 );
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user