Not sure if this was intentional.. but in do_play it requires an instrument.. while in do_cast it doesn't check for this... i'm not quite sure if this was intentional or not, I just know if I was a bard... I'd never use the play command :-p.
If you want to restrict do_cast to also require bards to use an intrument, simply find:
retcode = rNONE;
switch ( ch->substate )
* no ordering charmed mobs to cast spells
and under it place this:
if (ch->Class == CLASS_BARD)
for( obj = ch->first_carrying; obj != NULL; obj = obj_next )
obj_next = obj->next_content;
if( obj->item_type == ITEM_INSTRUMENT && obj->wear_loc == WEAR_HOLD )
found = TRUE;
if( !found )
send_to_char( "You are not holding an instrument!\n\r", ch );
Than in the declarations find OBJ_DATA *obj, add obj_next to it, and add: bool found = FALSE; to the list.
Once again.. i'm not sure on the intentions of the coding being this way, so don't yell at me if there's some secret behind this :-P