Consecrate Snippit by Xrakisis
please email me if you use this.. ian_shirm2@yahoo.com
snippit wrote for Children of the Night:Rom-Quickmud Edition

save.c
    fprintf( fp, "WeaponCurrentXP %d\n", obj->weapon_currentxp);
    fprintf( fp, "WeaponLevel %d\n", obj->weapon_level);
    fprintf( fp, "WeaponPoints %d\n", obj->weapon_points);
                KEY ("WeaponCurrentXP", obj->weapon_currentxp, fread_number (fp)                                              );
                KEY ("WeaponLevel", obj->weapon_level, fread_number (fp));
                KEY ("WeaponPoints", obj->weapon_points, fread_number (fp));

merc.h obj_index_data/obj_data
    int                 weapon_level;
    int                 weapon_points;
    int                 weapon_currentxp;

interp.c:    {"consecrate",   do_consecrate,   POS_DEAD,     0, LOG_NORMAL, 1},
interp.h:DECLARE_DO_FUN( do_consecrate          );




fight.c:group_gain

    OBJ_DATA *wield;
    OBJ_DATA *wield2;
    int livingweap_exp = 0;
    int livingweap_needed = 0;
        wield = get_eq_char( ch, WEAR_WIELD );
        wield2 = get_eq_char( ch, WEAR_HOLD );


Put The Following Code under         gain_exp (gch, xp);


        wield = get_eq_char( ch, WEAR_WIELD );
        wield2 = get_eq_char( ch, WEAR_HOLD );

        if (wield != NULL)
        {
        livingweap_needed = (wield->weapon_level * 100);

              if (wield->weapon_level >= 100) return;
              livingweap_exp = (xp * .5);
              xp -= (livingweap_exp);

              sprintf(buf, "{b- {gYour Weapon receives {w%d {gexperience points.{x\n\r", livingweap_exp);
		  stc(buf, gch);
         
              wield->weapon_currentxp += livingweap_exp;
               
              if (wield->weapon_currentxp >= livingweap_needed )
		  {
              wield->weapon_level++;
              send_to_char("{wYour {rweapon {whas gained a Level{x\n\r", gch);
		  wield->weapon_currentxp -= livingweap_needed;
		  wield->weapon_points++;
              }
         }

        if (wield2 != NULL)
        {
        livingweap_needed = (wield2->weapon_level * 100);

              if (wield2->weapon_level >= 100) return;
              livingweap_exp = (xp * .5);
              xp -= (livingweap_exp);

              sprintf(buf, "{b- {gYour Weapon receives {w%d {gexperience points.{x\n\r", livingweap_exp);
		  stc(buf, gch);
         
              wield2->weapon_currentxp += livingweap_exp;
               
              if (wield2->weapon_currentxp >= livingweap_needed )
		  {
              wield2->weapon_level++;
              send_to_char("{wYour {rweapon {whas gained a Level{x\n\r", gch);
		  wield2->weapon_currentxp -= livingweap_needed;
		  wield2->weapon_points++;		
	             }
		}





void do_consecrate(CHAR_DATA *ch, char *argument)
{
	OBJ_DATA *obj;
	char arg1[MAX_INPUT_LENGTH];
	char arg2[MAX_INPUT_LENGTH];
	char buf[MAX_STRING_LENGTH];
	int livingweap_needed = 0;
	argument = one_argument( argument, arg1 );
	argument = one_argument( argument, arg2 );

	if (arg1[0] == '\0')
	{
	send_to_char("Which item do you wish to consecrate?\n\r", ch);
	return;
	}
	if ( (obj = get_obj_carry(ch, arg1, ch)) == NULL)
	{
	send_to_char("You are not carrying that item.\n\r", ch);
	return;
	}
	if (obj->item_type != ITEM_WEAPON)
	{
	send_to_char("You may only Consecrate weapons.\n\r",ch);
	return;
	}
      else if (obj->item_type == ITEM_WEAPON && arg2[0] == '\0')
	{

	send_to_char("{b[{r**********{b[{wConsecrate Menu{b]{r**********{b]{x.\n\r",ch);
	sprintf( buf, "Weapon Name: %s \n\r", obj->short_descr );
	send_to_char( buf, ch );
	sprintf( buf, "Weapon Attack Type: %s \n\r", attack_table[obj->value[3]].name );
	send_to_char( buf, ch );
	sprintf( buf, "Weapon Damage: %d d %d \n\r", obj->value[1], obj->value[2]);
	send_to_char( buf, ch );
	sprintf( buf, "Weapon Level: %d, Weapon Points: %d \n\r", obj->weapon_level, obj->weapon_points);
	send_to_char( buf, ch );

	livingweap_needed = (obj->weapon_level * 100);
	sprintf( buf, "Weapon Experiance: %d, EXP til next Level: %d \n\r", obj->weapon_currentxp, 
	(livingweap_needed - obj->weapon_currentxp));
	send_to_char( buf, ch );
	if (IS_WEAPON_STAT (obj, WEAPON_POISON))
	send_to_char("This Weapon is Poisoned.\n\r",ch);
	if (IS_WEAPON_STAT (obj, WEAPON_VAMPIRIC))
	send_to_char("This Weapon is Vampiric.\n\r",ch);
	if (IS_WEAPON_STAT (obj, WEAPON_FLAMING))
	send_to_char("This Weapon is Enchanted with Fire.\n\r",ch);
	if (IS_WEAPON_STAT (obj, WEAPON_FROST))
	send_to_char("This Weapon is Enchanted with Frost.\n\r",ch);
	if (IS_WEAPON_STAT (obj, WEAPON_SHOCKING))
	send_to_char("This Weapon is Enchanted with Electricity.\n\r",ch);
	if (IS_WEAPON_STAT (obj, WEAPON_SHARP))
	send_to_char("This Weapon is Sharp.\n\r",ch);
	if (IS_WEAPON_STAT (obj, WEAPON_TWO_HANDS))
	send_to_char("This Weapon is Two-Handed\n\r",ch);
	send_to_char("{b[{r**********{b[{wConsecrate Menu{b]{r**********{b]{x.\n\r",ch);
	send_to_char("Upgrade Costs:\n\r",ch);
	if (!IS_WEAPON_STAT (obj, WEAPON_POISON))
	send_to_char("Poison(5)",ch);
	if (!IS_WEAPON_STAT (obj, WEAPON_VAMPIRIC))
	send_to_char(" Vampiric(5)",ch);
	if (!IS_WEAPON_STAT (obj, WEAPON_FLAMING) && !IS_WEAPON_STAT (obj, WEAPON_FROST))
	send_to_char(" Flaming(5)",ch);
	if (!IS_WEAPON_STAT (obj, WEAPON_FROST) && !IS_WEAPON_STAT (obj, WEAPON_FLAMING))
	send_to_char(" Frost(5)",ch);
	if (!IS_WEAPON_STAT (obj, WEAPON_SHOCKING))
	send_to_char(" Shocking(5)",ch);
	if (!IS_WEAPON_STAT (obj, WEAPON_SHARP))
	send_to_char(" Sharp(5)",ch);
	send_to_char("\n\rNumber of Die +1 (5)",ch);
	send_to_char("\n\rDamage ammount of Die +1 (5)",ch);
	send_to_char("\n\r{b[{r**********{b[{wConsecrate Menu{b]{r**********{b]{x.\n\r",ch);
	}
	if (!str_cmp(arg2,"poison"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s is coated with poisonous venom!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->value[4], WEAPON_POISON);
		return;
		}
	}
	if (!str_cmp(arg2,"vampiric"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s has become Vampyric!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->value[4], WEAPON_VAMPIRIC);
		return;
		}
	}
	if (!str_cmp(arg2,"fire"))
	{
		if (IS_WEAPON_STAT (obj, WEAPON_FROST))
		{
		send_to_char("you may not enflame a Frost Weapon.\n\r",ch);
		return;
		}
		else if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s becomes enveloped with Fire!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->value[4], WEAPON_FLAMING);
		return;
		}
	}
	if (!str_cmp(arg2,"frost"))
	{
		if (IS_WEAPON_STAT (obj, WEAPON_FLAMING))
		{
		send_to_char("you may not Frost a Flaming Weapon.\n\r",ch);
		return;
		}
		else if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s is enveloped with Frost!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->value[4], WEAPON_FROST);
		return;
		}
	}
	if (!str_cmp(arg2,"shocking"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s is surrounded with electricity!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->value[4], WEAPON_SHOCKING);
		return;
		}
	}
	if (!str_cmp(arg2,"sharp"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s is honed to Razor Sharpness!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->value[4], WEAPON_SHARP);
		return;
		}
	}
	if (!str_cmp(arg2,"number"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s gains an additional Number of Damage Die!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		obj->value[1]++;
		return;
		}
	}
	if (!str_cmp(arg2,"damage"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s gains an additional Damage Die!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		obj->value[2]++;
		return;
		}
	}
return;
}