zim/area/
zim/bin/
zim/clans/plists/
zim/corefiles/
zim/doc/muddy/
zim/gods/
zim/log/
zim/player/
zim/skill_tree/
zim/tmp/
/*-
 * Copyright (c) 2006 Zsuzsu <little_zsuzsu@hotmail.com>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $Id: waffects.h 851 2006-04-22 13:34:00Z zsuzsu $
 */

/*
 * Consecrate is the act of augmenting items with gained experience.
 */

#ifndef _AUGMENT_H_
#define _AUGMENT_H_

#define AUGMENT_MIN_LEVEL	LEVEL_HERO
#define AUGMENT_COST_GOLD	5000
#define AUGMENT_BASE_EXP	1000
#define AUGMENT_WAND_EXP_MOD	75
#define AUGMENT_STAFF_EXP_MOD	50

#define AUGMENT_TYPE_NONE	0
#define AUGMENT_TYPE_WEAPON	1
#define AUGMENT_TYPE_FOCUS	2
#define AUGMENT_TYPE_RELIC	3

/* cost in points */
#define AUGMENT_COST_WEAPON_DICENUMBER		5
#define AUGMENT_COST_WEAPON_DICESIZE		1
#define AUGMENT_COST_WEAPON_HATRED		10
#define AUGMENT_COST_WEAPON_POISON		3
#define AUGMENT_COST_WEAPON_SHARP		4
#define AUGMENT_COST_WEAPON_FROST		4
#define AUGMENT_COST_WEAPON_VORPAL		4
#define AUGMENT_COST_WEAPON_SHOCKING		5
#define AUGMENT_COST_WEAPON_HOLY		6
#define AUGMENT_COST_WEAPON_FLAMING		8
#define AUGMENT_COST_WEAPON_VAMPIRIC		8

#define AUGMENT_COST_FOCUS_MASTERY		2
#define AUGMENT_COST_FOCUS_FOCUS		2
#define AUGMENT_COST_FOCUS_MANA			2
#define AUGMENT_COST_FOCUS_POWER		4

/* components necessary for augmentation */
#define AUGMENT_VNUM_DICENUMBER		131
#define AUGMENT_VNUM_DICESIZE		0
#define AUGMENT_VNUM_FLAMING		132
#define AUGMENT_VNUM_FROST		133
#define AUGMENT_VNUM_SHOCKING		134
#define AUGMENT_VNUM_VORPAL		135
#define AUGMENT_VNUM_HOLY		136
#define AUGMENT_VNUM_VAMPIRIC		137
#define AUGMENT_VNUM_SHARP		138

/*
 * augmentation of items
 */
typedef struct obj_augment_data	OBJ_AUGMENT_DATA;

/* this should probably be a union, but it's unlikely your typical
 * mud coder can grok that.
 */
struct obj_augment_data
{
	time_t		consecration_time;
	time_t		last_level;
	int		level;		/* exp level of the item*/
	int		exp_modifier;
	int		exp;
	int		pts;		/* available augment points*/
	int		skill_sn;	/* for focus items */
	int		mastery_level;	/* + to percentage */
	int		focus_level;	/* increased success */
	int		mana_level;	/* reduce mana cost */
	int		power_level;	/* increase level of cast */
	int		dicesize;	/* increase in dicesize */
	int		dicenum;	/* increase in dicenum */
	flag32_t	weapon_flags;	/* weapon flags added */
	int		racial_hatred;	/* extra damage to this race */
};

bool is_augmented (OBJ_DATA *obj);
void do_consecrate (CHAR_DATA *ch, const char *argument);
void obj_augment_free(OBJ_AUGMENT_DATA *poa);
bool fread_augment (OBJ_DATA *obj, FILE *fp, char *word);
void fwrite_augment (OBJ_DATA *obj, FILE *fp);
OBJ_DATA * get_augment_obj(CHAR_DATA *ch);
bool gain_obj_exp (CHAR_DATA *ch, OBJ_DATA *obj, int gain);
int augment_tnl (OBJ_DATA *obj);
void show_augment (CHAR_DATA *ch, OBJ_DATA *obj, BUFFER *output);
bool is_not_my_augment (CHAR_DATA *ch, OBJ_DATA *obj);
OBJ_DATA * augment_unauthorized_use (CHAR_DATA *ch, OBJ_DATA *wield);

#endif