home
This commit is contained in:
parent
2a751e6e5d
commit
ac98f58955
@ -106,12 +106,12 @@ public class AssetManager {
|
|||||||
goldMines = new goldMine[16];
|
goldMines = new goldMine[16];
|
||||||
goldMines[0] = new goldMine(2f,-0.515f, 1.25f, 45000);
|
goldMines[0] = new goldMine(2f,-0.515f, 1.25f, 45000);
|
||||||
goldMines[1] = new goldMine(9.5f,-0.515f, 5.5f, 45000);
|
goldMines[1] = new goldMine(9.5f,-0.515f, 5.5f, 45000);
|
||||||
goldMines[2] = new goldMine(2f,-0.515f, 28.25f, 50000);
|
goldMines[2] = new goldMine(2f,-0.515f, 28.25f, 52500);
|
||||||
goldMines[3] = new goldMine(26f,-0.515f, 3.5f, 50000);
|
goldMines[3] = new goldMine(26f,-0.515f, 3.5f, 52500);
|
||||||
goldMines[4] = new goldMine(29.75f,-0.515f, 30f, 45000);
|
goldMines[4] = new goldMine(29.75f,-0.515f, 30f, 45000);
|
||||||
goldMines[5] = new goldMine(22.5f,-0.515f, 25.5f, 45000);
|
goldMines[5] = new goldMine(22.5f,-0.515f, 25.5f, 45000);
|
||||||
goldMines[6] = new goldMine(15.75f,-0.515f, 18f, 55000);
|
goldMines[6] = new goldMine(15.75f,-0.515f, 18f, 52500);
|
||||||
goldMines[7] = new goldMine(16.25f,-0.515f, 12.25f, 55000);
|
goldMines[7] = new goldMine(16.25f,-0.515f, 12.25f, 52500);
|
||||||
|
|
||||||
|
|
||||||
//create trees from bitmap
|
//create trees from bitmap
|
||||||
@ -241,19 +241,19 @@ public class AssetManager {
|
|||||||
|
|
||||||
for(int i = 0; i < 10; i ++){
|
for(int i = 0; i < 10; i ++){
|
||||||
|
|
||||||
for(int j = 0; j < 1; j++){
|
for(int j = 0; j < 6; j++){
|
||||||
//heavyTank l = new heavyTank(new vector(i*0.25f+ 1.125f,-0.3f, 17.375f - 0.25f*j), 90, 0);
|
//heavyTank l = new heavyTank(new vector(i*0.25f+ 1.125f,-0.3f, 17.375f - 0.25f*j), 90, 0);
|
||||||
//addHeavyTank(l);
|
//addHeavyTank(l);
|
||||||
//l.hasMultiShotUpgrade = true;
|
//l.hasMultiShotUpgrade = true;
|
||||||
//lightTank l = new lightTank(new vector(i*0.25f + 1.125f,-0.3f, 0.5f + 18.625f + j*0.25f), 90, 0);
|
//stealthTank l = new stealthTank(new vector(i*0.25f + 1.125f,-0.3f, 0.5f + 18.625f + j*0.25f), 90, 0);
|
||||||
|
|
||||||
//l.attackRange = 1.99f;
|
//l.attackRange = 1.99f;
|
||||||
|
|
||||||
//lightTank.tileCheckList_player = lightTank.generateTileCheckList(6);
|
//lightTank.tileCheckList_player = lightTank.generateTileCheckList(6);
|
||||||
|
|
||||||
//addLightTank(l);
|
//addStealthTank(l);
|
||||||
//if(j == 0 && i == 0)
|
//if(j == 0 && i == 0)
|
||||||
//addGunTurret(new gunTurret(i*0.25f -0.125f + 28, -0.65f, 0.25f + 28.125f + j*0.25f, 1));
|
//addMissileTurret(new missileTurret(i*0.25f -0.125f + 1, -0.65f, 0.25f + 17.125f + j*0.25f, 0));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -506,7 +506,7 @@ public class mainThread extends JFrame implements KeyListener, ActionListener, M
|
|||||||
|
|
||||||
|
|
||||||
sleepTime = 0;
|
sleepTime = 0;
|
||||||
while(System.currentTimeMillis()-lastDraw<frameInterval){
|
/*while(System.currentTimeMillis()-lastDraw<frameInterval){
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(1);
|
Thread.sleep(1);
|
||||||
@ -515,7 +515,7 @@ public class mainThread extends JFrame implements KeyListener, ActionListener, M
|
|||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,6 +52,9 @@ public class baseExpensionAI {
|
|||||||
lastExpansionLocation = 7;
|
lastExpansionLocation = 7;
|
||||||
|
|
||||||
lowGoldmineThreshold = 22500;
|
lowGoldmineThreshold = 22500;
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println(expensionPiorityList[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -162,7 +165,9 @@ public class baseExpensionAI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(myMCV == null && expensionGoldMine.goldDeposite >= 17500 && (mainThread.ec.theEconomyManagerAI.preferedGoldMine.goldDeposite < lowGoldmineThreshold ||
|
if(myMCV == null && expensionGoldMine.goldDeposite >= 17500 && (mainThread.ec.theEconomyManagerAI.preferedGoldMine.goldDeposite < lowGoldmineThreshold ||
|
||||||
|
(!hasRefineryNearTheGoldmine(mainThread.ec.theEconomyManagerAI.preferedGoldMine) && !hasConstructionYardNearGoldMine(mainThread.ec.theEconomyManagerAI.preferedGoldMine)) ||
|
||||||
(mainThread.ec.theEconomyManagerAI.preferedGoldMine == expensionGoldMine && !hasConstructionYardNearGoldMine(expensionGoldMine) && !hasRefineryNearTheGoldmine(expensionGoldMine)))){
|
(mainThread.ec.theEconomyManagerAI.preferedGoldMine == expensionGoldMine && !hasConstructionYardNearGoldMine(expensionGoldMine) && !hasRefineryNearTheGoldmine(expensionGoldMine)))){
|
||||||
|
|
||||||
int numberOfMCVOnQueue = 0;
|
int numberOfMCVOnQueue = 0;
|
||||||
@ -172,16 +177,10 @@ public class baseExpensionAI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(numberOfMCVOnQueue == 0 && theBaseInfo.canBuildMCV){
|
if(numberOfMCVOnQueue == 0 && theBaseInfo.canBuildMCV){
|
||||||
for(int i = 0; i < mainThread.theAssetManager.factories.length; i++){
|
for(int i = 0; i < mainThread.theAssetManager.factories.length; i++){
|
||||||
if(mainThread.theAssetManager.factories[i] != null && mainThread.theAssetManager.factories[i].teamNo != 0){
|
if(mainThread.theAssetManager.factories[i] != null && mainThread.theAssetManager.factories[i].teamNo != 0){
|
||||||
|
mainThread.theAssetManager.factories[i].cancelBuilding();
|
||||||
mainThread.theAssetManager.factories[i].cancelItemFromProductionQueue(factory.lightTankType);
|
|
||||||
mainThread.theAssetManager.factories[i].cancelItemFromProductionQueue(factory.rocketTankType);
|
|
||||||
mainThread.theAssetManager.factories[i].cancelItemFromProductionQueue(factory.stealthTankType);
|
|
||||||
mainThread.theAssetManager.factories[i].cancelItemFromProductionQueue(factory.heavyTankType);
|
|
||||||
mainThread.theAssetManager.factories[i].buildMCV();
|
mainThread.theAssetManager.factories[i].buildMCV();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ public class combatManagerAI {
|
|||||||
public combatManagerAI(){
|
public combatManagerAI(){
|
||||||
this.theBaseInfo = mainThread.ec.theBaseInfo;
|
this.theBaseInfo = mainThread.ec.theBaseInfo;
|
||||||
|
|
||||||
standardAttackTime = 550;
|
standardAttackTime = 600;
|
||||||
rushAttackTime = 250 + gameData.getRandom()/4;
|
rushAttackTime = 250 + gameData.getRandom()/4;
|
||||||
|
|
||||||
goldMines = mainThread.theAssetManager.goldMines;
|
goldMines = mainThread.theAssetManager.goldMines;
|
||||||
|
@ -421,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 = 1.25f;
|
d = 1f;
|
||||||
|
|
||||||
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;
|
||||||
|
@ -157,14 +157,14 @@ public class economyManagerAI {
|
|||||||
|
|
||||||
//the ration between harvester and refinery should be 2:1
|
//the ration between harvester and refinery should be 2:1
|
||||||
//economyManager has a higher priority than combat manager AI, so the enemy AI will always queue harvester first if lost any.
|
//economyManager has a higher priority than combat manager AI, so the enemy AI will always queue harvester first if lost any.
|
||||||
if(theBaseInfo.numberOfRefinery > 0 && numberOfharvesters < 4){
|
if(theBaseInfo.numberOfRefinery > 0 && numberOfharvesters < 6){
|
||||||
if(numberOfharvesters/theBaseInfo.numberOfRefinery < 2){
|
if(numberOfharvesters < theBaseInfo.numberOfRefinery + 2){
|
||||||
for(int i = 0; i < mainThread.theAssetManager.factories.length; i++){
|
for(int i = 0; i < mainThread.theAssetManager.factories.length; i++){
|
||||||
if(mainThread.theAssetManager.factories[i] != null && mainThread.theAssetManager.factories[i].teamNo != 0){
|
if(mainThread.theAssetManager.factories[i] != null && mainThread.theAssetManager.factories[i].teamNo != 0){
|
||||||
if(mainThread.theAssetManager.factories[i].isIdle()){
|
mainThread.theAssetManager.factories[i].cancelBuilding();
|
||||||
mainThread.theAssetManager.factories[i].buildHarvester();
|
mainThread.theAssetManager.factories[i].buildHarvester();
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -450,7 +450,7 @@ public class mapAwarenessAI {
|
|||||||
|
|
||||||
playerHasMostlyLightTanks = (numberOfLightTanks_player > 5 && lightTankRatio > 0.8f) || (frameAI < 420 && numberOfLightTanks_player > 1 && lightTankRatio >= 0.75f);
|
playerHasMostlyLightTanks = (numberOfLightTanks_player > 5 && lightTankRatio > 0.8f) || (frameAI < 420 && numberOfLightTanks_player > 1 && lightTankRatio >= 0.75f);
|
||||||
playerHasMostlyHeavyTanks = numberOfHeavyTanks_player > 1 && (float)(numberOfHeavyTanks_player)/(totalNumberOfPlayerUnits) > 0.6f;
|
playerHasMostlyHeavyTanks = numberOfHeavyTanks_player > 1 && (float)(numberOfHeavyTanks_player)/(totalNumberOfPlayerUnits) > 0.6f;
|
||||||
playerHasManyLightTanksButNoHeavyTank = lightTankRatio > 0.5 && lightTankRatio <=0.8 && numberOfHeavyTanks_player < 3;
|
playerHasManyLightTanksButNoHeavyTank = lightTankRatio > 0.5 && numberOfHeavyTanks_player < 3;
|
||||||
|
|
||||||
playIsRushingHighTierUnits = mainThread.gameFrame/30 > 250 && mainThread.gameFrame/30 < 400
|
playIsRushingHighTierUnits = mainThread.gameFrame/30 > 250 && mainThread.gameFrame/30 < 400
|
||||||
&& mainThread.ec.theMapAwarenessAI.numberOfTechCenter_player >0
|
&& mainThread.ec.theMapAwarenessAI.numberOfTechCenter_player >0
|
||||||
|
@ -154,15 +154,22 @@ public class microManagementAI {
|
|||||||
float myRange= unitInCombatRadius[i].attackRange * unitInCombatRadius[i].attackRange;
|
float myRange= unitInCombatRadius[i].attackRange * unitInCombatRadius[i].attackRange;
|
||||||
|
|
||||||
solidObject target = null;
|
solidObject target = null;
|
||||||
|
solidObject currentTarget = unitInCombatRadius[i].targetObject;
|
||||||
int targetHP = 99999;
|
int targetHP = 99999;
|
||||||
int level = 0;
|
int level = 0;
|
||||||
|
|
||||||
|
if(currentTarget != null) {
|
||||||
|
level = currentTarget.level;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
float distanceToDesination = 99999;
|
float distanceToDesination = 99999;
|
||||||
|
|
||||||
|
|
||||||
for(int j=0; j < numberOfPlayerUnitsOnMinimap; j++){
|
for(int j=0; j < numberOfPlayerUnitsOnMinimap; j++){
|
||||||
if(playerUnitInMinimap[j] != null && playerUnitInMinimap[j].currentHP > 0){
|
if(playerUnitInMinimap[j] != null && playerUnitInMinimap[j].currentHP > 0){
|
||||||
|
|
||||||
if((playerUnitInMinimap[j].getMaxHp() / playerUnitInMinimap[j].currentHP > 4 && !(unitInCombatRadius[i].targetObject!= null && unitInCombatRadius[i].targetObject.currentHP < playerUnitInMinimap[j].currentHP)) || playerUnitInMinimap[j].level > level){
|
if(((playerUnitInMinimap[j].getMaxHp() / playerUnitInMinimap[j].currentHP >= 4) && !(currentTarget != null && currentTarget.currentHP < playerUnitInMinimap[j].currentHP)) || playerUnitInMinimap[j].level > level){
|
||||||
x1 = playerUnitInMinimap[j].centre.x;
|
x1 = playerUnitInMinimap[j].centre.x;
|
||||||
x2 = unitInCombatRadius[i].centre.x;
|
x2 = unitInCombatRadius[i].centre.x;
|
||||||
z1 = playerUnitInMinimap[j].centre.z;
|
z1 = playerUnitInMinimap[j].centre.z;
|
||||||
|
@ -110,7 +110,7 @@ public class unitProductionAI {
|
|||||||
}
|
}
|
||||||
if(z != 999999) {
|
if(z != 999999) {
|
||||||
|
|
||||||
rallyPoint.set(x - 2.5f, 0, z - 2f);
|
rallyPoint.set(x - 2.25f, 0, z - 1.75f);
|
||||||
|
|
||||||
if(frameAI < 240) {
|
if(frameAI < 240) {
|
||||||
rallyPoint.set(mainThread.theAssetManager.goldMines[5].centre);
|
rallyPoint.set(mainThread.theAssetManager.goldMines[5].centre);
|
||||||
@ -165,19 +165,28 @@ public class unitProductionAI {
|
|||||||
boolean playerHasMostlyHeavyAndStealthTanks = mainThread.ec.theMapAwarenessAI.playerHasMostlyHeavyAndStealthTanks;
|
boolean playerHasMostlyHeavyAndStealthTanks = mainThread.ec.theMapAwarenessAI.playerHasMostlyHeavyAndStealthTanks;
|
||||||
|
|
||||||
|
|
||||||
boolean b1 = (numberOfRocketTanks_AI < 3 && (frameAI > 400 || frameAI > 170 && frameAI < 240 && mainThread.ec.theMapAwarenessAI.numberOfConstructionYard_player > 0) && !playerHasMostlyLightTanks);
|
int timeToBuildHeavyTank = 400;
|
||||||
|
int timeToBuildStealthTank = 200;
|
||||||
|
if(mainThread.ec.theMapAwarenessAI.canRushPlayer) {
|
||||||
|
//when AI decides to rush the player, then dont build higher tier units so it can mass produce light tanks
|
||||||
|
timeToBuildHeavyTank = 500;
|
||||||
|
timeToBuildStealthTank = 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean b1 = (numberOfRocketTanks_AI < 3 && !playerHasMostlyHeavyTanks && (frameAI > 400 || frameAI > 170 && frameAI < 240 && mainThread.ec.theMapAwarenessAI.numberOfConstructionYard_player > 0) && !playerHasMostlyLightTanks);
|
||||||
boolean b2 = (numberOfRocketTanks_AI < numberOfPlayerGunTurrets + numberOfPlayerMissileTurrets*1.5);
|
boolean b2 = (numberOfRocketTanks_AI < numberOfPlayerGunTurrets + numberOfPlayerMissileTurrets*1.5);
|
||||||
if( b1 || b2){
|
if( b1 || b2){
|
||||||
currentProductionOrder = produceRocketTank;
|
currentProductionOrder = produceRocketTank;
|
||||||
}else if(theBaseInfo.canBuildHeavyTank &&
|
}else if(theBaseInfo.canBuildHeavyTank && !playerHasMostlyHeavyTanks &&
|
||||||
(playerHasMostlyHeavyAndStealthTanks ||
|
(playerHasMostlyHeavyAndStealthTanks || (frameAI > timeToBuildHeavyTank && numberOfHeavyTanks_AI < 3) ||
|
||||||
!playerHasManyLightTanksButNoHeavyTank
|
!playerHasManyLightTanksButNoHeavyTank
|
||||||
&& !playerHasMostlyLightTanks
|
&& !playerHasMostlyLightTanks
|
||||||
&& !(numberOfHeavyTanks_player == 0 && maxNumberOfStealthTanks_playerInLastFiveMinutes < 3 && frameAI > 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 || (frameAI > 400 && frameAI < 500 && numberOfPlayerGunTurrets + numberOfPlayerMissileTurrets+ numberOfLightTanks_player + numberOfRocketTanks_player + numberOfHeavyTanks_player*5 < 5)))){
|
&& (playIsRushingHighTierUnits || maxNumberOfStealthTanks_playerInLastFiveMinutes*4 > numberOfHeavyTanks_AI))){
|
||||||
currentProductionOrder = produceHeavyTank;
|
currentProductionOrder = produceHeavyTank;
|
||||||
}else if(theBaseInfo.canBuildStealthTank && (playerHasMostlyLightTanks || playerLikelyCanNotProduceHighTierUnits || playerDoesntHaveMassHeavyTanks) && !playerHasMostlyHeavyTanks && (frameAI > 450 || numberOfLightTanks_player > 8)){
|
}else if(theBaseInfo.canBuildStealthTank && !playerHasMostlyHeavyTanks && !(numberOfStealthTanksControlledByCombatAI >= 8 && frameAI < 600) && !(numberOfStealthTanksControlledByCombatAI >= 16 && frameAI > 600)
|
||||||
|
&& (playerHasMostlyLightTanks || playerLikelyCanNotProduceHighTierUnits || playerDoesntHaveMassHeavyTanks) && !playerHasMostlyHeavyTanks && (frameAI > timeToBuildStealthTank || numberOfLightTanks_player > 8)){
|
||||||
currentProductionOrder = produceStealthTank;
|
currentProductionOrder = produceStealthTank;
|
||||||
}else{
|
}else{
|
||||||
currentProductionOrder = produceLightTank;
|
currentProductionOrder = produceLightTank;
|
||||||
|
@ -55,7 +55,7 @@ public class gunTurret extends solidObject{
|
|||||||
public int turretAngleDelta, accumulatedDelta;
|
public int turretAngleDelta, accumulatedDelta;
|
||||||
|
|
||||||
public int turretTurnRate = 8;
|
public int turretTurnRate = 8;
|
||||||
public int myAttackCooldown= 25;
|
public int myAttackCooldown= 24;
|
||||||
public int attackCoolDown;
|
public int attackCoolDown;
|
||||||
public vector firingPosition;
|
public vector firingPosition;
|
||||||
|
|
||||||
|
@ -510,7 +510,7 @@ public class missileTurret extends solidObject{
|
|||||||
exposedCountDown --;
|
exposedCountDown --;
|
||||||
|
|
||||||
if(overCharge)
|
if(overCharge)
|
||||||
myAttackCooldown = 10;
|
myAttackCooldown = 9;
|
||||||
|
|
||||||
//mark itself on obstacle map
|
//mark itself on obstacle map
|
||||||
mainThread.gridMap.currentObstacleMap[tileIndex[0]] = false;
|
mainThread.gridMap.currentObstacleMap[tileIndex[0]] = false;
|
||||||
|
@ -1183,8 +1183,10 @@ public class stealthTank extends solidObject{
|
|||||||
myDamageModified=(int)(myDamage*2);
|
myDamageModified=(int)(myDamage*2);
|
||||||
}else if(targetObject.type==1 || targetObject.type==6){
|
}else if(targetObject.type==1 || targetObject.type==6){
|
||||||
myDamageModified=(int)(myDamage*1.75);
|
myDamageModified=(int)(myDamage*1.75);
|
||||||
}else if(targetObject.type == 7 || targetObject.type > 100 || targetObject.type == 2 || targetObject.type == 3){
|
}else if(targetObject.type > 100 || targetObject.type == 2 || targetObject.type == 3){
|
||||||
myDamageModified=(int)(myDamage*0.4);
|
myDamageModified=(int)(myDamage*0.3);
|
||||||
|
}else if(targetObject.type == 7) {
|
||||||
|
myDamageModified=(int)(myDamage*0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
//damage and alert target unit
|
//damage and alert target unit
|
||||||
@ -1310,8 +1312,10 @@ public class stealthTank extends solidObject{
|
|||||||
|
|
||||||
}else if(targetObject.type==6){
|
}else if(targetObject.type==6){
|
||||||
myDamageModified=(int)(myDamage*1.75);
|
myDamageModified=(int)(myDamage*1.75);
|
||||||
}else if(secondaryTargets[i].type == 7 || targetObject.type == 2 || targetObject.type == 3){
|
}else if(targetObject.type == 2 || targetObject.type == 3){
|
||||||
myDamageModified=(int)(myDamage*0.4);
|
myDamageModified=(int)(myDamage*0.3);
|
||||||
|
}else if(secondaryTargets[i].type == 7) {
|
||||||
|
myDamageModified=0; //heavy tank is immue to secondary attack
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ public class gameMenu {
|
|||||||
+ "\"a\" -- Force attack a unit. If no unit is under the cursor, then the selected units will \nbe set to attack move to the cursor location.\n\n"
|
+ "\"a\" -- Force attack a unit. If no unit is under the cursor, then the selected units will \nbe set to attack move to the cursor location.\n\n"
|
||||||
+ "\"h\" -- stop current action for the selected unit(s).\n\n"
|
+ "\"h\" -- stop current action for the selected unit(s).\n\n"
|
||||||
+ "\"Ctrl + number\" -- Create a control group and assigned the number to the group.\n\n"
|
+ "\"Ctrl + number\" -- Create a control group and assigned the number to the group.\n\n"
|
||||||
+ "\"Ctrl + Left Click\" -- Add/Remove the a unit to/from the selected units.\n\n"
|
+ "\"Ctrl + Left Click\" -- Add/Remove a unit to/from the selected units.\n\n"
|
||||||
+ "\"Ctrl + Mouse Drag\" -- Add units in the dragging box to the selected units.\n\n\n"
|
+ "\"Ctrl + Mouse Drag\" -- Add units in the dragging box to the selected units.\n\n\n"
|
||||||
+ " 1/4 ").toCharArray();
|
+ " 1/4 ").toCharArray();
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ public class rocket {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
distanceToTarget = (float)Math.sqrt((target.centre.x - centre.x) * (target.centre.x - centre.x) + (target.centre.z - centre.z) * (target.centre.z - centre.z));
|
distanceToTarget = (float)Math.sqrt((target.centre.x - centre.x) * (target.centre.x - centre.x) + (target.centre.z - centre.z) * (target.centre.z - centre.z));
|
||||||
if(distanceToTarget <= 0.06){
|
if(distanceToTarget <= 0.065){
|
||||||
|
|
||||||
//spawn an explosion at the end of the rocket life
|
//spawn an explosion at the end of the rocket life
|
||||||
float[] tempFloat = mainThread.theAssetManager.explosionInfo[mainThread.theAssetManager.explosionCount];
|
float[] tempFloat = mainThread.theAssetManager.explosionInfo[mainThread.theAssetManager.explosionCount];
|
||||||
@ -168,11 +168,15 @@ public class rocket {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(attacker.type == 199) {
|
||||||
|
if(speed < 0.1)
|
||||||
|
speed*=1.5f;
|
||||||
|
}else {
|
||||||
|
if(speed < 0.1)
|
||||||
|
speed*=1.4f;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(speed < 0.1)
|
|
||||||
speed*=1.4f;
|
|
||||||
|
|
||||||
distanceTravelled+=speed;
|
distanceTravelled+=speed;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user