vc errou no seguinte, veja abaixo:
Seu script
$vocation_name[0][2] = array(9 => 'Epic Master Sorcerer', 10 => 'Epic Elder Druid', 11 => 'Epic Royal Paladin', 12 => 'Epic Elite Knight'); // id => 'name' , $vocation_name[2] - promotion level 2, $vocation_name[0] - for world ID 0
o script correto!
$vocation_name[0][2] = array(1 => 'Epic Master Sorcerer', 2 => 'Epic Elder Druid', 3 => 'Epic Royal Paladin', 4 => 'Epic Elite Knight'); // id => 'name' , $vocation_name[2] - promotion level 2, $vocation_name[0] - for world ID 0
explicando, o segior indentifica as ids e as promotions, mais o script de second promotion, nao muda o id do persongem, apenas add a promotion 2, entao as vocaçoes mantem o msmo id da anterior!