/* /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);
}