#pragma ident	"@(#)elbowssocial.html	1.1	08/01/99 elboid.h"

struct activity {
	char		*name;		/* name of activity */
	unsigned char	phys;		/* physical demands	(0-100) */
	unsigned char	ment;		/* mental demands	(0-100) */
	unsigned char	psyc;		/* psychic demands	(0-100) */
	unsigned	flags;		/* flags */
	struct activity	*next;		/* ptr to next */
	};

/* note:  "requires strength" or "requires brains" are subsumed into
 * the demands variables.
 */

/* bit definitions for activity flags */

/* Note:  "requires a head" below refers to use of a head as
 * a manipulative organ, not a mental requirement.
 */

#define	ARM		0x00000001	/* requires an arm */
#define	ARMS		0x00000002	/* requires arms */
#define	LEG		0x00000004	/* requires a leg */
#define	LEGS		0x00000008	/* requires legs */
#define	HAND		0x00000010	/* requires a hand */
#define	HANDS		0x00000020	/* requires hands */
#define	FOOT		0x00000040	/* requires a foot */
#define	FEET		0x00000080	/* requires feet */
#define	HEAD		0x00000100	/* requires a head */
#define	VISION		0x00000200	/* requires vision */
#define	HEARING		0x00000400	/* requires hearing */
#define	BALANCE		0x00000800	/* requires balance */
#define	WATER		0x00001000	/* involves water */
#define	DANGER		0x00002000	/* involves danger */
#define	BELOWGROUND	0x00010000	/* includes going below ground */
#define	ABOVEGROUND	0x00020000	/* includes going above ground */
#define	PROPS		0x00100000	/* props, tools, or equipment req'd */
#define	CLOTHING	0x00200000	/* special clothing desirable */
#define	SOLITARY	0x01000000	/* can be done alone */
#define	PAIR		0x02000000	/* can by done in pairs */
#define	SMALLGROUP	0x04000000	/* can be done in small groups */
#define	LARGEGROUP	0x08000000	/* can be done in large groups */
#define	EXPLANATION	0x10000000	/* requires explanation */
#define	TRAINING	0x20000000	/* requires training to do */
#define	PRACTICE	0x40000000	/* requires practice to do */
#define	SIMULATION	0x80000000	/* requires simulation to do */

/* some example activity flag bits (non-PC) */

#define	CHESS		0x12000000
#define	SPELUNKING	0x3e112004
#define	SKYDIVING	0xfc32200c
#define	BIKING		0x3f100a55

struct coord {
	char		dir;		/* N, E, W, or S */
	unsigned char	latd;		/* degrees */
	unsigned char	latm;		/* minutes */
	double		lats;		/* seconds */
	};

struct latlong {
	struct coord	lat;		/* latitude */
	struct coord	long;		/* longitude */
	};

struct addr {
	char		*mname;		/* USPS mail name */
	char		*name;		/* real name */
	char		*nick;		/* nick name */
	char		*street1;	/* street address line 1 */
	char		*street2;	/* street address line 2 */
	char		*city;		/* city */
	char		*state;		/* state/province */
	char		*postco;	/* zip or postal code */
	struct latlong	latlong;	/* latitude and longitude */
	};

struct elboid {
	struct elboid	*curso;		/* current significant other list */
	struct elboid	*lastso;	/* previous SO list */
	struct elboid	*friends;	/* friends list */
	struct elboid	*enemies;	/* enemies list */
	unsigned	ggender;	/* genetic gender */
	unsigned	pgender;	/* physical gender */
	unsigned	mgender;	/* mental gender */
	unsigned	genderp;	/* gender preference (sexual) */
	unsigned	sexuality	/* sexuality */
	long		age;		/* age (in earth solar years) */
	unsigned short	height;		/* height (millimetres) */
	unsigned short	weight;		/* weight (grammes) */
	unsigned char	skincolor;	/* skin color (pantone) */
	unsigned char	eyecolor;	/* eye color (pantone) */
	unsigned char	haircolor;	/* hair color (pantone) */
	unsigned char	hairlen;	/* hair length (millimetres) */
	struct geek	geek;		/* geek code */
	struct activity	*hobby;		/* hobby list */
	unsigned	homeno;		/* home phone */
	unsigned	workno;		/* work phone */
	unsigned	pagerno;	/* pager number */
	unsigned	cellno;		/* cellular number */
	struct addr	home;		/* home address */
	struct addr	work;		/* work address */
	char		*name;		/* real life name */
	char		*nick;		/* nickname */
	char		*emailp;	/* email address (personal) */
	char		*emailw;	/* email address (work) */
	struct elboid	*next;		/* pointer to next */
	};

/* gender bits (incredibly non-PC) */

#define	MALE		0x01		/* male property */
#define	FEMALE		0x02		/* female property */
#define	NEUTER		0x00		/* neither gender property */
#define	GENDERMASK	0x03		/* mask for gender bits */
#define	GENITALIA	0x10		/* pertains to genitalia (vagina) */
#define	SECONDARY	0x20		/* secondary characteristics (tits) */
#define	DRESS		0x40		/* clothing (dress) */
#define	TERTIARY	0x80		/* tertiary (baldness, body fat %) */

/* sexuality bits */

/* bits are laid out like NpNaDpDa, where:
 * Np is nude passive activity bits	(being kissed nude)
 * Na is nude active activity bits	(kissing nude)
 * Dp is dressed passive activity bits	(being kissed)
 * Da is dressed active activity bits	(kissing)
 */

#define	LOOKING		0x01		/* doesn't squick at a glance */
#define	TOUCHING	0x02		/* handholding */
#define	HUGGING		0x04		/* hugging */
#define	KISSING		0x08		/* kissing */
#define	TONGUEKISSING	0x10		/* "french" kissing */
#define	GENITAL_GENITAL	0x20		/* intercourse */
#define	ORAL_GENITAL	0x40		/* cunnilingus, fellatio */
#define	ANAL		0x80		/* anal intercourse, rimming */

/* macros to position sexuality bits */

#define	ACTIVE(sex)	(sex)
#define	PASSIVE(sex)	(sex << 8)
#define	DRESSED(sex)	(sex)
#define	NUDE(sex)	(sex << 16)

Naturally, the friends in question had comments...


You left out facial hair...  (just the first thing that
came to mind...)

Cute, though.

really bored one night, spam?

:)

He must have been, or he'd have noticed that one needs a non-intrusive list
for current and previous S.O.'s; many elboids have several of each at any
one time, so a single pointer is insufficient, and an intrusive list would
run into trouble when the lists overlap, as they so often do.

Also, it would be much more useful if it were in SQL.

:-)#

Yah...

I bet... 
Now PROGRAM IT!

Hee hee...

Client Response SUCKS!!!

Love,
The completely insane...

> Subject: elboid database structure
> 
> #include	<noflame.h>

That trick NEVER works!!

> 	long		age;		/* age (in earth solar years) */
> 	unsigned char	hairlen;	/* hair length (millimetres) */

BZZZT!!!  *My* hair is > 255 mm long, and I'm not even *close* to
having the longest...

>> long		age;	    /* age (in earth solar years) */
>> unsigned char	hairlen;    /* hair length (millimetres) */
	
> BZZZT!!!  *My* hair is > 255 mm long, and I'm not even *close* to
> having the longest...
	
  Obviously, "hairlen" should be a long variable.


John Rehwinkel
spam@vitriol.com