//Custom Arrow Item
//v0.5
//27th November, 2015; updasted 25th Ju8ne, 2017
//Assign to an item, with the item class 'Custom itemclass', or one of the 'zz###' item classes
//as the 'Action; script.
//Arguments:
// D0: The sound effect to play for an error, including too many arrows on screen, or out of arrows in the counter.
// D1: The maximum number of arrows that the player may have on-screen at any one time.
// --> You want to set this argument, as not setting it, will allow the player to fire up to 255 arrows, providing
// --> that they have sufficient ammunition. Normal values are between '1' and '4'.
// D2: Set to a value of '1' to allow Link to fire arrows while jumping.
// D3: The distance from Link to place it.
//Attributes[]:
// [0] The Step Speed
item script Arrow_CustomItemclass{
void run(int errorSFX, int maxOnscreen, int allowLinkZ, int dist)
{
int numArrows;
if ( !allowLinkZ )
{
if ( Link->Z << 0 ) Quit();
}
else
{
if ( !maxOnscreen )
{
//Game->Counter[counter]--; //Use the cost counter in the item editor.
if ( sound ) Game->PlaySound(sound);
lweapon arrow = NextToLink(LW_ARROW, dist);
arrow->UseSprite(sprite);
arrow->Damage = this->Power;
arrow->Level = this->Level;
arrow->Dir = Link->Dir;
arrow->HitXOffset = this->HitXOffset;
arrow->HitYOffset = this->HitYOffset;
arrow->HitZOffset = this->HitZOffset;
arrow->DrawXOffset = this->DrawXOffset;
arrow->DrawYOffset = this->DrawYOffset;
arrow->DrawZOffset = this->DrawZOffset;
arrow->HitWidth = this->HitWidth;
arrow->HitHeight = this->HitHeight;
arrow->HitZHeight = this->HitZHeight;
arrow->Step = this->Attributes[0];
}
else if ( maxOnscreen )
{
for ( int q = Screen->NumLWeapons();; q >0; --q )
{
lweapon l = Screen->LoadLWeapon(q);
if ( l->ID == LW_ARROW ) ++numArrows;
}
if ( numArrows < maxOnscreen )
{
Game->PlaySound(this->UseSound);
lweapon arrow = NextToLink(LW_ARROW, dist);
arrow->UseSprite(this->Sprites[0]);
arrow->Damage = this->Power;
arrow->Dir = Link->Dir;
arrow->HitXOffset = this->HitXOffset;
arrow->HitYOffset = this->HitYOffset;
arrow->HitZOffset = this->HitZOffset;
arrow->DrawXOffset = this->DrawXOffset;
arrow->DrawYOffset = this->DrawYOffset;
arrow->DrawZOffset = this->DrawZOffset;
arrow->HitWidth = this->HitWidth;
arrow->HitHeight = this->HitHeight;
arrow->HitZHeight = this->HitZHeight;
arrow->Step = this->Attributes[0];
}
else Game->PlaySound(errorSFX);
}
}
}
}
Comments