I finally figured out my problem while turning some things into arrays. Apparently, whenever I needed to set the IsPlaced value for a Bomb to false after the explosion, I ALWAYS USED IsPlaced1, never anything else. Thus, the explosions never ended past the first, and problems were created. I finally fixed this.
Now to explore a new path- Bomberman is a custom enemy controlled by the global script, and the player is set elsewhere. :O
EDIT: Err... New problem. The Bomb's explosion refuses to damage enemies... It can't be due to its Step being 0, because as an lweapon, the Bomb affects enemies. (I changed it to a mere layered tile so it WON'T affect enemies...) But never did the fires hurt enemies...
Code:
if(IsPlaced[0])
{
if(bombtimer[0] > 0)
{
if(!isremote && !IsRem[0])
{
bombtimer[0]--;
}
Screen->DrawTile(2, BombX1, BombY1-2, BombTile[0], 1, 1, 7, 1, 0, 0, 0, 0, true, 128);
}
if(Link->InputB && isremote && IsRem[0])
{
bombtimer[0] = 0;
}
if(bombtimer[0] == 0)
{
bombcount--;
if(Screen->ComboS[ComboAt(BombX1, BombY1-16)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire1[0] = Screen->LoadLWeapon(numwpns);
Fire1[0]->Step = 0;
Fire1[0]->HitHeight = 16;
Fire1[0]->HitWidth = 16;
Fire1[0]->Damage = 2;
Fire1[0]->X = BombX1;
Fire1[0]->Y = BombY1 - 16;
Fire1[0]->ASpeed = 8;
Fire1[0]->NumFrames = 8;
Fire1[0]->OriginalTile = 440;
Fire1[0]->DeadState = 40;
Fire1[0]->CSet = 7;
}
if(Screen->ComboS[ComboAt(BombX1-16, BombY1)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire2[0] = Screen->LoadLWeapon(numwpns);
Fire2[0]->Step = 0;
Fire2[0]->HitHeight = 16;
Fire2[0]->HitWidth = 16;
Fire2[0]->Damage = 2;
Fire2[0]->X = BombX1 - 16;
Fire2[0]->Y = BombY1;
Fire2[0]->ASpeed = 8;
Fire2[0]->NumFrames = 8;
Fire2[0]->OriginalTile = 385;
Fire2[0]->DeadState = 40;
Fire2[0]->CSet = 7;
}
if(Screen->ComboS[ComboAt(BombX1+16, BombY1)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire3[0] = Screen->LoadLWeapon(numwpns);
Fire3[0]->Step = 0;
Fire3[0]->HitHeight = 16;
Fire3[0]->HitWidth = 16;
Fire3[0]->Damage = 2;
Fire3[0]->X = BombX1 + 16;
Fire3[0]->Y = BombY1;
Fire3[0]->ASpeed = 8;
Fire3[0]->NumFrames = 8;
Fire3[0]->OriginalTile = 405;
Fire3[0]->DeadState = 40;
Fire3[0]->CSet = 7;
}
if(Screen->ComboS[ComboAt(BombX1, BombY1+16)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire4[0] = Screen->LoadLWeapon(numwpns);
Fire4[0]->Step = 0;
Fire4[0]->HitHeight = 16;
Fire4[0]->HitWidth = 16;
Fire4[0]->Damage = 2;
Fire4[0]->X = BombX1;
Fire4[0]->Y = BombY1 + 16;
Fire4[0]->ASpeed = 8;
Fire4[0]->NumFrames = 8;
Fire4[0]->OriginalTile = 500;
Fire4[0]->DeadState = 40;
Fire4[0]->CSet = 7;
}
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire5[0] = Screen->LoadLWeapon(numwpns);
Fire5[0]->Step = 0;
Fire5[1]->HitHeight = 16;
Fire5[1]->HitWidth = 16;
Fire5[0]->Damage = 2;
Fire5[0]->X = BombX1;
Fire5[0]->Y = BombY1;
Fire5[0]->ASpeed = 8;
Fire5[0]->NumFrames = 8;
Fire5[0]->OriginalTile = 480;
Fire5[0]->DeadState = 40;
Fire5[0]->CSet = 7;
Game->PlaySound(3);
IsPlaced[0] = false;
(Yes, I know that this isn't closed up properly. I don't feel like copying the rest of the code in that section because it's unrelated.)
There's the code for the fire...