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...