So that entities tagged with 2 overrun the entities tagged with 3? Easy! Just have a look of the meaning of "push" for the c_move instruction. By this you can define different push values for "groups" in an array and you link entities via a skill to the appropriate array field, e.g.
my.skill2 = 10; //group10
var pushArray[100]; //for hundred groups
pushArray[10]=2; //group 10 has now the push value 2
in the entity's while loop:
my.push = pushArray[my.skill2]; //update push value
and you use then in c_move IGNORE_PUSH to overrun all entities with a lower push value. So, if you assign one group the push value 1 or -10 or such group10-entities will overrun these.