#define Can_RPTEL(x) OOREF(x,TC_RPTEL(x), TC_RPTEL(x))
#define Can_BCREATE(x) (OOREF(x,div_powover(x,x, "BCreate"), div_powover(ooref, ooref, "BCreate")))
#define See_All(x) (God(x))
-#define CanNewpass(x,y) OOREF(x,div_powover(x,y,"Newpass"), div_powover(ooref,y,"Newpass"))
+#define CanNewpass(x,y) OOREF(x,div_powover(x,y,"Newpass"), div_powover(ooref,y,"Newpass")) || OOREF(x,div_powover(x,y,"BCreate"),div_powover(x,y,"BCreate"))
/* #define CanSee(x,y) (God(x) || div_powover(x,y,POW_SEE_ALL)) */
#define Prived(x) OOREF(x,div_powover(x,x,"Privilege"),div_powover(ooref,ooref,"Privilege"))
#define Priv_Who(x) (OOREF(x,div_powover(x,x,"PrivWho"),div_powover(ooref,ooref, "PrivWho")) || Site(x))
int
powc_bcreate(int plev __attribute__ ((__unused__)), dbref who, dbref what)
{
- if (!div_powover(who, who, "Builder"))
+ if (!has_power(what, "Builder"))
return 0;
return (LEVEL(who) >= LEVEL(what));
}
((victim = match_result(player, name, TYPE_DIVISION, MAT_ABSOLUTE | MAT_NEIGHBOR | MAT_NEAR | MAT_ENGLISH)) == NOTHING ||
Typeof(victim) != TYPE_DIVISION )) {
notify(player, T("No such player or division."));
- } else if(CanNewpass(player, victim)
- || (Can_BCREATE(player) && (has_flag_by_name(victim, "BUILDER",
- TYPE_PLAYER))
- && (LEVEL(player) >= LEVEL(victim)))) {
- if(Typeof(victim) != TYPE_DIVISION && Typeof(victim) != TYPE_PLAYER) {
- notify(player, "Wtf happened?");
- return;
- }
+ } else if(CanNewpass(player, victim)) {
if (*password != '\0' && !ok_password(password)) {
/* Wiz can set null passwords, but not bad passwords */
notify(player, T("Bad password."));