void spell_bless(byte level, struct char_data *ch,
  struct char_data *victim, struct obj_data *obj)
{
  struct affected_type af;
  
  if(ch && (victim || obj)){
  
    if (obj) {
      if((5*level > GET_OBJ_WEIGHT(obj)) &&
        (GET_POS(ch) != POSITION_FIGHTING) &&
        !IS_OBJ_STAT(obj, ITEM_EVIL)) {
          SET_BIT(obj->obj_flags.extra_flags, ITEM_BLESS);
          act("$p briefly glows.",FALSE,ch,obj,0,TO_CHAR);
      }
         } else {
      if(!victim)return;
      if (affected_by_spell(victim, SPELL_BLESS))
        affect_from_char(victim, SPELL_BLESS);
  
      send_to_char("The spectral image of a raven soars down from the Heavens, $
      af.type      = SPELL_BLESS;
      af.duration  = 6+level;
                af.modifier  = 5;
      af.location  = APPLY_HITROLL;
      af.bitvector = 0;   
      affect_to_char(victim, &af);
      
      af.location = APPLY_SAVING_SPELL;
      af.modifier = -1;                 /* Make better */
      affect_to_char(victim, &af);
    }
  }
}

