Code:
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.)