/****************************************************************************
* Eldhamud Codebase V2.2 *
* ------------------------------------------------------------------------ *
* EldhaMUD code (C) 2003-2008 by Robert Powell (Tommi) *
* ------------------------------------------------------------------------ *
* Random Treasure Drop Module *
****************************************************************************/
#include "./Headers/mud.h"
#define OBJ_VNUM_RND_TREASURE 92
#define PRE_ROW 0
#define MID_ROW 0
#define LAST_ROW 0
struct random_treasures
{
short row_number; /* row number in the table */
char *name; /* Name, keywords */
char *short_descr; /* Short Descr */
char *long_descr; /* Long descr */
short cost; /* Base cost of item */
short weight; /* Base weight of item */
};
struct prefix_treasures
{
short row_number; /* row number in the table */
char *name; /* Name, keywords */
};
const struct prefix_treasures prefix_treasures_table[] = {
// row name
{0, "A finely crafted"},
};
struct middle_treasures
{
short row_number; /* row number in the table */
char *name; /* Name, keywords */
};
const struct middle_treasures middle_treasures_table[] = {
// row name
{0, "golden"},
};
const struct random_treasures random_treasures_table[] = {
// row name
{0, "ewer"},
};
void do_random_treasure( CHAR_DATA * ch )
{
OBJ_DATA *created_treasure;
char buf[MAX_INPUT_LENGTH];
short rownumber, midnumber, prenumber, random_number;
rownumber = number_range( 0, LAST_ROW );
midnumber = number_range( 0, MID_ROW );
prenumber = number_range( 0, PRE_ROW );
created_treasure = create_object( get_obj_index( OBJ_VNUM_RND_TREASURE ), 1 );
sprintf( buf, "%s %s %s",
prefix_treasures_table[prenumber].name,
middle_treasures_table[midnumber].name,
random_treasures_table[rownumber].name
);
STRFREE( created_treasure->name );
created_treasure->name = STRALLOC( buf );
sprintf( buf, "%s %s %s",
prefix_treasures_table[prenumber].name,
middle_treasures_table[midnumber].name,
random_treasures_table[rownumber].name
);
STRFREE( created_treasure->short_descr );
created_treasure->short_descr = STRALLOC( buf );
sprintf( buf, "%s %s %s.",
prefix_treasures_table[prenumber].name,
middle_treasures_table[midnumber].name,
random_treasures_table[rownumber].name
);
STRFREE( created_treasure->description );
created_treasure->description = STRALLOC( buf );
created_treasure->cost = ch->level * 10;
created_treasure->weight = 10;
random_number = number_range( 0, 100 );
if( random_number > 65 && random_number < 85 )
{
xSET_BIT( created_treasure->extra_flags, ITEM_REFINED );
created_treasure->cost += 100;
}
else if( random_number > 84 && random_number < 95 )
{
xSET_BIT( created_treasure->extra_flags, ITEM_UNIQUE );
created_treasure->cost += 200;
}
else if( random_number > 94 && random_number < 101 )
{
xSET_BIT( created_treasure->extra_flags, ITEM_ELITE );
created_treasure->cost += 400;
}
obj_to_char( created_treasure, ch );
return;
}