/
Crimson2/alias/
Crimson2/area.tmp/
Crimson2/area.tmp/AnomalySpaceDock/
Crimson2/area.tmp/AnomalyStation/
Crimson2/area.tmp/AntHill/
Crimson2/area.tmp/ArcticTerrarium/
Crimson2/area.tmp/BuilderCity/
Crimson2/area.tmp/Dungeon/
Crimson2/area.tmp/MiningDock/
Crimson2/area.tmp/PipeSystem/
Crimson2/area.tmp/RattArea/
Crimson2/area.tmp/RobotFactory/
Crimson2/area.tmp/SilverDale/
Crimson2/area.tmp/StarshipFearless/
Crimson2/area.tmp/StationConduits/
Crimson2/area.tmp/TerrariumAlpha/
Crimson2/area.tmp/TerrariumBeta/
Crimson2/area.tmp/TestArea/
Crimson2/area.tmp/Void/
Crimson2/area/
Crimson2/area/AnomalySpaceDock/
Crimson2/area/AnomalyStation/
Crimson2/area/MiningDock/
Crimson2/area/PipeSystem/
Crimson2/area/SilverDale/
Crimson2/area/StationConduits/
Crimson2/area/Void/
Crimson2/board/
Crimson2/clone/
Crimson2/lib/
Crimson2/mole/
Crimson2/mole/mole_src/HELP/
Crimson2/player/
Crimson2/util/
Crimson2/wldedit/
Crimson2/wldedit/res/
/* send.h
 * this module contains routines related to sending messages to players
 */

extern void SendEchoOff(SOCK *sock);
extern void SendEchoOn(SOCK *sock);
extern void SendSmartColor(BYTE *str, SOCK *sock);
extern void SendPrompt(SOCK *sock);
extern void SendMainMenu(SOCK *sock);
extern void SendChooseAnsi(SOCK *sock);
extern void SendChooseExpert(SOCK *sock);
extern void SendChooseSex(SOCK *sock);
extern void SendChooseRace(SOCK *sock);
extern void SendChooseClass(SOCK *sock);
extern void SendShowCombo(SOCK *sock);
extern void SendRollAbilities(SOCK *sock);
extern BYTE SendThing(BYTE *str, THING *thing);
extern void SendChannel(BYTE *str, THING *thing, FLAG chanFlag);
extern void SendHint(BYTE *str, THING *thing);
extern void SendAll(BYTE *str);
extern void SendArray(ULWORD tList, LWORD tListSize, LWORD column, THING *thing);

#define SEND_ROOM       1<<0   /* everyone exect SRC and DST */
#define SEND_SRC        1<<1
#define SEND_DST        1<<2
#define SEND_VISIBLE    1<<3   /* action is a VISIBLE action hide if victim cant see SRC */
#define SEND_AUDIBLE    1<<4   /* action is an AUDIBLE action hide if the victim cant hear SRC */
#define SEND_CAPFIRST   1<<5   /* capitalize first letter, usefull for actions beginning with $n */
#define SEND_GROUP      1<<6   /* Send to the group that the src thing belongs to, but not SRC*/

/* system reserved */
#define SEND_PARTIALSRC 1<<7   /* can only partially see src */
#define SEND_PARTIALDST 1<<8   /* can only partially see src */

#define SEND_SELF       1<<9   /* send actions that we did to ourselves (normally hidden) */
#define SEND_HISTORY    1<<10   /* Add to the send history of the dest sockets */

extern BYTE *sendFlagList[];

extern void SendAction(BYTE *str, THING *srcThing, THING *dstThing, FLAG actionFlag);

/* further notes on SEND_VISIBLE/AUDIBLE
 * -If the action is strictly visible, then 
 *   + if they cant see the src, the victim will not see it at all
 *   + if they can partially see the src, the victim will get someone/something
 * -If the action is strictly audible, then the victim will not get the action at
 * all if they cant hear
 * -If the action is both audible and visible then the victim will get:
 *   + nothing if s/he is both deaf and and cant see src
 *   + Names replaced with Someone, if can hear but cant see.
 *   + business as usual if they cant hear, but can see.
 */

/* this should not be used to send stuff to sockets that may be at a prompt */
#define SEND(str, sock) QAppend(sock->sOut, str, Q_DONTCHECKSTR)
#define SENDARRAY(list, column, thing) SendArray((ULWORD)list, sizeof(*list), column, thing)