So here is the almost finished version.  What I did was create a mob with the same name as the object, and have it cast on the victim wand style, so there is no word uttering spam.
Code:
SPECIAL(spectral)
{ struct obj_data *find_obj_by_vnum(int vnum);
    struct obj_data *obj;
    obj = ch->equipment[WEAR_NECK_1];
    struct char_data *vict = FIGHTING(ch);
    int num;
    struct char_data *mob;
    
    int being_worn = (TRUE);
    
    
        if (obj) {if (obj_index[obj->item_number].vnum == 34707) {being_worn = (TRUE);}}
        if (cmd || GET_POS(ch) != POS_FIGHTING || !FIGHTING(ch) || !being_worn)
            return (FALSE);
        
    
    switch (rand_number(0, 3)) {
            mob = read_mobile(num, REAL);
        case 0:
            act("\r\n\t[f330]$p begins to \t[F555]pulse\tn and \t[F550]vibrate\tn!!!\tn\r\n",TRUE,ch,obj,0,TO_CHAR);
            act("\r\n$p begins to \t[F555]pulse\tn and \t[F550]vibrate\tn!!!!!\r\n",TRUE,ch,obj,0,TO_ROOM);
            num = 3657;
            mob = read_mobile(num, REAL);
            char_to_room(mob, IN_ROOM(ch));
            set_fighting(mob, vict);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            extract_char(mob);
            return (TRUE);
            break;
        case 1:
            act("\r\n\t[f330]$p begins to \t[F555]pulse\tn and \t[F550]vibrate\tn!!!\tn\r\n",TRUE,ch,obj,0,TO_CHAR);
            act("\r\n$p begins to \t[F555]pulse\tn and \t[F550]vibrate\tn!!!!!\r\n",TRUE,ch,obj,0,TO_ROOM);
            num = 3657;
            mob = read_mobile(num, REAL);
            char_to_room(mob, IN_ROOM(ch));
            set_fighting(mob, vict);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, ch, NULL, 28, 30, CAST_WAND);
            extract_char(mob);
            return (TRUE);
            break;
        case 2:
            
            act("\r\n\t[f330]$p begins to \t[F555]pulse\tn and \t[F550]vibrate\tn!!!\tn\r\n",TRUE,ch,obj,0,TO_CHAR);
            act("\r\n$p begins to \t[F555]pulse\tn and \t[F550]vibrate\tn!!!!!\r\n",TRUE,ch,obj,0,TO_ROOM);
            num = 3657;
            mob = read_mobile(num, REAL);
            char_to_room(mob, IN_ROOM(ch));
            set_fighting(mob, vict);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, ch, NULL, 28, 30, CAST_WAND);
            call_magic(mob, ch, NULL, 28, 30, CAST_WAND);
            extract_char(mob);
            return (TRUE);
            break;
        case 3:
            act("\r\n\t[f330]$p begins to \t[F555]pulse\tn and \t[F550]vibrate\tn!!!\tn\r\n",TRUE,ch,obj,0,TO_CHAR);
            act("\r\n$p begins to \t[F555]pulse\tn and \t[F550]vibrate\tn!!!!!\r\n",TRUE,ch,obj,0,TO_ROOM);
            num = 3657;
            mob = read_mobile(num, REAL);
            char_to_room(mob, IN_ROOM(ch));
            set_fighting(mob, vict);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, vict, NULL, 26, 30, CAST_WAND);
            call_magic(mob, ch, NULL, 28, 30, CAST_WAND);
            call_magic(mob, ch, NULL, 28, 30, CAST_WAND);
            call_magic(mob, ch, NULL, 28, 30, CAST_WAND);
            extract_char(mob);
            return (TRUE);
            break;
        default: return (FALSE);}
        
  
    
}