Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Swindle_Haggle.zs
- //Haggle Choppah by ZoriaRPG
- //v0.2 24-Nov-2016
- const int SCREEN_D_HAGGLE = 6;
- int Haggle(){ return Screen->D[SCREEN_D_HAGGLE]; }
- void Haggle(int haggle){ Screen->D[SCREEN_D_HAGGLE] = haggle; }
- const int SFX_HAGGLE_GOOD = 27;
- const int SFX_HAGGLE_FAIL = 28;
- const int SFX_HAGGLE_NORM = 24;
- const int HAGGLE = 1;
- const int HAGGLE1 = 109;
- const int HAGGLE2 = 110;
- const int RT_HAGGLE = 10;
- //Settings
- //Set any of these to '1' t make pressing that button in a normal ZC shop try haggling with the merchant.
- const int HAGGLE_BUTTON_B = 1;
- const int HAGGLE_BUTTON_A = 1;
- const int HAGGLE_BUTTON_R = 0;
- const int HAGGLE_BUTTON_L = 1;
- const int HAGGLE_BUTTON_EX1 = 0;
- const int HAGGLE_BUTTON_EX2 = 0;
- const int HAGGLE_BUTTON_EX3 = 0;
- const int HAGGLE_BUTTON_EX4 = 0;
- void HaggleMedals(int haggle){
- if ( haggle == 1 ) {
- if ( Link->Item[HAGGLE1] ) Link->Item[HAGGLE1] = false;
- if ( Link->Item[HAGGLE2] ) Link->Item[HAGGLE2] = false;
- }
- if ( haggle == 2 ) {
- if ( Link->Item[HAGGLE2] ) Link->Item[HAGGLE2] = false;
- if ( !Link->Item[HAGGLE1] ) Link->Item[HAGGLE1] = true;
- }
- if ( haggle == 3 ) {
- if ( !Link->Item[HAGGLE2] ) Link->Item[HAGGLE2] = true;
- }
- }
- int HaggleMedals(){
- if ( Link->Item[HAGGLE2] ) return 3;
- if ( Link->Item[HAGGLE1] ) return 2;
- return 1;
- }
- //This is the haggle that you swindle before WaitHaggle()
- void DoHaggle(){
- if ( HaggleMedals() != 2 && !CanHaggle() ) {
- HaggleMedals(2);
- }
- if ( CanHaggle() && Haggle() ) HaggleMedals(Haggle());
- TryHaggle();
- }
- bool CanHaggle(){
- return ( Screen->RoomType == RT_HAGGLE );
- }
- void DrawHaggle() { Waitdraw(); }
- void WaitHaggle() { Waitframe(); }
- void TryHaggle(){
- bool try;
- if ( HAGGLE_BUTTON_B && ( Link->PressB ) ) try = true;
- if ( HAGGLE_BUTTON_A && Link->PressA ) try = true;
- if ( HAGGLE_BUTTON_R && Link->PressR ) try = true;
- if ( HAGGLE_BUTTON_L && Link->PressL ) try = true;
- if ( HAGGLE_BUTTON_EX1 && Link->PressEx1 ) try = true;
- if ( HAGGLE_BUTTON_EX2 && Link->PressEx2 ) try = true;
- if ( HAGGLE_BUTTON_EX3 && Link->PressEx3 ) try = true;
- if ( HAGGLE_BUTTON_EX4 && Link->PressEx4 ) try = true;
- if ( try && !Haggle() && CanHaggle() ){
- Haggle( Rand(3)+1 );
- if ( Haggle() == 1 && SFX_HAGGLE_FAIL ) Game->PlaySound(SFX_HAGGLE_FAIL);
- if ( Haggle() == 2 && SFX_HAGGLE_NORM ) Game->PlaySound(SFX_HAGGLE_NORM);
- if ( Haggle() == 3 && SFX_HAGGLE_GOOD ) Game->PlaySound(SFX_HAGGLE_GOOD);
- for ( int q = 0; q <= 90; q++ ) {
- Link->InputUp = false; Link->PressUp = false;
- Link->InputDown = false; Link->PressDown = false;
- Link->InputLeft = false; Link->PressLeft = false;
- Link->InputRight = false; Link->PressRight = false;
- Link->InputR = false; Link->PressR = false;
- Link->InputL = false; Link->PressL = false;
- Link->InputA = false; Link->PressA = false;
- Link->InputB = false; Link->PressB = false;
- Link->InputEx1 = false; Link->PressEx1 = false;
- Link->InputEx2 = false; Link->PressEx2 = false;
- Link->InputEx3 = false; Link->PressEx3 = false;
- Link->InputEx4 = false; Link->PressEx4 = false;
- WaitHaggle();
- }
- HaggleMedals(Haggle());
- //Prices won't swindle without warping. Ask Mister Owl.
- Link->PitWarp( Game->GetCurDMap(), Game->GetCurScreen() );
- }
- }
- global script SwindleHaggle{
- void run(){
- while(HAGGLE){
- DoHaggle();
- DrawHaggle();
- WaitHaggle();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement