This commit is contained in:
Pan 2019-05-02 22:04:59 +12:00
parent ac2dcdfa9d
commit 2a751e6e5d
4 changed files with 24 additions and 19 deletions

View File

@ -69,8 +69,8 @@ public class combatManagerAI {
public combatManagerAI(){ public combatManagerAI(){
this.theBaseInfo = mainThread.ec.theBaseInfo; this.theBaseInfo = mainThread.ec.theBaseInfo;
standardAttackTime = 600; standardAttackTime = 550;
rushAttackTime = 300 + gameData.getRandom()/4; rushAttackTime = 250 + gameData.getRandom()/4;
goldMines = mainThread.theAssetManager.goldMines; goldMines = mainThread.theAssetManager.goldMines;

View File

@ -81,7 +81,7 @@ public class defenseManagerAI {
lightTanksControlledByCombatAI = mainThread.ec.theUnitProductionAI.lightTanksControlledByCombatAI; lightTanksControlledByCombatAI = mainThread.ec.theUnitProductionAI.lightTanksControlledByCombatAI;
//after 500 seconds mark, borrow 2 stealth tanks from combat manager, and send them to guard western and southern side of the main base //after 500 seconds mark, borrow 2 stealth tanks from combat manager, and send them to guard western and southern side of the main base
if(frameAI >= 480) { if(frameAI >= 480 && mainThread.ec.theCombatManagerAI.checkIfAIHasBiggerForce(0.8f)) {
for(int i = 0; i < 2; i++) { for(int i = 0; i < 2; i++) {
if(observers[i] == null || observers[i].currentHP <=0) { if(observers[i] == null || observers[i].currentHP <=0) {
for(int j = 0; j < stealthTanksControlledByCombatAI.length; j++) { for(int j = 0; j < stealthTanksControlledByCombatAI.length; j++) {
@ -374,10 +374,7 @@ public class defenseManagerAI {
} }
} }
} }
//System.out.println("mainPlayerForceSize: " + mainPlayerForceSize + " " + "numOfGunTurretNearThreat: " +numOfGunTurretNearThreat + " " + "numOfMissileTurretNearThreat: " + numOfMissileTurretNearThreat);
for(int i = 0; i < constructionYards.length; i++){ for(int i = 0; i < constructionYards.length; i++){
if(constructionYards[i] != null && constructionYards[i].teamNo != 0 && constructionYards[i].currentHP >0) { if(constructionYards[i] != null && constructionYards[i].teamNo != 0 && constructionYards[i].currentHP >0) {
@ -424,7 +421,7 @@ public class defenseManagerAI {
if(distanceToThreat > d + missileTurret.attackRange) if(distanceToThreat > d + missileTurret.attackRange)
d = distanceToThreat - missileTurret.attackRange; d = distanceToThreat - missileTurret.attackRange;
if(distanceToThreat < 2.2) if(distanceToThreat < 2.2)
d = 1f; d = 1.25f;
missileTurretDeployLocation.x = constructionYards[i].centre.x + (threatX - constructionYards[i].centre.x)/distanceToThreat*d; missileTurretDeployLocation.x = constructionYards[i].centre.x + (threatX - constructionYards[i].centre.x)/distanceToThreat*d;
missileTurretDeployLocation.z = constructionYards[i].centre.z + (threatZ - constructionYards[i].centre.z)/distanceToThreat*d; missileTurretDeployLocation.z = constructionYards[i].centre.z + (threatZ - constructionYards[i].centre.z)/distanceToThreat*d;

View File

@ -110,7 +110,7 @@ public class unitProductionAI {
} }
if(z != 999999) { if(z != 999999) {
rallyPoint.set(x - 2f, 0, z - 1.5f); rallyPoint.set(x - 2.5f, 0, z - 2f);
if(frameAI < 240) { if(frameAI < 240) {
rallyPoint.set(mainThread.theAssetManager.goldMines[5].centre); rallyPoint.set(mainThread.theAssetManager.goldMines[5].centre);
@ -173,20 +173,15 @@ public class unitProductionAI {
(playerHasMostlyHeavyAndStealthTanks || (playerHasMostlyHeavyAndStealthTanks ||
!playerHasManyLightTanksButNoHeavyTank !playerHasManyLightTanksButNoHeavyTank
&& !playerHasMostlyLightTanks && !playerHasMostlyLightTanks
&& !(numberOfHeavyTanks_player == 0 && maxNumberOfStealthTanks_playerInLastFiveMinutes < 3 && mainThread.gameFrame/30 > 600) && !(numberOfHeavyTanks_player == 0 && maxNumberOfStealthTanks_playerInLastFiveMinutes < 3 && frameAI > 600)
&& !(playerHasMostlyHeavyTanks && numberOfStealthTanks_player < numberOfHeavyTanks_AI*2) && !(playerHasMostlyHeavyTanks && numberOfStealthTanks_player < numberOfHeavyTanks_AI*2)
&& (playIsRushingHighTierUnits || maxNumberOfStealthTanks_playerInLastFiveMinutes*4 > numberOfHeavyTanks_AI || (mainThread.gameFrame/30 > 400 && mainThread.gameFrame/30 < 550 && numberOfPlayerGunTurrets + numberOfPlayerMissileTurrets+ numberOfLightTanks_player + numberOfRocketTanks_player + numberOfHeavyTanks_player*5 < 5)))){ && (playIsRushingHighTierUnits || maxNumberOfStealthTanks_playerInLastFiveMinutes*4 > numberOfHeavyTanks_AI || (frameAI > 400 && frameAI < 500 && numberOfPlayerGunTurrets + numberOfPlayerMissileTurrets+ numberOfLightTanks_player + numberOfRocketTanks_player + numberOfHeavyTanks_player*5 < 5)))){
currentProductionOrder = produceHeavyTank; currentProductionOrder = produceHeavyTank;
}else if(theBaseInfo.canBuildStealthTank && (playerHasMostlyLightTanks || playerLikelyCanNotProduceHighTierUnits || playerDoesntHaveMassHeavyTanks) && !playerHasMostlyHeavyTanks && (frameAI > 450 || numberOfLightTanks_player > 8)){ }else if(theBaseInfo.canBuildStealthTank && (playerHasMostlyLightTanks || playerLikelyCanNotProduceHighTierUnits || playerDoesntHaveMassHeavyTanks) && !playerHasMostlyHeavyTanks && (frameAI > 450 || numberOfLightTanks_player > 8)){
currentProductionOrder = produceStealthTank; currentProductionOrder = produceStealthTank;
}else{ }else{
currentProductionOrder = produceLightTank; currentProductionOrder = produceLightTank;
} }
System.out.println("playerHasMostlyHeavyAndStealthTanks: " + playerHasMostlyHeavyAndStealthTanks);
System.out.println("playerHasManyLightTanksButNoHeavyTank: " + playerHasManyLightTanksButNoHeavyTank);
System.out.println("playerHasMostlyLightTanks: " + playerHasMostlyLightTanks);
System.out.println(currentProductionOrder);
//make decision on what tech to research //make decision on what tech to research
if(mainThread.ec.theBuildingManagerAI.theBaseInfo.numberOfCommunicationCenter > 0) { if(mainThread.ec.theBuildingManagerAI.theBaseInfo.numberOfCommunicationCenter > 0) {

View File

@ -79,8 +79,8 @@ public class factory extends solidObject{
public static int harvesterType = 2; public static int harvesterType = 2;
public static int droneType = 5; public static int droneType = 5;
public static int MCVType = 3; public static int MCVType = 3;
public static int stealthTankType = 4; public static int stealthTankType = 6;
public static int heavyTankType = 6; public static int heavyTankType = 7;
public int currentStatus; public int currentStatus;
public static int isBuilding = 1; public static int isBuilding = 1;
@ -824,7 +824,7 @@ public class factory extends solidObject{
canBuildMCV = theBaseInfo.canBuildMCV; canBuildMCV = theBaseInfo.canBuildMCV;
canBuildStealthTank = theBaseInfo.canBuildStealthTank; canBuildStealthTank = theBaseInfo.canBuildStealthTank;
canBuildHeavyTank = theBaseInfo.canBuildHeavyTank; canBuildHeavyTank = theBaseInfo.canBuildHeavyTank;
//process emerging from ground animation //process emerging from ground animation
if(centre.y < -0.79f){ if(centre.y < -0.79f){
@ -1946,6 +1946,19 @@ public class factory extends solidObject{
theBaseInfo.currentCredit+=creditSpentOnBuilding; theBaseInfo.currentCredit+=creditSpentOnBuilding;
creditSpentOnBuilding = 0; creditSpentOnBuilding = 0;
currentStatus = isIdle; currentStatus = isIdle;
lightTankProgress = 255;
rocketTankProgress = 255;
harvesterProgress = 255;
droneProgress = 255;
MCVProgress = 255;
stealthTankProgress = 255;
heavyTankProgress = 255;
for(int i = 0; i < productionQueue.length; i++)
productionQueue[i] = -1;
numOfLightTankOnQueue = 0;
numOfStealthTankOnQueue = 0;
numOfRocketTankOnQueue = 0;
numOfHeavyTankOnQueue = 0;
} }
//draw the model //draw the model