Use on R


I'm considering making a passive item do something (e.g. generate an LWeapon) on the pickup script, 
and making a dummy item that when you RressR, sets the real item to true for one frame, 
thus activating its pickup script for one frame, and resetting the real item to false directly thereafter, 
but if there is any way to call for the active script on a passive item to run on a keypress, 
I would love to know about it. 

Idea:


Make dummy items for subweapons.
Getting any dummy item replaces an old dummy item. 
Current dummy item appears on the passsive subscreen. 
Set pickup script on dummy items to remove any old dummy weapons, and make the new one true, 
refreshing the passive subscreen.

Set a constabt for each dummy item to tie it to a real passive item.
Set a bool to check what dummy item exists.
On pressR, using the bool result, set an item to true that matches a kind assigned to each dummy item

Place the LWeapon effects on the pickupscript for the real subweapons.

On PressR, run a check to see what dummy item is in inventory. If that dummy item is X, make passive
item-X true for one frame, (running its pickup script?), or make item at Link's position (to ensure it runs the pickup script) 
then set item-X to false again, keeping the dummy item.

Base potential:
//import "std.zh"

const int SFX_GBSHIELD = 17; //Shield active SFX

int shieldItem; //Shield item to give (set by item script, reset each frame)
bool shieldButton; //False = B, True = A

global script gbshield_global{
	void run(){
	//Initializations
	bool shieldOn;
		
		while(true){
			if( !shieldOn && shieldItem ){ //Enable shield when using dummy
				shieldOn=true; //Set shield state to on
				Link->Item[shieldItem]=true; //Give the shield
				Game->PlaySound(SFX_GBSHIELD); //Play the sound
			}
			else if( ( (shieldButton && !Link->InputA)||(!shieldButton && !Link->InputB)) //When button is released
			&& shieldOn){ //And shield is still on
				Link->Item[shieldItem]=false; //Remove shield
				shieldItem = 0; //Reset shield item variable
				shieldOn = false; //Set shield state to off
			}

			Waitframe(); //Needed at bottom of while(true) loop
		} // end while
	} //end void run
}

//D0: "Real" shield item to give
item script gbshield{
	void run ( int shield ){
		shieldItem = shield;
		if ( Link->PressB ) shieldButton = false;
		else if ( Link->PressA ) shieldButton = true;
	}
}