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:
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:
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.