/*  /lib/donate.c
 *  a donation box inheritable
 *  created by BillGates@Dead Souls 961023
 */

#include "include/donate.h"
#include <lib.h>

private int TotalAssets;
private string LocalCurrency, Owner;

static void create(){
    this_object()->AddSave( ({ "TotalAssets" }) );
    TotalAssets = 0;
}

static void init(){
    if( (string)this_player()->ClassMember((string)GetOwner()) ||
      (string)this_player()->GetClan() == (string)GetOwner() ){
        add_action( (: eventDonate :) , "donate" );
    }
}

string GetLong(string str){
    string ret = "\nIt currently contains "+TotalAssets+" " +
    "coins and bills.";
    if(TotalAssets) return ret;
    else return "";
}

string SetLocalCurrency(string currency){
    return (LocalCurrency = currency);
}

string GetLocalCurrency(){return LocalCurrency;}

string SetOwner(string owner){return (Owner = owner);}

string GetOwner(){return Owner;}   

int AddAssets(int amount){
    TotalAssets += amount;
    return 1;
}

int GetAssets(){return TotalAssets;}   

int eventDonate(string amt, string type){
    int amount;
    object tp = this_player();   

    if(sscanf(amt,"%d", amount) < 1){
        write("That isn't a proper amount.");
        return 1;
    }

    if(!valid_currency(type)){
        write("That isn't a valid currency.");
        return 1;
    }

    if(!amount){
        tp->eventPrint("Donate how much?\n");
        return 0;
    }   
    if(amount < 0){
        tp->eventPrint("Nice try!\n");
        return 0;
    }
    if((int)tp->GetCurrency(type) < amount){
        tp->eventPrint("You don't have that much " + type + "!\n");
        return 0;
    }
    tp->AddCurrency(type, -amount);
    AddAssets(amount);
    tp->eventPrint(GetOwner() + " is grateful "
      "for your donation.");
    if(living(this_object())) this_object()->eventForce("say Thank you!");
    return 1;
}
