/* /lib/mayor.c
* From the Dead Souls Object Library
* Allows players to change their residence on the mud
* Created by Descartes of Borg 961019
* Version: @(#) mayor.c 1.3@(#)
* Last modified: 96/10/20
*/
#include <lib.h>
inherit LIB_SENTIENT;
static void EvaluateCitizenshipRequest();
int Tax = 0;
string LocalCurrency = "gold";
static void create() {
sentient::create();
SetRequestResponses(([ "citizenship" : (: EvaluateCitizenshipRequest :),
"help" : (: this_object()->eventForce("say You can request "
"citizenship from me.") :) ]));
}
mixed CanRequestCitizenship(object who) {
if( Tax > 0 ) {
int cost = (Tax);
if( who->GetCurrency(LocalCurrency) < cost ) {
this_object()->eventForce("say I'm sorry, but we have a new citizen tax of " + Tax + " " +
LocalCurrency + ".");
return 0;
}
}
if( who->GetTown() == GetTown() ) {
return "You are already a citizen of " + GetTown() + ".";
}
return 1;
}
mixed eventRequestCitizenship(object who) {
object array homies = filter(users(), (: $1->GetTown() == GetTown() :));
homies->eventPrint(who->GetName() + " is now a citizen of " + GetTown() +
".");
who->SetTown(GetTown());
who->eventPrint("You are now a citizen of " + GetTown() + ".");
if( Tax > 0 ) {
int cost = Tax;
who->AddCurrency(LocalCurrency, -cost);
this_object()->AddCurrency(LocalCurrency, cost);
this_object()->eventForce("say Congratulations, citizen!");
}
return 1;
}
static void EvaluateCitizenshipRequest() {
mixed tmp = CanRequestCitizenship(this_player());
if( tmp != 1 ) {
if( !tmp || tmp == 0 ) {
this_object()->eventForce("say Your request is denied.");
}
else {
this_player()->eventPrint(tmp);
}
return;
}
eventRequestCitizenship(this_player());
}
string GetLocalCurrency() {
return LocalCurrency;
}
static string SetLocalCurrency(string str) {
return (LocalCurrency = str);
}
int GetTax() {
return Tax;
}
static int SetTax(int x) {
return (Tax = x);
}