Okay, I have a new problem...
import "std.zh"bool isspiked = false;
bool isremote = false;
bool CanCreate = true;
global script Bomberman
{
void run()
{
int bombtimer1 = 0;
int bombtimer2 = 0;
int bombtimer3 = 0;
int bombtimer4 = 0;
int bombtimer5 = 0;
int bombtimer6 = 0;
int BombX1;
int BombY1;
int BombX2;
int BombY2;
int BombX3;
int BombY3;
int BombX4;
int BombY4;
int BombX5;
int BombY5;
int BombX6;
int BombY6;
int LastMap;
int LastScreen;
int bombcount = 0;
int nrmbmb = 400;
int spkbmb = 400;
int rmtbmb = 400;
int randomnumber;
int Items[8] = {0,0,3,3,3,124,123,123};
lweapon bomb1;
lweapon bomb2;
lweapon bomb3;
lweapon bomb4;
lweapon bomb5;
lweapon bomb6;
bool IsRem1 = false;
bool IsRem2 = false;
bool IsRem3 = false;
bool IsRem4 = false;
bool IsRem5 = false;
bool IsRem6 = false;
bool IsPlaced1 = false;
bool IsPlaced2 = false;
bool IsPlaced3 = false;
bool IsPlaced4 = false;
bool IsPlaced5 = false;
bool IsPlaced6 = false;
bool IsSpike1 = false;
bool IsSpike2 = false;
bool IsSpike3 = false;
bool IsSpike4 = false;
bool IsSpike5 = false;
bool IsSpike6 = false;
lweapon Fire1[6];
lweapon Fire2[6];
lweapon Fire3[6];
lweapon Fire4[6];
lweapon Fire5[6];
while(true)
{
if(bombcount < Game->Counter[3] && Link->InputA && CanCreate)
{
if(bombcount >= 0 && !IsPlaced1)
{
BombX1 = Floor(ComboAt(Link->X+7, Link->Y+12) % 16);
BombY1 = Floor(ComboAt(Link->X+7, Link->Y+12) / 16);
BombX1 *= 16;
BombY1 *= 16;
BombY1 += 2;
Screen->CreateLWeapon(255);
int numwpns = Screen->NumLWeapons();
bomb1 = Screen->LoadLWeapon(numwpns);
bomb1->Step = 0;
bomb1->Damage = 0;
bomb1->X = BombX1;
bomb1->Y = BombY1;
bomb1->CSet = 7;
if(isspiked)
{
bomb1->OriginalTile = spkbmb;
IsSpike1 = true;
IsRem1 = false;
bomb1->DeadState = 180;
}
else if(isremote)
{
bomb1->OriginalTile = rmtbmb;
IsSpike1 = false;
IsRem1 = true;
}
else
{
bomb1->OriginalTile = nrmbmb;
IsSpike1 = false;
IsRem1 = false;
bomb1->DeadState = 180;
}
bombtimer1 = 180;
Game->PlaySound(21);
IsPlaced1 = true;
bombcount++;
}
else if(bombcount >= 1 && !IsPlaced2)
{
BombX2 = Floor(ComboAt(Link->X+7, Link->Y+12) % 16);
BombY2 = Floor(ComboAt(Link->X+7, Link->Y+12) / 16);
BombX2 *= 16;
BombY2 *= 16;
BombY2 += 2;
Screen->CreateLWeapon(255);
int numwpns = Screen->NumLWeapons();
bomb2 = Screen->LoadLWeapon(numwpns);
bomb2->Step = 0;
bomb2->Damage = 0;
bomb2->X = BombX2;
bomb2->Y = BombY2;
bomb2->CSet = 7;
if(isspiked)
{
bomb2->OriginalTile = spkbmb;
IsSpike2 = true;
IsRem2 = false;
bomb2->DeadState = 180;
}
else if(isremote)
{
bomb2->OriginalTile = rmtbmb;
IsSpike2 = false;
IsRem2 = true;
}
else
{
bomb2->OriginalTile = nrmbmb;
IsSpike2 = false;
IsRem2 = false;
bomb2->DeadState = 180;
}
bombtimer2 = 180;
Game->PlaySound(21);
IsPlaced2 = true;
bombcount++;
}
}
if(IsPlaced1)
{
if(bombtimer1 > 0)
{
if(!isremote && !IsRem1)
{
bombtimer1--;
}
}
if(Link->InputB && isremote && IsRem1)
{
bombtimer1 = 0;
bomb1->DeadState = 0;
}
if(bombtimer1 == 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]->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]->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]->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]->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[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);
IsPlaced1 = false;
if(Screen->ComboI[ComboAt(BombX1, BombY1-16)] == 6)
{
Screen->ComboD[ComboAt(BombX1, BombY1-16)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX1;
RndmItm->Y = BombY1 - 17;
}
}
if(Screen->ComboI[ComboAt(BombX1, BombY1+16)] == 6)
{
Screen->ComboD[ComboAt(BombX1, BombY1+16)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX1;
RndmItm->Y = BombY1 + 15;
}
}
if(Screen->ComboI[ComboAt(BombX1-16, BombY1)] == 6)
{
Screen->ComboD[ComboAt(BombX1-16, BombY1)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX1 - 16;
RndmItm->Y = BombY1 - 1;
}
}
if(Screen->ComboI[ComboAt(BombX1+16, BombY1)] == 6)
{
Screen->ComboD[ComboAt(BombX1+16, BombY1)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX1 + 16;
RndmItm->Y = BombY1 - 1;
}
}
}
}
if(IsPlaced2)
{
if(bombtimer2 > 0)
{
if(!isremote && !IsRem2)
{
bombtimer2--;
}
}
if(Link->InputB && isremote && IsRem2)
{
bombtimer2 = 0;
bomb2->DeadState = 0;
}
if(bombtimer2 == 0)
{
bombcount--;
if(Screen->ComboS[ComboAt(BombX2, BombY2-16)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire1[1] = Screen->LoadLWeapon(numwpns);
Fire1[1]->Step = 0;
Fire1[1]->Damage = 2;
Fire1[1]->X = BombX2;
Fire1[1]->Y = BombY2 - 16;
Fire1[1]->ASpeed = 8;
Fire1[1]->NumFrames = 8;
Fire1[1]->OriginalTile = 440;
Fire1[1]->DeadState = 40;
Fire1[1]->CSet = 7;
}
if(Screen->ComboS[ComboAt(BombX2-16, BombY2)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire2[1] = Screen->LoadLWeapon(numwpns);
Fire2[1]->Step = 0;
Fire2[1]->Damage = 2;
Fire2[1]->X = BombX2 - 16;
Fire2[1]->Y = BombY2;
Fire2[1]->ASpeed = 8;
Fire2[1]->NumFrames = 8;
Fire2[1]->OriginalTile = 385;
Fire2[1]->DeadState = 40;
Fire2[1]->CSet = 7;
}
if(Screen->ComboS[ComboAt(BombX2+16, BombY2)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire3[1] = Screen->LoadLWeapon(numwpns);
Fire3[1]->Step = 0;
Fire3[1]->Damage = 2;
Fire3[1]->X = BombX2 + 16;
Fire3[1]->Y = BombY2;
Fire3[1]->ASpeed = 8;
Fire3[1]->NumFrames = 8;
Fire3[1]->OriginalTile = 405;
Fire3[1]->DeadState = 40;
Fire3[1]->CSet = 7;
}
if(Screen->ComboS[ComboAt(BombX2, BombY2+16)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire4[1] = Screen->LoadLWeapon(numwpns);
Fire4[1]->Step = 0;
Fire4[1]->Damage = 2;
Fire4[1]->X = BombX2;
Fire4[1]->Y = BombY2 + 16;
Fire4[1]->ASpeed = 8;
Fire4[1]->NumFrames = 8;
Fire4[1]->OriginalTile = 500;
Fire4[1]->DeadState = 40;
Fire4[1]->CSet = 7;
}
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire5[1] = Screen->LoadLWeapon(numwpns);
Fire5[1]->Step = 0;
Fire5[1]->Damage = 2;
Fire5[1]->X = BombX2;
Fire5[1]->Y = BombY2;
Fire5[1]->ASpeed = 8;
Fire5[1]->NumFrames = 8;
Fire5[1]->OriginalTile = 480;
Fire5[1]->DeadState = 40;
Fire5[1]->CSet = 7;
Game->PlaySound(3);
IsPlaced1 = false;
if(Screen->ComboI[ComboAt(BombX2, BombY2-16)] == 6)
{
Screen->ComboD[ComboAt(BombX2, BombY2-16)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX2;
RndmItm->Y = BombY2 - 17;
}
}
if(Screen->ComboI[ComboAt(BombX2, BombY2+16)] == 6)
{
Screen->ComboD[ComboAt(BombX2, BombY2+16)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX2;
RndmItm->Y = BombY2 + 15;
}
}
if(Screen->ComboI[ComboAt(BombX2-16, BombY2)] == 6)
{
Screen->ComboD[ComboAt(BombX2-16, BombY2)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX2 - 16;
RndmItm->Y = BombY2 - 1;
}
}
if(Screen->ComboI[ComboAt(BombX2+16, BombY2)] == 6)
{
Screen->ComboD[ComboAt(BombX2+16, BombY2)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX2 + 16;
RndmItm->Y = BombY2 - 1;
}
}
}
}
if(IsPlaced3)
{
if(bombtimer3 > 0)
{
if(!isremote && !IsRem3)
{
bombtimer3--;
}
}
if(Link->InputB && isremote && IsRem3)
{
bombtimer3 = 0;
bomb2->DeadState = 0;
}
if(bombtimer3 == 0)
{
bombcount--;
if(Screen->ComboS[ComboAt(BombX3, BombY3-16)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire1[2] = Screen->LoadLWeapon(numwpns);
Fire1[2]->Step = 0;
Fire1[2]->Damage = 2;
Fire1[2]->X = BombX3;
Fire1[2]->Y = BombY3 - 16;
Fire1[2]->ASpeed = 8;
Fire1[2]->NumFrames = 8;
Fire1[2]->OriginalTile = 440;
Fire1[2]->DeadState = 40;
Fire1[2]->CSet = 7;
}
if(Screen->ComboS[ComboAt(BombX3-16, BombY3)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire2[2] = Screen->LoadLWeapon(numwpns);
Fire2[2]->Step = 0;
Fire2[2]->Damage = 2;
Fire2[2]->X = BombX3 - 16;
Fire2[2]->Y = BombY3;
Fire2[2]->ASpeed = 8;
Fire2[2]->NumFrames = 8;
Fire2[2]->OriginalTile = 385;
Fire2[2]->DeadState = 40;
Fire2[2]->CSet = 7;
}
if(Screen->ComboS[ComboAt(BombX3+16, BombY3)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire3[2] = Screen->LoadLWeapon(numwpns);
Fire3[2]->Step = 0;
Fire3[2]->Damage = 2;
Fire3[2]->X = BombX3 + 16;
Fire3[2]->Y = BombY3;
Fire3[2]->ASpeed = 8;
Fire3[2]->NumFrames = 8;
Fire3[2]->OriginalTile = 405;
Fire3[2]->DeadState = 40;
Fire3[2]->CSet = 7;
}
if(Screen->ComboS[ComboAt(BombX3, BombY3+16)] == 0)
{
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire4[2] = Screen->LoadLWeapon(numwpns);
Fire4[2]->Step = 0;
Fire4[2]->Damage = 2;
Fire4[2]->X = BombX3;
Fire4[2]->Y = BombY3 + 16;
Fire4[2]->ASpeed = 8;
Fire4[2]->NumFrames = 8;
Fire4[2]->OriginalTile = 500;
Fire4[2]->DeadState = 40;
Fire4[2]->CSet = 7;
}
Screen->CreateLWeapon(254);
int numwpns = Screen->NumLWeapons();
Fire5[2] = Screen->LoadLWeapon(numwpns);
Fire5[2]->Step = 0;
Fire5[2]->Damage = 2;
Fire5[2]->X = BombX3;
Fire5[2]->Y = BombY3;
Fire5[2]->ASpeed = 8;
Fire5[2]->NumFrames = 8;
Fire5[2]->OriginalTile = 480;
Fire5[2]->DeadState = 40;
Fire5[2]->CSet = 7;
Game->PlaySound(3);
IsPlaced1 = false;
if(Screen->ComboI[ComboAt(BombX3, BombY3-16)] == 6)
{
Screen->ComboD[ComboAt(BombX3, BombY3-16)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX3;
RndmItm->Y = BombY3 - 17;
}
}
if(Screen->ComboI[ComboAt(BombX3, BombY3+16)] == 6)
{
Screen->ComboD[ComboAt(BombX3, BombY3+16)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX3;
RndmItm->Y = BombY3 + 15;
}
}
if(Screen->ComboI[ComboAt(BombX3-16, BombY3)] == 6)
{
Screen->ComboD[ComboAt(BombX3-16, BombY3)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX3 - 16;
RndmItm->Y = BombY3 - 1;
}
}
if(Screen->ComboI[ComboAt(BombX3+16, BombY3)] == 6)
{
Screen->ComboD[ComboAt(BombX3+16, BombY3)] = 1;
randomnumber = Floor(Rand(9));
if(Items[randomnumber] != 0)
{
Screen->CreateItem(Items[randomnumber]);
int numitms = Screen->NumItems();
item RndmItm = Screen->LoadItem(numitms);
RndmItm->X = BombX3 + 16;
RndmItm->Y = BombY3 - 1;
}
}
}
}
if(Link->InputA)
{
CanCreate = false;
}
if(!Link->InputA)
{
CanCreate = true;
}
LastMap = Game->GetCurMap();
LastScreen = Game->GetCurScreen();
Waitframe();
}
}
}
(You can place six bombs in the full code, but I had to remove things to shrink the size.)
I have added code to allow you to place more than 1 Bomb at once...
When the first Bomb is placed, it explodes fine. Place another after blowing up the first, it works. Place more than one before the first explodes, and all explosions after the first wig out and don't vanish. I don't know why... And I even made arrays to simplify things!