Confirmed. I did not turn on that screen flag.
const int __LA_HOLDUP_HANDS = 1; //The number of hands to use for the default hold-up animation. //D0 Integer: Number of Message String to display if Link is near the bottom of the screen //D0 Decimal: Number of Message String to display if Link is near the top of the screen //D1 Integer: ID of Item that prevents Message String from being displayed //D1 Decimal: ID of item to hold up. Set to '0' for no hold-up animation. const int SFX_HOLD_ITEM_FANFARE = 63; //Change to the sound that you want. item script AdvPickUpMessage { void run(int stringA_stringB, int stringPreventItemID_this_item_id) { bool foundff; int stringA = stringA_stringB << 0; int stringB = ( stringA_stringB - stringA ) * 10000; int stringPreventItemID = stringPreventItemID_this_item_id << 0; int this_item_id = ( stringPreventItemID_this_item_id - stringPreventItemID ) * 10000; if ( !Link->Item[stringPreventItemID] ) { if ( this_item_id > 0 && this_item_id < 256 ) { if ( Link->Action == LA_DIVING ) { int fff[]="DiveHoldUp"; for ( int q = 32; q > 0; q-- ) { ffc f = Screen->LoadFFC(q); if ( f->Data == 0 ) { if ( f->Script == 0 ) { foundff = true; f->Data = 1; f->Script = Game->GetFFCScript(fff); f->InitD[0] = this_item_id; f->InitD[1] = stringA; f->InitD[2] = stringB; break; } } } if ( !foundff ) { int ferr[]="Cound not find a free ffc slot to run the ffc script for item script AdvPickupMessage"; TraceS(ferr); } Quit(); } else if ( Link->Action == LA_SWIMMING ) { int ff[]="swimHoldUp"; for ( int q = 32; q > 0; q-- ) { ffc f = Screen->LoadFFC(q); if ( f->Data == 0 ) { if ( f->Script == 0 ) { foundff = true; f->Data = 1; f->Script = Game->GetFFCScript(ff); f->InitD[0] = this_item_id; f->InitD[1] = stringA; f->InitD[2] = stringB; break; } } } if ( !foundff ) { int ferr[]="Cound not find a free ffc slot to run the ffc script for item script AdvPickupMessage"; TraceS(ferr); } Quit(); } else { Link->Action = LA_HOLD1LAND + (__LA_HOLDUP_HANDS-1); Link->HeldItem = this_item_id; Game->PlaySound(SFX_HOLD_ITEM_FANFARE); if(Link->Y > 88) { Screen->Message(stringA); } else { Screen->Message(stringB); } } } } } } ffc script swimHoldUp{ void run(int itm, int stringA, int stringB) { Waitframe(); //do { // Waitframe(); //} while(Link->Action == LA_DIVING); Game->PlaySound(SFX_HOLD_ITEM_FANFARE); Link->Action = LA_HOLD1WATER + (__LA_HOLDUP_HANDS-1); Link->HeldItem = itm; while( Link->Action == ( LA_HOLD1WATER + (__LA_HOLDUP_HANDS-1) ) ) { Waitframe(); } Waitframes(2); if(Link->Y > 88) { Screen->Message(stringA); } else { Screen->Message(stringB); } this->Data = 0; this->Script = 0; Quit(); } } ffc script DiveHoldUp{ void run(int itm, int stringA, int stringB){ do { Waitframe(); } while(Link->Action == LA_DIVING); //Link->Action = LA_HOLD1WATER + (__LA_HOLDUP_HANDS-1); //Link->HeldItem = itm; Game->PlaySound(SFX_HOLD_ITEM_FANFARE); while( Link->Action == ( LA_HOLD1WATER + (__LA_HOLDUP_HANDS-1) ) ) { Waitframe(); } Waitframes(2); if(Link->Y > 88) { Screen->Message(stringA); } else { Screen->Message(stringB); } this->Data = 0; this->Script = 0; Quit(); } } //Maddening, isn't it? -Z
Dive items may do the hold-up automatically. Try that, and tell me if Link still holds up the item when diving.
Edited by ZoriaRPG, 28 July 2017 - 06:12 AM.