find
void do_shopset( CHAR_DATA * ch, char *argument )
{
SHOP_DATA * shop;
ROOM_INDEX_DATA * room, *room2;
char arg1[MAX_INPUT_LENGTH];
int vnum, value;
if( IS_NPC( ch ) )
{
huh( ch );
return;
}
argument = one_argument( argument, arg1 );
if( arg1[0] == '\0' )
{
send_to_char( "Usage: shopset <field> value\n\r", ch );
send_to_char( "\n\rField being one of:\n\r", ch );
if( IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD ) )
send_to_char( " room salary sell type flag owner gold\n\r", ch );
else
send_to_char( " sell salary\n\r", ch );
return;
}
vnum = atoi( arg1 );
room = ch->in_room;
if( !room->pShop )
{
send_to_char( "This room doesn't keep a shop.\n\r", ch );
return;
}
shop = room->pShop;
value = atoi( argument );
if( !str_cmp( arg1, "sell" )
&&( IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD )
||!str_cmp( ch->name, shop->owner ) ) )
{
if( value < 0 )
{
send_to_char( "Out of range.\n\r", ch );
return;
}
shop->profit_sell = value;
send_to_char( "The selling profit for this shop has been changed.\n\r", ch );
fold_area( ch->in_room->area, ch->in_room->area->filename, FALSE );
return;
}
if( !str_cmp( arg1, "salary" )
&&( IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD )
||!str_cmp( ch->name, shop->owner ) ) )
{
if( shop->gold && !IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD ) )
{
send_to_char
( "You can't change your shopkeeper's salary with money in the vault.\n\rWithdraw first, then change it.\n\r",
ch );
return;
}
if( value < 0 || value > 100 )
{
send_to_char( "Out of range.\n\r", ch );
return;
}
shop->profit_buy = value;
send_to_char( "The salary for this shopkeeper has been changed.\n\r", ch );
fold_area( ch->in_room->area, ch->in_room->area->filename, FALSE );
return;
}
if( !IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD ) )
{
send_to_char( "Invalid option.\n\r", ch );
return;
}
if( !str_cmp( arg1, "type" ) )
{
if( !str_cmp( argument, "none" ) )
{
shop->flag = -1;
}
else
{
if( !is_number( argument ) )
value = get_otype( argument );
if( value < 0 || value > MAX_ITEM_TYPE )
{
send_to_char( "Invalid item type.\n\r", ch );
return;
}
shop->type = value;
}
send_to_char( "Done.\n\r", ch );
return;
}
if( !str_cmp( arg1, "flag" ) )
{
if( !str_cmp( argument, "none" ) )
{
shop->flag = -1;
}
else
{
value = get_oflag( argument );
if( value < 0 || value > MAX_BITS )
{
send_to_char( "Invalid flag.\n\r", ch );
return;
}
shop->flag = value;
}
send_to_char( "Done.\n\r", ch );
return;
}
if( !str_cmp( arg1, "owner" ) )
{
STRFREE( shop->owner );
shop->owner = STRALLOC( argument );
send_to_char( "Done.\n\r", ch );
return;
}
/*
* This doesn't work right now for some reason
*/
if( !str_cmp( arg1, "room" ) )
{
if( ( room2 = get_room_index( vnum ) ) == NULL )
{
send_to_char( "Room not found.\n\r", ch );
return;
}
if( room2->pShop )
{
send_to_char( "That room already has a shop.\n\r", ch );
return;
}
room->pShop = NULL;
room2->pShop = shop;
shop->room = value;
send_to_char( "Done.\n\r", ch );
return;
}
do_shopset( ch, "" );
return;
}
change it to
void do_shopset( CHAR_DATA * ch, char *argument )
{
SHOP_DATA *shop;
ROOM_INDEX_DATA * room, *room2;
char arg1[MAX_INPUT_LENGTH];
int value;
if( IS_NPC( ch ) )
{
huh( ch );
return;
}
argument = one_argument( argument, arg1 );
if( arg1[0] == '\0' )
{
send_to_char( "Usage: shopset <field> value\n\r", ch );
send_to_char( "\n\rField being one of:\n\r", ch );
if( IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD ) )
send_to_char( " room salary sell type flag owner gold\n\r", ch );
else
send_to_char( " sell salary\n\r", ch );
return;
}
if( !( room = ch->in_room ) )
{
send_to_char( "You aren't in a room?\n\r", ch );
return;
}
if( !( shop = room->pShop ) )
{
send_to_char( "This room doesn't keep a shop.\n\r", ch );
return;
}
value = atoi( argument );
if( !str_cmp( arg1, "sell" )
&& ( IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD ) ||!str_cmp( ch->name, shop->owner ) ) )
{
if( value < 0 )
{
send_to_char( "Out of range.\n\r", ch );
return;
}
shop->profit_sell = value;
send_to_char( "The selling profit for this shop has been changed.\n\r", ch );
fold_area( room->area, room->area->filename, FALSE );
return;
}
if( !str_cmp( arg1, "salary" )
&& ( IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD ) ||!str_cmp( ch->name, shop->owner ) ) )
{
if( shop->gold && !IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD ) )
{
send_to_char( "You can't change your shopkeeper's salary with money in the vault.\n\rWithdraw first, then change it.\n\r", ch );
return;
}
if( value < 0 || value > 100 )
{
send_to_char( "Out of range.\n\r", ch );
return;
}
shop->profit_buy = value;
send_to_char( "The salary for this shopkeeper has been changed.\n\r", ch );
fold_area( room->area, room->area->filename, FALSE );
return;
}
if( !IS_SET( ch->pcdata->permissions, PERMIT_HIBUILD ) )
{
send_to_char( "Invalid option.\n\r", ch );
return;
}
if( !str_cmp( arg1, "type" ) )
{
if( !str_cmp( argument, "none" ) )
{
shop->flag = -1;
}
else
{
if( !is_number( argument ) )
value = get_otype( argument );
if( value < 0 || value > MAX_ITEM_TYPE )
{
send_to_char( "Invalid item type.\n\r", ch );
return;
}
shop->type = value;
}
ch_printf( ch, "Shop %d type set to %d.\n\r", shop->room, shop->type );
fold_area( room->area, room->area->filename, FALSE );
return;
}
if( !str_cmp( arg1, "flag" ) )
{
if( !str_cmp( argument, "none" ) )
{
shop->flag = -1;
}
else
{
value = get_oflag( argument );
if( value < 0 || value > MAX_BITS )
{
send_to_char( "Invalid flag.\n\r", ch );
return;
}
shop->flag = value;
}
ch_printf( ch, "Shop %d flag set to %d.\n\r", shop->room, shop->flag );
fold_area( room->area, room->area->filename, FALSE );
return;
}
if( !str_cmp( arg1, "owner" ) )
{
if( shop->owner )
STRFREE( shop->owner );
shop->owner = STRALLOC( argument );
ch_printf( ch, "Shop %d owner set to %s.\n\r", shop->room, shop->owner ? shop->owner : "(Unknown)" );
fold_area( room->area, room->area->filename, FALSE );
return;
}
/* This doesn't work right now for some reason */
if( !str_cmp( arg1, "room" ) )
{
if( ( room2 = get_room_index( value ) ) == NULL )
{
ch_printf( ch, "Room %d not found to use.\n\r", value );
return;
}
if( room2->pShop )
{
ch_printf( ch, "Room %d already has a shop.\n\r", room2->vnum );
return;
}
room->pShop = NULL;
room2->pShop = shop;
shop->room = value;
ch_printf( ch, "Shop %d is now Shop %d.\n\r", room->vnum, shop->room );
fold_area( room->area, room->area->filename, FALSE );
fold_area( room2->area, room2->area->filename, FALSE );
return;
}
do_shopset( ch, "" );
return;
}
try that out and see if that gets shopset to work, ill try to get around to checking more stuff tomorrow evening,