import"std.zh"
// Edit the following constants according to your tileset.
// All combos between and including these two values will be considered regular diggable combos.
// The combo dug by the player will change, and there will be a chance for an item drop.
const int DigComboStart=12;
const int DigComboEnd=19;
// The following combos are similarly diggable, but turn into a different kind of combo and
// do not give item drops. You can use this to have secret stairs, for example.
// Important: Make sure these combos directly follow the DigComboEnd one.
const int DigSpecialStart=20;
const int DigSpecialEnd=23;
// A regular diggable combo will turn into this combo when you use the shovel on it.
const int DugComboNormal=24;
// A special combo will turn into this combo when you use the shovel on it.
// You can, for example, make it a tile warp, so the player can dig for secret entrances.
// Set up the warps and the arrival points on your ZQuest screen as usual.
const int DugComboSpecial=25;
// This is the sound to be played when you successfully dig.
const int ShovelSound=100;
// The sound to be played when you attempt to dig an undiggable combo.
const int ShovelFail=101;
// The secret sound to be played when you dig a special combo.
const int SecretSound=27;
item script Shovel{
void run(){
int chance;
int itemdrop;
int itemlocx;
int itemlocy;
Link->Action=LA_ATTACKING;
if((Link->Dir==0&&(Screen->ComboD[ComboAt(Link->X+8,Link->Y-8)]<DigComboStart||Screen->ComboD[ComboAt(Link->X+8,Link->Y-8)]>DigSpecialEnd))
||(Link->Dir==1&&(Screen->ComboD[ComboAt(Link->X+8,Link->Y+24)]<DigComboStart||Screen->ComboD[ComboAt(Link->X+8,Link->Y+24)]>DigSpecialEnd))
||(Link->Dir==2&&(Screen->ComboD[ComboAt(Link->X-8,Link->Y+8)]<DigComboStart||Screen->ComboD[ComboAt(Link->X-8,Link->Y+8)]>DigSpecialEnd))
||(Link->Dir==3&&(Screen->ComboD[ComboAt(Link->X+24,Link->Y+8)]<DigComboStart||Screen->ComboD[ComboAt(Link->X+24,Link->Y+8)]>DigSpecialEnd))){
Game->PlaySound(ShovelFail);
}
else{
Game->PlaySound(ShovelSound);
chance=Rand(100)+1;
if(Link->Dir==0){
if(Screen->ComboD[ComboAt(Link->X+8,Link->Y-8)]<DigSpecialStart){
Screen->ComboD[ComboAt(Link->X+8,Link->Y-8)]=DugComboNormal;
}
else{
Game->PlaySound(SecretSound);
Screen->ComboD[ComboAt(Link->X+8,Link->Y-8)]=DugComboSpecial;
chance=101;
}
}
if(Link->Dir==1){
if(Screen->ComboD[ComboAt(Link->X+8,Link->Y+24)]<DigSpecialStart){
Screen->ComboD[ComboAt(Link->X+8,Link->Y+24)]=DugComboNormal;
}
else{
Game->PlaySound(SecretSound);
Screen->ComboD[ComboAt(Link->X+8,Link->Y+24)]=DugComboSpecial;
chance=101;
}
}
if(Link->Dir==2){
if(Screen->ComboD[ComboAt(Link->X-8,Link->Y+8)]<DigSpecialStart){
Screen->ComboD[ComboAt(Link->X-8,Link->Y+8)]=DugComboNormal;
}
else{
Game->PlaySound(SecretSound);
Screen->ComboD[ComboAt(Link->X-8,Link->Y+8)]=DugComboSpecial;
chance=101;
}
}
if(Link->Dir==3){
if(Screen->ComboD[ComboAt(Link->X+24,Link->Y+8)]<DigSpecialStart){
Screen->ComboD[ComboAt(Link->X+24,Link->Y+8)]=DugComboNormal;
}
else{
Game->PlaySound(SecretSound);
Screen->ComboD[ComboAt(Link->X+24,Link->Y+8)]=DugComboSpecial;
chance=101;
}
}
// The item drops are currently set to be the same as the default tall grass combo drops.
// The variable "chance" is a randomly generated number between 1 and 100.
// It determines whether you will get an item, and if so, which one.
// Here, you have a 20% chance to spawn 1 rupee, and a 15% chance to spawn a heart.
// If you want, edit this or add more lines to spawn more drops.
// You can use this line as a template: if(chance>=21&&chance<=35)itemdrop=2;
// The "chance" variable determines the chance you have of obtaining the item, as we've
// seen before, and the "itemdrop" variable is the number of the item in ZQuest.
if(chance<=20)itemdrop=0;
if(chance>=21&&chance<=35)itemdrop=2;
// NB: If you dug a special combo, the "chance" variable is automatically set to 101 so
// the script won't spawn drops on top of special combos like stairs.
if(Link->Dir==0){
itemlocx=Link->X;
itemlocy=Link->Y-16;
}
if(Link->Dir==1){
itemlocx=Link->X;
itemlocy=Link->Y+16;
}
if(Link->Dir==2){
itemlocx=Link->X-16;
itemlocy=Link->Y;
}
if(Link->Dir==3){
itemlocx=Link->X+16;
itemlocy=Link->Y;
}
// This is the part of the code that spawns the item.
// If you have edited the default item drops, change "35" and set it according to your drops.
if(chance<=35){
item i=Screen->CreateItem(itemdrop);
i->X=itemlocx;
i->Y=itemlocy;
i->Z=10;
i->Pickup=IP_TIMEOUT;
}
}
}
}