// /daemon/mudlib/economy_d.c
// from the Nightmare Mudlib
// a daemon to handle currenciy inflation
// created by Descartes of Borg 931114
#include <std.h>
#include <privs.h>
#include <save.h>
#include <clock.h>
inherit DAEMON;
private mapping Currencies;
int LastInflation;
void create() {
string *borg;
float temps, tmp;
int i;
daemon::create();
set_no_clean(1);
Currencies = ([]);
restore_object(SAVE_ECONOMY);
i = sizeof(borg = keys(Currencies));
temps = percent(time()-LastInflation, YEAR)* 0.01;
while(i--) {
tmp = temps * Currencies[borg[i]]["inflation"];
Currencies[borg[i]]["rate"] += tmp*Currencies[borg[i]]["rate"];
}
LastInflation = time();
save_object(SAVE_ECONOMY);
}
void add_currency(string type, float rate, float infl, float wt) {
if(!((int)master()->valid_apply(({ PRIV_CMDS })))) return;
if(!mapp(Currencies)) Currencies = ([]);
if(!type || !rate || !infl || !wt || Currencies[type]) return;
Currencies[type] = ([ "rate":rate, "inflation":infl, "weight":wt ]);
save_object(SAVE_ECONOMY);
}
void change_currency(string type, string key, float x) {
if(!((int)master()->valid_apply( ({ PRIV_CMDS }) ))) return;
if(!mapp(Currencies)) Currencies = ([]);
if(!type || !Currencies[type] || !key || !x) return;
if(!Currencies[type][key]) return;
Currencies[type][key] = x;
save_object(SAVE_ECONOMY);
}
float __Query(string type, string key) {
if(!Currencies[type]) return 0.0;
else return Currencies[type][key];
}
string *__QueryCurrencies() { return keys(Currencies); }