• Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

Question - Code Game Bug I Can't Figure Out, Please Help

T

twalkerp

Guest
I am almost done with my Tower Defense game, but cannot seem to figure out this annoying and game breaking bug.

When I press the Combine(upgrade) button on my towers, if I press it as the same time as a monster from the current monster wave is being spawned to my path, one monster from my very first level of monsters(goblin) will appear at cursor/button position.

It's always a Goblin, known in code as enemies[0.0];

My towers then will go nuts shooting the top left of screen.

Image of Issue:
https://imgur.com/xzKgjZ6

Here is the code for spawning my enemies: Alarm[0]
Code:
if(timer_set == false){
    if(enemies[arraySpot, 1] <= 0){
    arraySpot = clamp(++arraySpot, 0, array_height_2d(enemies) -1);   
    }

displayWaveTimer = false;
var enemy = instance_create_layer(x, y, layer, enemies[arraySpot, 0]);

    with(enemy){
    path_start(other.myPath, enemy.mySpeed, path_action_stop, true);
    }


++currentEnemies;
++currentLevelEnemies; //just for printing text
enemies[arraySpot, 1] -= 1;

if(currentEnemies < maxEnemies )
    alarm[0] = spawnRate;
}

if(enemies[arraySpot, 1] <= 0)
{
timer_set= true;
}
Here is the code for my upgrade(Combine Tower) button On Tap event:
Code:
drawInfo = true;

if(instance_number(myTower.object_index) >=2)
{
  var _x = myTower.x;
  var _y = myTower.y;
  var _rand_inst = myTower;
   while(_rand_inst == myTower)
    {
        _rand_inst = instance_find(myTower.object_index, irandom(instance_number(myTower.object_index)-1));   
    }
       
    var randomAdvancedTower = random(array_height_2d(objTowerMaker.atowers));
    var randomRareTower = random(array_height_2d(objTowerMaker.raretowers));
   
        if(myTower.towerTier == 1)
        {
   
        instance_create_layer(_x,_y,"Instances",objTowerMaker.atowers[randomAdvancedTower,0]);
        instance_destroy(myTower);
        instance_destroy(_rand_inst);
        instance_destroy(objUpgradeParent);
        }
        else if(myTower.towerTier == 2)
        {
           
        instance_create_layer(_x,_y,"Instances",objTowerMaker.raretowers[randomRareTower,0]);
        instance_destroy(myTower);
        instance_destroy(_rand_inst);
        instance_destroy(objUpgradeParent);
        }
        else
        {
        exit;
        }
   
}
 
Top