X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=include%2Fchannel.h;fp=include%2Fchannel.h;h=63cb19c8709daddeaafa14cf3de4827a9d0f8ef2;hp=cad2de035ef81d6db02b0d4f65fea3f69f5fb434;hb=b8402b9ef585580454491088f9581a1c3a8ca8ef;hpb=13e67fb3455fe03d0102970788ff764a491df43c diff --git a/include/channel.h b/include/channel.h index cad2de0..63cb19c 100644 --- a/include/channel.h +++ b/include/channel.h @@ -66,10 +66,12 @@ typedef signed long long long64; #define ChannelExists(n) (0 != FindChannel(n)) #define CHFL_CHANOP 0x0001 /**< Channel operator */ -#define CHFL_VOICE 0x0002 /**< the power to speak */ -#define CHFL_DEOPPED 0x0004 /**< Is de-opped by a server */ -#define CHFL_SERVOPOK 0x0008 /**< Server op allowed */ -#define CHFL_ZOMBIE 0x0010 /**< Kicked from channel */ +#define CHFL_HALFOP 0x0002 /**< Channel operator */ +#define CHFL_VOICE 0x0004 /**< the power to speak */ + +#define CHFL_DEOPPED 0x0010 /**< Is de-opped by a server */ +#define CHFL_SERVOPOK 0x0020 /**< Server op allowed */ +#define CHFL_ZOMBIE 0x0040 /**< Kicked from channel */ #define CHFL_BURST_JOINED 0x0100 /**< Just joined by net.junction */ #define CHFL_BANVALID 0x0800 /**< CHFL_BANNED bit is valid */ #define CHFL_BANNED 0x1000 /**< Channel member is banned */ @@ -82,50 +84,55 @@ typedef signed long long long64; /**, In oob BURST, but was already * joined and voiced */ -#define CHFL_CHANNEL_MANAGER 0x10000 /**< Set when creating channel or using +#define CHFL_BURST_ALREADY_HALFOPPED 0x10000 + /**, In oob BURST, but was already + * joined and voiced + */ +#define CHFL_CHANNEL_MANAGER 0x40000 /**< Set when creating channel or using * Apass */ -#define CHFL_USER_PARTING 0x20000 /**< User is already parting that +#define CHFL_USER_PARTING 0x80000 /**< User is already parting that * channel */ -#define CHFL_DELAYED 0x40000 /**< User's join message is delayed */ -#define CHFL_INVISIBLE 0x80000 /**< User's join message is delayed */ +#define CHFL_DELAYED 0x100000 /**< User's join message is delayed */ +#define CHFL_INVISIBLE 0x200000 /**< User's join message is delayed */ -#define CHFL_OVERLAP (CHFL_CHANOP | CHFL_VOICE) +#define CHFL_OVERLAP (CHFL_CHANOP | CHFL_HALFOP | CHFL_VOICE) #define CHFL_BANVALIDMASK (CHFL_BANVALID | CHFL_BANNED) -#define CHFL_VOICED_OR_OPPED (CHFL_CHANOP | CHFL_VOICE) +#define CHFL_VOICED_OR_OPPED (CHFL_CHANOP | CHFL_HALFOP | CHFL_VOICE) /* Channel Visibility macros */ #define MODE_NULL 0 #define MODE_CHANOP CHFL_CHANOP /**< +o Chanop */ +#define MODE_HALFOP CHFL_HALFOP /**< +h Halfop */ #define MODE_VOICE CHFL_VOICE /**< +v Voice */ -#define MODE_PRIVATE 0x00004 /**< +p Private */ -#define MODE_SECRET 0x00008 /**< +s Secret */ -#define MODE_MODERATED 0x00010 /**< +m Moderated */ -#define MODE_TOPICLIMIT 0x00020 /**< +t Topic Limited */ -#define MODE_INVITEONLY 0x00040 /**< +i Invite only */ -#define MODE_NOPRIVMSGS 0x00080 /**< +n No Private Messages */ -#define MODE_KEY 0x00100 /**< +k Keyed */ -#define MODE_BAN 0x00200 /**< +b Ban */ -#define MODE_LIMIT 0x00400 /**< +l Limit */ -#define MODE_REGONLY 0x00800 /**< Only +r users may join */ -#define MODE_DELJOINS 0x01000 /**< New join messages are delayed */ -#define MODE_REGISTERED 0x02000 /**< Channel marked as registered (for future semantic expansion) */ -#define MODE_PERSIST 0x04000 /**< +z persistant channel */ -#define MODE_NOCOLOUR 0x08000 /**< no ANSI color codes */ -#define MODE_NOCTCP 0x10000 /**< no channel CTCPs */ -#define MODE_SAVE 0x20000 /**< save this mode-with-arg 'til later */ -#define MODE_FREE 0x40000 /**< string needs to be passed to MyFree() */ -#define MODE_BURSTADDED 0x80000 /**< channel was created by a BURST */ -#define MODE_UPASS 0x100000 -#define MODE_APASS 0x200000 -#define MODE_WASDELJOINS 0x400000 /**< Not DELJOINS, but some joins pending */ - -#define MODE_NOAMSGS 0x1000000 /**< No multi target messages */ -#define MODE_NONOTICE 0x2000000 /**< No channel notices */ -#define MODE_QUARANTINE 0x4000000 /**< No channel notices */ -#define MODE_ALTCHAN 0x8000000 /**< Alternative channel */ + +#define MODE_PRIVATE 0x10 /**< +p Private */ +#define MODE_SECRET 0x20 /**< +s Secret */ +#define MODE_MODERATED 0x40 /**< +m Moderated */ +#define MODE_TOPICLIMIT 0x80 /**< +t Topic Limited */ +#define MODE_INVITEONLY 0x100 /**< +i Invite only */ +#define MODE_NOPRIVMSGS 0x200 /**< +n No Private Messages */ +#define MODE_KEY 0x400 /**< +k Keyed */ +#define MODE_BAN 0x800 /**< +b Ban */ +#define MODE_LIMIT 0x1000 /**< +l Limit */ +#define MODE_REGONLY 0x2000 /**< Only +r users may join */ +#define MODE_DELJOINS 0x4000 /**< New join messages are delayed */ +#define MODE_REGISTERED 0x8000 /**< Channel marked as registered (for future semantic expansion) */ +#define MODE_PERSIST 0x10000 /**< +z persistant channel */ +#define MODE_NOCOLOUR 0x20000 /**< no ANSI color codes */ +#define MODE_NOCTCP 0x40000 /**< no channel CTCPs */ +#define MODE_SAVE 0x80000 /**< save this mode-with-arg 'til later */ +#define MODE_FREE 0x100000 /**< string needs to be passed to MyFree() */ +#define MODE_BURSTADDED 0x200000 /**< channel was created by a BURST */ +#define MODE_UPASS 0x400000 +#define MODE_APASS 0x800000 +#define MODE_WASDELJOINS 0x1000000 /**< Not DELJOINS, but some joins pending */ +#define MODE_NOAMSGS 0x2000000 /**< No multi target messages */ +#define MODE_NONOTICE 0x4000000 /**< No channel notices */ +#define MODE_QUARANTINE 0x8000000 /**< No channel notices */ +#define MODE_ALTCHAN 0x10000000 /**< Alternative channel */ #define MODE_DEL 0x20000000 #define MODE_ADD 0x40000000 #define MODE_ACCESS 0x100000000LLU /**< ChanServ access */ @@ -134,12 +141,12 @@ typedef signed long long long64; #define MODE_SSLCHAN 0x800000000LLU /**< +S SSL Channel */ /** mode flags which take another parameter (With PARAmeterS) */ -#define MODE_WPARAS (MODE_CHANOP|MODE_VOICE|MODE_BAN|MODE_KEY|MODE_LIMIT|MODE_APASS|MODE_UPASS|MODE_ALTCHAN|MODE_ACCESS|MODE_NOFLOOD) +#define MODE_WPARAS (MODE_CHANOP|MODE_HALFOP|MODE_VOICE|MODE_BAN|MODE_KEY|MODE_LIMIT|MODE_APASS|MODE_UPASS|MODE_ALTCHAN|MODE_ACCESS|MODE_NOFLOOD) /** Available Channel modes */ -#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AcCbiklmMnNopsStuUvrDRzQu" : "cCbiklmMnNopsStuvrDRzQu" +#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AcCbhiklmMnNopsStuUvrDRzQu" : "cCbhiklmMnNopsStuvrDRzQu" /** Available Channel modes that take parameters */ -#define infochanmodeswithparams feature_bool(FEAT_OPLEVELS) ? "AbfkloUvFa" : "bfklovFa" +#define infochanmodeswithparams feature_bool(FEAT_OPLEVELS) ? "AbfhkloUvFa" : "bfhklovFa" #define HoldChannel(x) (!(x)) /** name invisible */ @@ -213,8 +220,9 @@ struct Membership { }; #define FLFL_CHANOP 0x01 -#define FLFL_VOICE 0x02 -#define FLFL_NOFLOOD 0x04 +#define FLFL_HALFOP 0x02 +#define FLFL_VOICE 0x04 +#define FLFL_NOFLOOD 0x08 struct MemberFlood { struct MemberFlood* next_memberflood; @@ -230,6 +238,8 @@ struct MemberFlood { #define IsBanValid(x) ((x)->status & CHFL_BANVALID) #define IsChanOp(x) ((x)->status & CHFL_CHANOP) #define OpLevel(x) ((x)->oplevel) +#define IsHalfOp(x) ((x)->status & CHFL_HALFOP) +#define IsChanOpOrHalfOp(x) ((x)->status & (CHFL_CHANOP | CHFL_HALFOP)) #define HasVoice(x) ((x)->status & CHFL_VOICE) #define IsServOpOk(x) ((x)->status & CHFL_SERVOPOK) #define IsBurstJoined(x) ((x)->status & CHFL_BURST_JOINED) @@ -423,6 +433,7 @@ extern void remove_user_from_channel(struct Client *sptr, struct Channel *chptr) extern void remove_user_from_all_channels(struct Client* cptr); extern int is_chan_op(struct Client *cptr, struct Channel *chptr); +extern int is_halfop(struct Client *cptr, struct Channel *chptr); extern int is_zombie(struct Client *cptr, struct Channel *chptr); extern int has_voice(struct Client *cptr, struct Channel *chptr); /*