////////////////////////////// /// GENERAL POTIONS SCRIPT /// //////////////////////////////////////////////////////////////////////////////////////////////////// /// By: ZoriaRPG - v1.1 - Updated 29th April 2014 /// //////////////////////////////////////////////////////////////////////////////////////////////////// /// This ITEM SCRIPT is used to create a variety of portion types, using a series of flags //D0 : Set to 1 if item is to restore FULL HP, otherwise, set to 0. //D1 : Set to 1 if item is to restore FULL MP, otherwise, set to 0. //D2 : Set to a number greater than 0 is D0 is set to 0, to set a PRECISE AMOUNT of HP to restore //D3 : Set to a number greater than 0 is D1 is set to 0, to set a PRECISE AMOUNT of MP to restore //D4 : Set to SFX to play when using item: Use a number from Quest->Audio->SFX Data //D5 : Set to SFX to play for error sound (if HP/MP is already full, to prevent wasting item - from Quest>Audio->SFX Data //D6 : Set to item number of this item. //D7 : Set flag for potion checks - checks if health & magic are already full. // D& Flags: 0 = check both, 1 = check only HP, 2 = check only MP, 3 = check neither, item script Potions { void run(int MaxRefillLife, int MaxRefillMagic, int hp, int mp, int POTION_SFX, int ERROR_SFX, int itemNumber, int HPMP_Flag) { int MP_Max = Game->MCounter[CR_MAGIC]; int HP_Max = Game->MCounter[CR_LIFE]; if ( HPMP_Flag == 0 ) { //Check if HP & MP are full. if ( MaxRefillLife == 1 && MaxRefillMagic == 1 && Link->MP < Link->MaxMP && Link->HP < Link->MaxHP ){ Link->HP += HP_Max; Link->MP += MP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 1 && MaxRefillMagic == 0 && Link->HP < Link->MaxHP ){ Link->HP += HP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 1 && Link->MP < Link->MaxMP ){ Link->MP += MP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && hp > 0 && mp > 0 && Link->MP < Link->MaxMP && Link->HP < Link->MaxHP ){ Link->HP += hp; Link->MP += mp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && hp > 0 && Link->HP < Link->MaxHP ){ Link->HP += hp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && mp > 0 && Link->MP < Link->MaxMP ){ Link->MP += mp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else { Game->PlaySound(ERROR_SFX); } } else if ( HPMP_Flag == 1 ) { //Check only if HP is full. if ( MaxRefillLife == 1 && MaxRefillMagic == 1 && Link->HP < Link->MaxHP ){ Link->HP += HP_Max; Link->MP += MP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 1 && MaxRefillMagic == 0 && Link->HP < Link->MaxHP ){ Link->HP += HP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 1 ){ Link->MP += MP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && mp > 0 && hp > 0 && Link->HP < Link->MaxHP ){ Link->HP += hp; Link->MP += mp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && hp > 0 && Link->HP < Link->MaxHP ){ Link->HP += hp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && mp > 0 ){ Link->MP += mp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else { Game->PlaySound(ERROR_SFX); } } else if ( HPMP_Flag == 2 ) { //Check only if MP is full. if ( MaxRefillLife == 1 && MaxRefillMagic == 1 && Link->MP < Link->MaxMP ){ Link->HP += HP_Max; Link->MP += MP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 1 && MaxRefillMagic == 0 ){ Link->HP += HP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 1 && Link->MP < Link->MaxMP ){ Link->MP += MP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && mp > 0 && hp > 0 && Link->MP < Link->MaxMP ){ Link->HP += hp; Link->MP += mp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && hp > 0 ){ Link->HP += hp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && mp > 0 && Link->MP < Link->MaxMP ){ Link->MP += mp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else { Game->PlaySound(ERROR_SFX); } } if ( HPMP_Flag == 3 ) { //Don't check if HP/MP are full; always ue item. if ( MaxRefillLife == 1 && MaxRefillMagic == 1 ){ Link->HP += HP_Max; Link->MP += MP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 1 && MaxRefillMagic == 0 ){ Link->HP += HP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 1 ){ Link->MP += MP_Max; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && hp > 0 && mp > 0 ){ Link->HP += hp; Link->MP += mp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && hp > 0 ){ Link->HP += hp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else if ( MaxRefillLife == 0 && MaxRefillMagic == 0 && mp > 0 ){ Link->MP += mp; Game->PlaySound(POTION_SFX); Link->Item[itemNumber] = false; } else { Game->PlaySound(ERROR_SFX); } } } }