Não tinha prestado atenção a forma como tu fizeste. Está certo.
Na questão do xml, o que o milbradt postou é certo pois, se você prestar atenção vera que:
O item desequipado ao ser equipado muda de id (equip).
Como ele já mudou de id, ele não será desequipado - pois já não é o mesmo item, foi transformado em outro item - quem será desequipado é o item que está equipado - que no caso é o item transformado.
Agora voltando ao assunto do tópico, o autor do mesmo tem que fazer o teste da função rate para saber se ela existe e está funcionando normalmente ou como ela funciona (parâmetros).