XD I knew I'd get that response. Umm.... The script is a Shovel script. The way I see it, the Shovelis simply a modfied Cane of Somaria, because both spawn a combo in place of another. So far, I've made tiny modifications to the Cane of Somaria script to get the Shovel. Here's what I have now, thanks to you:
Code:
// Shovel- Well, what do you THINK it does? :P It digs up the ground directly in front of you,
// provided it's not solid or a certain combo. The combos it can't dig up are yours to decide!
// However, I give you three solid combos it CAN dig up, so use them wisely.
// Variables:
// ComboDug- Combo that appears when you dig in a diggable spot.
// Combo1- First Combo you can't dig in.
// Combo2- 2nd Combo you can't dig in.
// Combo3- 3rd No-Dig Combo.
// Combo4- 4th No-Dig Combo.
// Combo5- 5th No-Dig Combo.
// ComboS1- First Solid Combo you can dig in.
// ComboS2- 2nd Solid Dig Combo.
// ComboS3- 3rd Solid Dig Combo.
import "std.zh"
item script Shovel
{
int ComboDug = 0;
int Combo1 = 0;
int Combo2 = 0;
int Combo3 = 0;
int Combo4 = 0;
int Combo5 = 0;
int ComboS1 = 0;
int ComboS2 = 0;
int ComboS3 = 0;
int ComboX = 0;
int ComboY = 0;
int ComboSDug = 0;
void run()
{
if (Link->Dir == 0)
{
int BlockCheckY = Link->Y - 16;
int BlockCheckX = Link->X;
float BlockRmndrX = BlockCheckX % 16;
if (BlockRmndrX <= 8)
{
BlockCheckX = BlockCheckX - BlockRmndrX;
}
else
{
BlockCheckX = BlockCheckX + 16 - BlockRmndrX;
}
float BlockRmndrY = BlockCheckY % 16;
if (BlockRmndrY <= 8)
{
BlockCheckY = BlockCheckY - BlockRmndrY;
}
else
{
BlockCheckY = BlockCheckY + 16 - BlockRmndrY;
}
int BlockPosition = (BlockCheckY & 240)+(BlockCheckX>>4);
if ( (Screen->ComboD [BlockPosition] == Combo1 || Combo2 || Combo3 || Combo4 || Combo5 || ComboDug) || (Screen->ComboS [BlockPosition] == 15) )
{
Game->PlaySound(6);
Quit();
}
else if (Screen->ComboD != Combo1 || Combo2 || Combo3 || Combo4 || Combo5 || ComboDug)
{
ComboY = Link->Y - 16;
ComboX = Link->X;
float remainder = ComboX % 16;
if (remainder <= 8)
{
ComboX = ComboX - remainder;
}
else
{
ComboX = ComboX + 16 - remainder;
}
float remainderY = ComboY % 16;
if (remainderY <= 8)
{
ComboY = ComboY - remainderY;
}
else
{
ComboY = ComboY + 16 - remainderY;
}
int ComboPosition = (ComboY & 240)+(ComboX>>4);
Screen->ComboD [ComboPosition] = ComboDug;
}
else if (Screen->ComboD [BlockPosition] == ComboS1 || ComboS2 || ComboS3)
{
ComboY = Link->Y - 16;
ComboX = Link->X;
float remainder = ComboX % 16;
if (remainder <= 8)
{
ComboX = ComboX - remainder;
}
else
{
ComboX = ComboX + 16 - remainder;
}
float remainderY = ComboY % 16;
if (remainderY <= 8)
{
ComboY = ComboY - remainderY;
}
else
{
ComboY = ComboY + 16 - remainderY;
}
int ComboPosition = (ComboY & 240)+(ComboX>>4);
Screen->ComboD [ComboPosition] = ComboSDug;
}
}
else if (Link->Dir == 1)
{
int BlockCheckY = Link->Y + 16;
int BlockCheckX = Link->X;
float BlockRmndrX = BlockCheckX % 16;
if (BlockRmndrX <= 8)
{
BlockCheckX = BlockCheckX - BlockRmndrX;
}
else
{
BlockCheckX = BlockCheckX + 16 - BlockRmndrX;
}
float BlockRmndrY = BlockCheckY % 16;
if (BlockRmndrY <= 8)
{
BlockCheckY = BlockCheckY - BlockRmndrY;
}
else
{
BlockCheckY = BlockCheckY + 16 - BlockRmndrY;
}
int BlockPosition = (BlockCheckY & 240)+(BlockCheckX>>4);
if ( (Screen->ComboD [BlockPosition] == Combo1 || Combo2 || Combo3 || Combo4 || Combo5 || ComboDug) || (Screen->ComboS [BlockPosition] == 15) )
{
Game->PlaySound(6);
Quit();
}
else if (Screen->ComboD != Combo1 || Combo2 || Combo3 || Combo4 || Combo5 || ComboDug)
{
ComboY = Link->Y + 16;
ComboX = Link->X;
float remainder = ComboX % 16;
if (remainder <= 8)
{
ComboX = ComboX - remainder;
}
else
{
ComboX = ComboX + 16 - remainder;
}
float remainderY = ComboY % 16;
if (remainderY <= 8)
{
ComboY = ComboY - remainderY;
}
else
{
ComboY = ComboY + 16 - remainderY;
}
int ComboPosition = (ComboY & 240)+(ComboX>>4);
Screen->ComboD [ComboPosition] = ComboDug;
}
else if (Screen->ComboD [BlockPosition] == ComboS1 || ComboS2 || ComboS3)
{
ComboY = Link->Y + 16;
ComboX = Link->X;
float remainder = ComboX % 16;
if (remainder <= 8)
{
ComboX = ComboX - remainder;
}
else
{
ComboX = ComboX + 16 - remainder;
}
float remainderY = ComboY % 16;
if (remainderY <= 8)
{
ComboY = ComboY - remainderY;
}
else
{
ComboY = ComboY + 16 - remainderY;
}
int ComboPosition = (ComboY & 240)+(ComboX>>4);
Screen->ComboD [ComboPosition] = ComboSDug;
}
}
else if (Link->Dir == 2)
{
int BlockCheckY = Link->Y;
int BlockCheckX = Link->X - 16;
float BlockRmndrX = BlockCheckX % 16;
if (BlockRmndrX <= 8)
{
BlockCheckX = BlockCheckX - BlockRmndrX;
}
else
{
BlockCheckX = BlockCheckX + 16 - BlockRmndrX;
}
float BlockRmndrY = BlockCheckY % 16;
if (BlockRmndrY <= 8)
{
BlockCheckY = BlockCheckY - BlockRmndrY;
}
else
{
BlockCheckY = BlockCheckY + 16 - BlockRmndrY;
}
int BlockPosition = (BlockCheckY & 240)+(BlockCheckX>>4);
if ( (Screen->ComboD [BlockPosition] == Combo1 || Combo2 || Combo3 || Combo4 || Combo5 || ComboDug) || (Screen->ComboS [BlockPosition] == 15) )
{
Game->PlaySound(6);
Quit();
}
else if (Screen->ComboD != Combo1 || Combo2 || Combo3 || Combo4 || Combo5 || ComboDug)
{
ComboY = Link->Y;
ComboX = Link->X - 16;
float remainder = ComboX % 16;
if (remainder <= 8)
{
ComboX = ComboX - remainder;
}
else
{
ComboX = ComboX + 16 - remainder;
}
float remainderY = ComboY % 16;
if (remainderY <= 8)
{
ComboY = ComboY - remainderY;
}
else
{
ComboY = ComboY + 16 - remainderY;
}
int ComboPosition = (ComboY & 240)+(ComboX>>4);
Screen->ComboD [ComboPosition] = ComboDug;
}
else if (Screen->ComboD [BlockPosition] == ComboS1 || ComboS2 || ComboS3)
{
ComboY = Link->Y;
ComboX = Link->X - 16;
float remainder = ComboX % 16;
if (remainder <= 8)
{
ComboX = ComboX - remainder;
}
else
{
ComboX = ComboX + 16 - remainder;
}
float remainderY = ComboY % 16;
if (remainderY <= 8)
{
ComboY = ComboY - remainderY;
}
else
{
ComboY = ComboY + 16 - remainderY;
}
int ComboPosition = (ComboY & 240)+(ComboX>>4);
Screen->ComboD [ComboPosition] = ComboSDug;
}
}
else if (Link->Dir == 3)
{
int BlockCheckY = Link->Y;
int BlockCheckX = Link->X + 16;
float BlockRmndrX = BlockCheckX % 16;
if (BlockRmndrX <= 8)
{
BlockCheckX = BlockCheckX - BlockRmndrX;
}
else
{
BlockCheckX = BlockCheckX + 16 - BlockRmndrX;
}
float BlockRmndrY = BlockCheckY % 16;
if ( BlockRmndrY <= 8 )
{
BlockCheckY = BlockCheckY - BlockRmndrY;
}
else
{
BlockCheckY = BlockCheckY + 16 - BlockRmndrY;
}
int BlockPosition = (BlockCheckY & 240)+(BlockCheckX>>4);
if ( (Screen->ComboD [BlockPosition] == Combo1 || Combo2 || Combo3 || Combo4 || Combo5 || ComboDug) || (Screen->ComboS [BlockPosition] == 15) )
{
Game->PlaySound(6);
Quit();
}
else if (Screen->ComboD != Combo1 || Combo2 || Combo3 || Combo4 || Combo5 || ComboDug)
{
ComboY = Link->Y;
ComboX = Link->X + 16;
float remainder = ComboX % 16;
if (remainder <= 8)
{
ComboX = ComboX - remainder;
}
else
{
ComboX = ComboX + 16 - remainder;
}
float remainderY = ComboY % 16;
if (remainderY <= 8)
{
ComboY = ComboY - remainderY;
}
else
{
ComboY = ComboY + 16 - remainderY;
}
int ComboPosition = (ComboY & 240)+(ComboX>>4);
Screen->ComboD [ComboPosition] = ComboDug;
}
else if (Screen->ComboD [BlockPosition] == ComboS1 || ComboS2 || ComboS3)
{
ComboY = Link->Y;
ComboX = Link->X + 16;
float remainder = ComboX % 16;
if (remainder <= 8)
{
ComboX = ComboX - remainder;
}
else
{
ComboX = ComboX + 16 - remainder;
}
float remainderY = ComboY % 16;
if (remainderY <= 8)
{
ComboY = ComboY - remainderY;
}
else
{
ComboY = ComboY + 16 - remainderY;
}
int ComboPosition = (ComboY & 240)+(ComboX>>4);
Screen->ComboD [ComboPosition] = ComboSDug;
}
}
Game->PlaySound(61);
}
}
The problem is on Line 57, which is the part with the if statement checking for all those combos. This is required because, as most people know, the Shovel does not dig up certain combos, especially if they are solid (with a few exceptions). But.... I think it's the || parts that are making it not work.... That's "or", right...? I need to make sure that if the combo at that location is one of those 5 defined OR solid, it will play the SFX for blocking things with your shield (the same SFX used in the Oracles and LA for tiles you can't dig up) and end the script.... A little help, please? Oh, and thanks for all the help. I appreciate it. :)