only specific individuals.
See also: @haven
+& LOUD
+ Flag: LOUD (all types)
+
+ A LOUD object overrides speech, channel speech, and interaction
+ locks. This flag can only be set by Privileged players.
& TRUST
& INHERIT
/* Can guy talk? */
#define Mute(x) (has_flag_by_name(x, "MUTE", TYPE_THING | TYPE_PLAYER | TYPE_ROOM))
#define IsMuted(x,y) (Mute(x) || Mute(Location(x)))
-#define CanSpeak(x,y) (!Mute(x) && (Admin(x) || (!Mute(y) && eval_lock(x, y, Speech_Lock))))
+#define CanSpeak(x,y) (!Mute(x) && (Admin(x) || Loud(x) || (!Mute(y) && eval_lock(x, y, Speech_Lock))))
/******* Player toggles */
#define Connected(x) (IS(x, TYPE_PLAYER, "CONNECTED")) /* 0x200 */
#define Inherit(x) (has_flag_by_name(x, "INHERIT", TYPE_THING|TYPE_EXIT|TYPE_ROOM))
#define Light(x) (has_flag_by_name(x, "LIGHT", NOTYPE))
#define LinkOk(x) (has_flag_by_name(x, "LINK_OK", NOTYPE))
+#define Loud(x) (has_flag_by_name(x, "LOUD", NOTYPE))
#define Mistrust(x) (has_flag_by_name(x, "MISTRUST", TYPE_THING|TYPE_EXIT|TYPE_ROOM))
#define NoCommand(x) (has_flag_by_name(x, "NO_COMMAND", NOTYPE))
#define NoWarn(x) (has_flag_by_name(x, "NOWARN", NOTYPE))
(eval_chan_lock(c,p,CLOCK_JOIN)))
#define Chan_Can_Speak(c,p) \
(Chan_Can_Access(c,p) && \
- (eval_chan_lock(c,p, CLOCK_SPEAK)))
+ (Loud(p) || eval_chan_lock(c,p, CLOCK_SPEAK)))
#define Chan_Can_Cemit(c,p) \
(!Channel_NoCemit(c) && Chan_Can_Speak(c,p))
#define Chan_Can_Modify(c,p) \
/* Can from pass to's @lock/interact? */
#define Pass_Interact_Lock(from,to) \
- (Can_Pemit(from, to) || eval_lock(from, to, Interact_Lock))
+ (Can_Pemit(from, to) || Loud(from) || eval_lock(from, to, Interact_Lock))
/* How many pennies can you have? */
#define TC_Max_Pennies(p) (Guest(p) ? MAX_GUEST_PENNIES : MAX_PENNIES)
F_PRIVILEGE);
add_flag("ORPHAN", 'i', NOTYPE, F_ANY, F_ANY);
add_flag("TRACK_MONEY", '\0', TYPE_PLAYER, F_ANY, F_ANY);
+ add_flag("LOUD", '\0', NOTYPE, F_PRIVILEGE, F_ANY);
add_flag("INPROGRAM", '\0', TYPE_PLAYER, F_INTERNAL, F_INTERNAL);
add_flag("BUILDER", '\0', TYPE_PLAYER, F_PRIVILEGE, F_PRIVILEGE);
add_flag("AUTH_PARENT", '\0', NOTYPE, F_PRIVILEGE, F_PRIVILEGE);