/**
* This handler is for the control of player houses.
* @author Pinkfish
* @started Fri Jun 23 22:50:02 PDT 2000
*/
#include <nomic_system.h>
inherit "/handlers/inherit/citizens";
inherit "/handlers/inherit/nomic_rules";
private mapping _new_rules;
private mapping _new_citizens;
void create() {
_new_rules = ([ ]);
_new_citizens = ([ ]);
citizens::create();
nomic_rules::create();
} /* create() */
/**
* This method puts a new rule up for voting. It is first placed into
* the hands of the magistrates, then into the hands of the players.
* @param area the area for the rule to be voted on in
* @param type the type of the rules
* @param text the text associated with the new rule
* @return 1 on success, 0 on failure
*/
int add_new_rule_for_voting(string area, int type, string creator,
string text) {
class new_nomic_rule fluff;
if (!is_magistrate_of(area, creator)) {
return 0;
}
fluff = new(class new_nomic_rule);
fluff->type = NOMIC_TYPE_RULE_ADD;
flkuff->rule = new(class nomic_rule);
fluff->rule->creator = creator;
fluff->rule->text = text;
fluff->rule->type = type;
fluff->comments = ({ });
fluff->voted = ({ });
fluff->state = NOMIC_STATE_COUNCIL_DISCUSS;
fluff->date_added = time();
fluff->date_event = time();
fluff->yes_votes = 0;
fluff->no_votes = 0;
_new_rules[area] += ({ fluff });
return 1;
} /* add_new_rule_for_voting() */
/**
* This method puts up a request to move a rule from one type to another.
* @param area the area to do the move in
* @param rule_no the rule number to move
* @param type the type to move the rule to
* @param creator the creator of this request
* @return 1 on success, 0 on failure
*/
int add_move_rule_type(string area, int rule_no, int type, string creator) {
class new_nomic_rule fluff;
class nomic_rule bing;
bing = query_nomic_rule(area, rule_no);
if (!bing) {
return 0;
}
if (bing->type == type) {
return 0;
}
fluff = new(class new_nomic_rule);
fluff->type = NOMIC_TYPE_RULE_MOVE;
fluff->rule = bing;
fluff->new_rule_type = type;
fluff->comments = ({ });
fluff->voted = ({ });
fluff->state = NOMIC_STATE_COUNCIL_DISCUSS;
fluff->date_added = time();
fluff->date_event = time();
fluff->yes_votes = 0;
fluff->no_votes = 0;
_new_rules[area] += ({ fluff });
return 1;
} /* add_move_rule_type() */
/**
* This method adds in a request to ammend a rule.
* @param area the area to put the ammendment in
* @param rule_no the rule to ammend
* @param ammendment the ammendment text
* @param creator the person doing the ammendment
*/
int add_rule_ammendment(string area, int rule_no, string ammendement,
string creator) {
class new_nomic_rule fluff;
class nomic_rule bing;
class nomic_ammendment ammend;
bing = query_nomic_rule(area, rule_no);
if (!bing) {
return 0;
}
fluff = new(class new_nomic_rule);
fluff->type = NOMIC_TYPE_RULE_AMMEND;
fluff->rule = bing;
fluff->comments = ({ });
fluff->voted = ({ });
fluff->state = NOMIC_STATE_COUNCIL_DISCUSS;
fluff->date_added = time();
fluff->date_event = time();
fluff->yes_votes = 0;
fluff->no_votes = 0;
_new_rules[area] += ({ fluff });
} /* add_rule_ammendment() */