ZoriaRPG icon

Scripted Bomb and Superbomb for 2.54

ZoriaRPG | PRO | 06/26/18 05:13:33 AM UTC | 0 ⭐ | 638 👁️ | Never ⏰ | []
C++ |

2.69 KB

|

None

|

0 👍

/

0 👎

//Custom Bomb item
//v0.6 for ZC 2.54+
//27th November, 2015; updated 25th June, 2018
 
//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 bombs on screen, or out of bombs in the counter.
// D1: Set to '1' or higher, to make the item srop super bombs. Otherwise, leave at '0'/
// D2: The maximum number of bombs 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 drop up to 255 bombs, providing 
// --> that they have sufficient ammunition. Normal values are between '1' and '4'. 
// D3: Set to a value of '1' to allow Link to drop bombs while jumping. 
// D4: The distance from Link to place it. 
 
item script BombDrop_CustomItemclass{
    void run(int errorSFX, int super, int maxOnscreen, int allowLinkZ, int dist){
        int numBombs;
        int numSBombs;
        if ( allowLinkZ )
        {
            if ( Link->Z << 0 )  Quit();
        }
        if ( !super ) 
        {
            if  ( !maxOnscreen )
            {
                //--Game->Counter[counter]; //Use the cost counter in 2.54 Item Editor
                Game->PlaySound(this->UseSound);
                lweapon bomb = NextToLink(LW_BOMB, dist);
                bomb->UseSprite(this->Sprites[0]);
                bomb->Damage = this->Power;
                bomb->Dir = Link->Dir;
                //bomb->Level = this->Level;
            }
            else  //maxonscreen
            {
                for ( int q = Screen->NumLWeapons(); q > 0 ; --q ) 
                {
                    lweapon l = Screen->LoadLWeapon(q);
                    if ( l->ID == LW_BOMB ) ++numBombs;
                }
                if ( numBombs < maxOnscreen ) 
                {
                    //--Game->Counter[counter];
                    Game->PlaySound(this->UseSound);
                    lweapon bomb = NextToLink(LW_BOMB, dist);
                    bomb->UseSprite(this->Sprites[0]);
                    bomb->Damage = this->Power;
                    bomb->Dir = Link->Dir;
                }
                else Game->PlaySound(errorSFX);
            }
            
        }
        else //superbomb
        {
            if ( !maxOnscreen )
            {
                //--Game->Counter[counter];
                Game->PlaySound(this->UseSound);
                lweapon bomb = NextToLink(LW_SBOMB, dist);
                bomb->UseSprite(this->Sprites[0]);
                bomb->Damage = this->Power;
                bomb->Dir = Link->Dir;
            }
            
            else // maxOnscreen
            {
                for ( int q = Screen->NumLWeapons(); q > 0; --q ) 
                {
                    lweapon l = Screen->LoadLWeapon(q);
                    if ( l->ID == LW_SBOMB ) ++numSBombs;
                }
                if ( numSBombs < maxOnscreen ) 
                {
                    //--Game->Counter[counter];
                    Game->PlaySound(this->UseSound);
                    lweapon bomb = NextToLink(LW_SBOMB, dist);
                    bomb->UseSprite(this->Sprites[0]);
                    bomb->Damage = this->Power;
                    bomb->Dir = Link->Dir;
                }
                else Game->PlaySound(errorSFX);
            }
            
        }
    }
}

Comments