Ok, I think I figured out why it sometimes doesn't work(seriously, I have no idea why it's erratic).
Your script only handles the X2_ITEM_EVENT_ACTIVATE case. However, X2_ITEM_EVENT_ONHITCAST is also used. I fixed it on mine by moving the ONHITCAST case up to the ACTIVATE, so they use the same call:
case X2_ITEM_EVENT_ACTIVATE: case X2_ITEM_EVENT_ONHITCAST: ExecuteScript("ac_"+GetTag(GetItemActivated()), OBJECT_SELF); break;
3 comments
Your script only handles the X2_ITEM_EVENT_ACTIVATE case. However, X2_ITEM_EVENT_ONHITCAST is also used. I fixed it on mine by moving the ONHITCAST case up to the ACTIVATE, so they use the same call:
case X2_ITEM_EVENT_ACTIVATE:
case X2_ITEM_EVENT_ONHITCAST:
ExecuteScript("ac_"+GetTag(GetItemActivated()),
OBJECT_SELF); break;