From 0d1688520003011abbcb9c37074f2c2dce88f72a Mon Sep 17 00:00:00 2001
From: scw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>
Date: Mon, 24 May 2004 00:31:48 +0000
Subject: Merge from scw.angel. *NOTE* Before running this revision, please
 read PttCurrent board        at telnet://ptt.cc or
 http://scwg.wiki.ptt.cc/-Angel

git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2014 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
---
 include/modes.h     | 13 +++++++++++++
 include/perm.h      |  7 ++++++-
 include/proto.h     | 16 +++++++++++++---
 include/pttstruct.h | 19 +++++++++++++++++++
 4 files changed, 51 insertions(+), 4 deletions(-)

(limited to 'include')

diff --git a/include/modes.h b/include/modes.h
index 8c06317a..a2de94a0 100644
--- a/include/modes.h
+++ b/include/modes.h
@@ -156,4 +156,17 @@ enum {STRIP_ALL = 0, ONLY_COLOR, NO_RELOAD};
 #define SIG_CHC         4
 #define SIG_DARK        5
 
+/* talk.c �����Ҧ� */
+#define WATERBALL_GENERAL 0
+#define WATERBALL_PREEDIT 1
+#define WATERBALL_ALOHA   2
+#define WATERBALL_SYSOP   3
+#define WATERBALL_CONFIRM 4
+#ifdef PLAY_ANGEL
+#define WATERBALL_ANGEL   5
+#define WATERBALL_ANSWER  6
+#define WATERBALL_CONFIRM_ANGEL 7
+#define WATERBALL_CONFIRM_ANSWER 8
+#endif
+
 #endif
diff --git a/include/perm.h b/include/perm.h
index 02c03d0f..d2788a59 100644
--- a/include/perm.h
+++ b/include/perm.h
@@ -20,7 +20,12 @@
 #define PERM_BBSADM       000000100000 /* BBSADM         */
 #define PERM_NOTOP        000000200000 /* ���C�J�Ʀ�]   */
 #define PERM_VIOLATELAW   000000400000 /* �H�k�q�r��     */
-#define PERM_NOOUTMAIL    000001000000 /* ���������~���H */
+
+#ifdef PLAY_ANGEL
+#define PERM_ANGEL        000001000000 /* ��������p�Ѩ� */
+#endif
+#define OLD_PERM_NOOUTMAIL    000001000000 /* ���������~���H */
+
 #define PERM_NOREGCODE    000002000000 /*�����\�{�ҽX���U*/
 #define PERM_VIEWSYSOP    000004000000 /* ��ı����       */
 #define PERM_LOGUSER      000010000000 /* �[��ϥΪ̦��� */
diff --git a/include/proto.h b/include/proto.h
index 206593cb..a3e6c557 100644
--- a/include/proto.h
+++ b/include/proto.h
@@ -456,7 +456,7 @@ char *genpasswd(char *pw);
 /* screen */
 void mouts(int y, int x, char *str);
 void move(int y, int x);
-void outs(char *str);
+void outs(const char *str);
 void clrtoeol(void);
 void clear(void);
 void refresh(void);
@@ -468,13 +468,13 @@ void redoscr(void);
 void clrtoline(int line);
 void standout(void);
 void standend(void);
-int edit_outs(char *text);
+int edit_outs(const char *text);
 void outch(unsigned char c);
 void rscroll(void);
 void scroll(void);
 void getyx(int *y, int *x);
 void initscr(void);
-void out_lines(char *str, int line);
+void out_lines(const char *str, int line);
 
 /* stuff */
 #define isprint2(ch) ((ch & 0x80) || isprint(ch))
@@ -541,6 +541,9 @@ int toconnect(char *host, int port);
 int toread(int fd, void *buf, int len);
 int towrite(int fd, void *buf, int len);
 #endif
+#ifdef PLAY_ANGEL
+void pressanykey_or_callangel(void);
+#endif
 
 /* syspost */
 int post_msg(char* bname, char* title, char *msg, char* author);
@@ -582,6 +585,13 @@ int isvisible_uid(int tuid);
 int friend_stat(userinfo_t *me, userinfo_t * ui);
 int call_in(userinfo_t *uentp, int fri_stat);
 int make_connection_to_somebody(userinfo_t *uin, int timeout);
+#ifdef PLAY_ANGEL
+int t_changeangel(void);
+void CallAngel(void);
+void SwitchBeingAngel(void);
+void SwitchAngelSex(int);
+int t_switchangel(void);
+#endif
 
 /* tmpjack */
 int reg_barbq(void);
diff --git a/include/pttstruct.h b/include/pttstruct.h
index f3f98de9..7a419c42 100644
--- a/include/pttstruct.h
+++ b/include/pttstruct.h
@@ -119,6 +119,16 @@ typedef struct userec_t {
 #define FAVNEW_FLAG     0x20   /* true if add new board into one's fav */
 #define FOREIGN         0x100  /* true if a foreign */
 #define LIVERIGHT       0x200  /* true if get "liveright" already */
+#define REJ_OUTTAMAIL   0x400 /* true if don't accept outside mails */
+#define REJECT_OUTTAMAIL (cuser.uflag2 & REJ_OUTTAMAIL)
+#define REJ_QUESTION    0x800 /* true if don't want to be angel for a while */
+#define REJECT_QUESTION (cuser.uflag2 & REJ_QUESTION)
+#define ANGEL_MASK      0x3000
+#define ANGEL_R_MAEL    0x1000 /* true if reject male */
+#define ANGEL_R_FEMAEL  0x2000 /* true if reject female */
+#define ANGEL_STATUS()  ((cuser.uflag2 & ANGEL_MASK) >> 12)
+#define ANGEL_SET(X)    (cuser.uflag2 = (cuser.uflag2 & ~ANGEL_MASK) | \
+                          ((X & 3) << 12))
 
 #define BTLEN      48             /* Length of board title */
 
@@ -234,6 +244,14 @@ typedef struct {
 #define FAVGMAX    32             /* Max groups of Myfavorite */
 #define FAVGSLEN    8		  /* Max Length of Description String */
 
+/* values of msgque_t::msgmode */
+#define MSGMODE_TALK      0
+#define MSGMODE_WRITE     1
+#ifdef PLAY_ANGEL
+#define MSGMODE_FROMANGEL 2
+#define MSGMODE_TOANGEL   3
+#endif
+
 typedef struct msgque_t {
     pid_t   pid;
     char    userid[IDLEN + 1];
@@ -250,6 +268,7 @@ typedef struct userinfo_t {
     unsigned char   active;         /* When allocated this field is true */
     unsigned char   invisible;      /* Used by cloaking function in Xyz menu */
     unsigned char   sockactive;     /* Used to coordinate talk requests */
+    unsigned char   angel;
     unsigned int    userlevel;
     unsigned char   mode;           /* UL/DL, Talk Mode, Chat Mode, ... */
     unsigned char   pager;          /* pager toggle, YEA, or NA */
-- 
cgit v1.2.3