#include <learning.h> #define SAVE SAVEPATH +"request" mixed *requests; /* values are each ({ poster, clainmant, request }) */ void create() { /* seteuid is needed for the save_object and restore_object calls */ seteuid( (string)master()->get_bb_uid() ); /* restore the saved values for this */ unguarded( (: restore_object, SAVE :) ); if( !requests ) requests = ({ }); } /* create() */ void save_me() { unguarded( (: save_object, SAVE :) ); } /* save_me() */ string query_list() { int i; string ret; mixed request; if ( !sizeof( requests ) ) { return "There are no requests at the moment.\n"; } ret = "$P$Requests$P$The following requests have been made:\n"; foreach( request in requests ) { if ( !request[ 1 ] ) { ret += sprintf( "%4d. $C$%s asked for %s.\n", i, request[ 0 ], request[ 2 ] ); } else { ret += sprintf( "%4d. $C$%s asked for %s.\n Claimed by $C$%s\n", i, request[ 0 ], request[ 2 ], request[ 1 ]); } } return ret; } /* query_list() */ void add_request( string name, string words ) { requests += ({ ({ name, 0, words }) }); save_me(); } /* add_request() */ int claim_request( string name, int number ) { if ( number >= 0 && number < sizeof( requests ) ) { requests[ number ][ 1 ] = name; save_me(); return 1; } return 0; } /* add_request() */ int remove_request( string name, int number ) { if ( number >= 0 && number < sizeof( requests ) ) { if ( requests[ number ][ 0 ] == name || name == CURRENT_LORD ) { requests = delete( requests, number, 1 ); save_me(); return 1; } } return 0; } /* add_request() */