/*
* Some useful macros
*/
#define clear_applicants() _call_apps_clear = \
call_out((: _applicants = 0 :), CLEAR_DELAY)
#define clear_history() _call_hist_clear = \
call_out((: _history = 0 :), CLEAR_DELAY)
#define clear_new_policies() _call_newpols_clear = \
call_out((: _new_policies = 0 :), CLEAR_DELAY)
#define clear_policies() _call_pols_clear = \
call_out((: _policies = 0 :), CLEAR_DELAY)
#define save_applicants() _call_apps = \
call_out((: do_save_applicants() :), SAVE_DELAY);
#define save_hist() _call_hist = \
call_out((: do_save_hist() :), SAVE_DELAY);
#define save_new_policies() _call_newpols = \
call_out((: do_save_new_policies() :), SAVE_DELAY);
#define save_policies() _call_pols = \
call_out((: do_save_policies() :), SAVE_DELAY);
/*
* Prototypes
* Where a function exists outside of office.c, the relevant .c file is indicated
*/
void add_applicant(string,string); //applications.c
private void add_baddie( string, string, string); //baddies.c
private void add_board_message(string, string); //admin.c
private void add_chart_cabinet(string, int); //stock.c
private void add_declined(string); //applications.c
private void add_employee(string); //personnel.c
protected void add_manager_exit(string, string);
private void add_policy(string); //policies.c
void add_policy_suggest(string, string, string, int); //policies.c
private void add_vote(string, int); //applications.c
private void adjust_bonus(string, int); //admin.c
void adjust_bought(string, int); //stock.c
private void adjust_profit(string, int); //admin.c
void adjust_sold(string, int); //stock.c
void adjust_takings(int); //admin.c
string badge_list(); //lists.c
void calc_bonus(); //admin.c
int calc_pay(); //admin.c
private string cap_name(string); //admin.c
void check_hire_list(); //applications.c
int check_manager(string); //admin.c
void confirm_cabinet(string, int); //cabinets.c
private void demote(string, string); //personnel.c
string directions_to(string); //admin.c
private int do_ban(mixed *); //baddies.c
private int do_bank(mixed); //emp_cmd.c
int do_cancel(); //applications.c
private int do_chart(mixed *, string); //stock.c
private int do_check(); //cabinets.c
private int do_claim(string); //emp_cmd.c
private int do_clock(string); //emp_cmd.c
int do_commend(string); //personnel.c
private int do_confirm(); //applications.c
int do_demote(string); //personnel.c
int do_fire(mixed *); //personnel.c
int do_leave(mixed *); //personnel.c
int do_list(); //lists.c
int do_logs(mixed *, string); //logging.c
private int do_memo(); //memo.c
private int do_office(); //lists.c
private int do_policy_vote(string, string, string); //policies.c
private int do_promote(string); //personnel.c
int do_remove(); //cabinets.c
int do_rent(); //cabinets.c
private int do_resign(); //personnel.c
int do_retire(); //personnel.c
private void do_save(); //save.c
private void do_save_applicants(); //save.c
private void do_save_emps(); //save.c
private void do_save_hist(); //save.c
private void do_save_new_policies(); //save.c
private void do_save_policies(); //save.c
int do_set(mixed *, string); //admin.c
int do_suspend(mixed *); //personnel.c
int do_transfer(mixed *); //admin.c
int do_unban(string); //baddies.c
int do_vote(mixed *, string); //applications.c
int do_warn(mixed *); //personnel.c
private void employee_log(string, string); //logging.c
string employees_clocked_in(); //lists.c
private void end_memo(string,string); //memo.c
private void fire_them(string, string, string); //personnel.c
mapping get_applicants();
mapping get_baddies();
string *get_employees();
string *get_managers();
mapping get_new_policies();
mapping get_policies(int);
string *get_retired();
string get_stock_policy(); //policies.c
string *get_supervisors();
private void hire(string); // personnel.c
private string list_stuff(string); //lists.c
private void load_applicants(); //admin.c
private void load_history(); //admin.c
private void load_new_policies(); //admin.c
private void load_policies(); //admin.c
private void mail_hirees(); //applications.c
private void monthly_review(); //review.c
int num_employees_in();
private void put_on_list(string); //stock.c
int query_applicant(string);
int query_ave(string); //stock.c
int query_baddie(string);
int query_bonus();
int query_buy(string); //stock.c
int *query_cabinet(string); //cabinets.c
int query_cabinet_used(int); //cabinets.c
string query_channel();
string query_counter();
void query_creator(string);
int query_declined(string);
int query_employee(string );
mapping query_employees();
string *query_list_array();
string query_list_string();
int query_manager(string);
int query_max(string); //stock.c
int query_maxemp();
string query_mgr_office();
int query_num_cabinets();
int query_on_list(string); //stock.c
int query_pay();
string query_place();
int query_policy(string);
int query_profit();
string query_proprietor();
int query_retired(string);
int query_sell(string); //stock.c
string query_shop_front();
string query_shop_name();
string query_shopkeeper();
int query_stock(string);
string query_storeroom();
int query_supervisor(string);
private string query_worked(string); //personnel.c
private void remove_applicant(string); //applications.c
private void remove_baddie(string); //baddies.c
private void remove_chart_cabinet(string, int); //cabinets.c
private void remove_declined(string); //applications.c
private void remove_employee(string); //admin.c
private void remove_policy(string); //policies.c
private void remove_retired(string); //admin.c
private void reset_employee(string, int); //admin.c
mixed *restore_register(); //admin.c
private void review_employees(); //review.c
private void rm_cab(); //cabinets.c
protected void save_emps();
private void save_list(); //save.c
protected void save_me();
void save_register(mixed *); //save.c
private void save_times(); //save.c
private void send_memo(string, string, string); //memo.c
private void set_buy(string, int); //stock.c
protected void set_channel(string, int);
protected void set_counter(string);
protected void set_creator(string);
protected void set_directions(string, string, string);
private void set_emp_time(string); //personnel.c
private void set_employee(string, int); //admin.c
private void set_max(string, int); //stock.c
protected void set_place(string);
protected void set_proprietor(string);
private void set_sell(string, int); //stock.c
protected void set_shop_front(string);
protected void set_shop_name(string);
protected void set_shopkeeper(string);
protected void set_stock_policy(string);
protected void set_storeroom(string);
protected void set_very_short(string);
void shop_log(int, string, string, int); // logging.c
string shop_very_short();
void summon_shopkeeper(); //admin.c
private void take_off_list(string); //stock.c
private void update_averages(); //stock.c
void view_record(string,string); //personnel.c
private void write_memo(string); //memo.c
/*
* Patterns used within add_commands
*/
/* Office chart command */
#define CHART_ADDITEM "add <string'item'>"
#define CHART_REMITEM "remove <string'item'>"
#define CHART_MAXITEM "max <string'item'> <number>"
#define CHART_BUYITEM "buy <string'item'> <number>"
#define CHART_SELLITEM "sell <string'item'> <number>"
#define CHART_ASSIGN_ITEM "assign <string'item'> <number'cabinet number'>"
#define CHART_UNASSIGN_ITEM "unassign <string'item'> <number'cabinet number'>"
/* Offices logs command */
#define LOG_BLANK ""
#define LOG_NUMBER "<number>"
#define LOG_MGR "{personnel|accounts|chart}"
#define LOG_CHART "chart"
/* Mgr Office list command */
#define LIST_BLANK ""
#define LIST_CHOICE "{employees|applicants|baddies}"
/* Mgr Office set command */
#define SET_EMPS "maximum <number> [employees]"
#define SET_PAY "pay <number'amount'> <string'type'>"
/* Mgr Office vote command */
#define VOTE_APPLICANT "<word'applicant'> {y|n|a}"
#define VOTE_POLICY "policy <word'name'> {y|n}"
/* Mgr Office view command */
#define VIEW_EMP "<string'employee'>"
#define VIEW_APP "application [by] <string'applicant'>"
/* Mgr Office policy command */
#define POLICY_SUGGEST "suggest {manager|shop} <word'policy'>"
#define POLICY_REMOVE "remove <word'policy'>"
/* Stockroom list command */
#define LIST_CABINET "cabinet <number'cabinet'>"
#define LIST_ITEM "<string'item'>"
#define LIST_ITEM_CABINET "<string'item'> in cabinet <number'cabinet'>"