/***************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* *
* Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* *
* Ack 2.2 improvements copyright (C) 1994 by Stephen Dooley *
* *
* In order to use any part of this Merc Diku Mud, you must comply with *
* both the original Diku license in 'license.doc' as well the Merc *
* license in 'license.txt'. In particular, you may not remove either of *
* these copyright notices. *
* *
* _/ _/_/_/ _/ _/ _/ ACK! MUD is modified *
* _/_/ _/ _/ _/ _/ Merc2.0/2.1/2.2 code *
* _/ _/ _/ _/_/ _/ (c)Stephen Zepp 1998 *
* _/_/_/_/ _/ _/ _/ Version #: 4.3 *
* _/ _/ _/_/_/ _/ _/ _/ *
* *
* http://ackmud.nuc.net/ *
* zenithar@ackmud.nuc.net *
* Much time and thought has gone into this software and you are *
* benefitting. We hope that you share your changes too. What goes *
* around, comes around. *
***************************************************************************/
/***************************************************************************
* _/_/_/_/ _/ _/ _/_/_/_/ _/_/_/_/ AckFUSS is modified ACK!MUD 4.3.1 *
* _/ _/ _/ _/ _/ copyright Matt Goff (Kline) 2008 *
* _/_/ _/ _/ _/_/_/_/ _/_/_/_/ *
* _/ _/ _/ _/ _/ Support for this code is provided *
* _/ _/_/_/_/ _/_/_/_/ _/_/_/_/ at www.ackmud.net -- check it out!*
***************************************************************************/
/*
* money.h -- handles multi unit money transactions.
*/
#ifndef DEC_TYPEDEFS_H
#include "typedefs.h"
#endif
#define DEC_MONEY_H 1
#define MAX_CURRENCY 8
#define EXCHANGE_COST .1
#define CURRENCY_NAMES "bit bits moon moons crown crowns crescent crescents pentacle pentacles karant karants mark marks sunburst sunbursts"
struct currency_type
{
char *keyword;
char *singular;
char *plural;
float unit_weight; /* in hundreths of a weight unit */
int exchange_val; /* this is in base units, your lowest money form */
};
struct money_type
{
bool is_free;
MONEY_TYPE *next;
MONEY_TYPE *prev;
#ifdef DEBUG_MONEY
char *money_key;
#endif
int cash_unit[MAX_CURRENCY];
};
int money_to_value( CHAR_DATA * ch, char *argument );
int money_to_cost( char *money_list );
char *cost_to_money( int cost );
short money_lookup( char *money_name );
char *money_string( MONEY_TYPE * money );
char *unit_string( MONEY_TYPE * money );
void deposit_money( CHAR_DATA * ch, char *argument );
bool withdraw_money( CHAR_DATA * ch, char *argument );
int exchange_money( CHAR_DATA * ch, char *argument );
MONEY_TYPE *round_money( int base, bool round_up );
MONEY_TYPE *round_money_off( int base, short accuracy );
MONEY_TYPE *join_money( MONEY_TYPE * source, MONEY_TYPE * receiver );
void drop_money( CHAR_DATA * ch, char *argument );
bool get_money_room( CHAR_DATA * ch, char *argument );
bool get_money_obj( CHAR_DATA * ch, char *argument, OBJ_DATA * obj );
bool give_money( CHAR_DATA * ch, CHAR_DATA * victim, char *argument );
int money_value( MONEY_TYPE * money );
float money_weight( MONEY_TYPE * money );
char *take_best_coins( MONEY_TYPE * money, int cost );
extern const struct currency_type currency_table[MAX_CURRENCY];