Ok.. say you have a blue and red crystal, and if you pick any of them up a healing status gets put on the player. But only if you are level 3 or above. Then use this:

Code
IF
ItemTemplateAddedToCharacter(_BlueCrystal,_,_Player)
THEN
PROC_CrystalEffects((CHARACTERGUID)_Player);

IF
ItemTemplateAddedToCharacter(_RedCrystal,_,_Player)
THEN
PROC_CrystalEffects((CHARACTERGUID)_Player);

PROC
PROC_CrystalEffects((CHARACTERGUID)_Player)
AND
CharacterGetLevel(_Player,_Level)
AND
_Level >= 3
THEN
ApplyStatus(_Player,"HEALING",8.0);


Now, if the player is a human and you wanted to apply a blinded status if so, then you could add below:

Code
PROC
PROC_CrystalEffects((CHARACTERGUID)_Player)
AND
CharacterGetRace(_Player,0,_Race)
AND
_Race == "Human"
THEN
ApplyStatus(_Player,"BLIND",8.0);


You can now call this PROC and do these things at any point by using the PROC_CrystalEffects((CHARACTERGUID)_Player); line at the end of a THEN.

So you could call it if a player entered a trigger, or left a dialog or whatever. Instead of typing all that code again you can just call it with one line.

By adding (CHARACTERGUID)_Player to the PROC_CrystalEffects you store the _Player gathered from the ItemTemplateAddedToCharacter event and pass it on to the PROC.