Bucket has trouble grammaring properly when he doesn't know the gender of people he's talking to. Here are some ideas to fix this.
Now, maybe his current inability to use gendered pronouns is a good thing and we should continue to transform English to be more gender-neutral. But in the meantime, maybe it wouldn't hurt to have people be able to tell him their gender.
Gender in society is an incredibly complicated issue. For the purposes of this, we are not teaching Bucket about peoples' actual genders, but merely by which pronoun they wish to be referred to.
 Grammatical Genders
The relevant grammatical genders are:
|Grammatical Gender||Subjective||Objective||Reflexive||Possessive Pronoun||Possessive Determiner|
Everyone defaults to "androgynous". If someone says:
Bucket: I am <something>.
and if <something> matches:
- a subjective/objective pronoun with or without an article (a her, a him, a she, she, her, etc)
- the name of a gender (male, female, androgynous)
- A string indicating that they want to be referred to as a random gender (perhaps "a random gender"?)
and that user is logged in (should this be necessary?), then Bucket stores or updates that person's gender in a table.
Anyone abusing this system to set a gender for someone else should be banned.
A set of factoid variables should be created, one each for each of the types of pronoun. There might be aliases. A possible set would be:
|Subjective||Objective||Reflexive||Possessive Pronoun||Possessive Determiner|
|Variable||$subjective, $heshe, $shehe||$objective, $himher, $herhim||$reflexive, $himselfherself, $herselfhimself||$possessive, $hishers, $hershis||$determiner $hisher, $herhis|
When these are in a factoid, Bucket will use the gender of $someone (if it's in the factoid) or if there's no $someone then the person triggering it, and substitute the right pronoun. So you could have:
Bucket: kicks Bucket <action> punches $who right in $hisher kidney.
This would result in:
* airtank kicks Bucket. * Bucket punches airtank right in her kidney. * khmer kicks Bucket * Bucket punches khmer right in his kidney. * Hermeine kicks Bucket * Bucket punches Hermeine right in their kidney.
And if Cellshot had set a random gender:
* cellshot kicks Bucket * Bucket kicks Cellshot right in her kidney. * cellshot kicks Bucket * Bucket kicks Cellshot right in his kidney.
(randomgender people are randomly male or female, but never androgynous. If the factoid contains multiple pronoun variables, the random gender is consistent across an invocation of the factoid.)
Disambiguation should be possible, i.e.
- I don't understand this. -- Randall
- Okay, now I understand. Downvoted. See conversation:
18:35:49 <@relsqui> Randall: $who runs up to $someone and glues $who.hisher $newitem to $someone.reflexive face 18:36:08 <&Randall> Ah, disambiguation betwee $who and $someone. 18:36:23 <@relsqui> it's a good point, actually 18:36:26 <&Randall> I was thinking we'd just default to what I said -- if it includes $someone, use $someone's gender. 18:37:16 <&Randall> If we were going to disambiguate, I was thinking it would just attach it to the one that occurred nearest previously in the sentence. 18:37:32 <@relsqui> how would you do the above, then? 18:38:05 <&Randall> Well, that's a case that's pretty damn ambiguous in english anyway if the two people are of the same gender :P 18:38:33 <&Randall> I would rephrase the sentence rather than build more syntax -- this is already getting a little heavy on the new commands for a smaller and smaller number of cases. 18:38:39 <@relsqui> true 18:39:46 < snark> Randall: unrelated note - love the geocities tribute :D 18:39:54 < snark> (I was a little slow in checking today =P) 18:40:25 <&Randall> I just think people shouldn't be faced with a 500-page manual for how to write a coherent sentence in Bucket. 18:40:46 <&Randall> I'd rather just build a sensible default that's as complicated as we want to make the code, and let people work around it. 18:40:46 <@relsqui> yeah, certainly 18:41:27 <&Randall> Hell, for the longest time we had people escaping basic verbs. They can deal with pronoun constructions that are hugely confusing even to actual humans :) 18:45:37 <&Randall> But if you want to deal with factoids with both $who and $someone more complexly than just defaulting to $someone's pronoun, you can do what I suggested a moment ago.
 Find out gender
There should be a string to find out what Bucket thinks of your gender:
<Randall> Bucket: what is my gender? <Bucket> Grammatically, I refer to you as male. See http://wiki.xkcd.com/Bucket#Docs for information on setting this.
<Unbibium> Bucket: genders <Bucket> You are male; others are female, androgynous, inanimate, fullname, ...
<Unbibium> Bucket: what gender is Randall? <Bucket> Randall is male. <Unbibium> Bucket: what gender is problem-attic? <Bucket> problem-attic is inanimate. <Unbibium> Bucket: what gender is flyingferret? <Bucket> flyingferret is inanimate. <Unbibium> Bucket: what gender is relsqui? <Bucket> [appropriate admonition for too many gender requests, to prevent mining by trolls]
Or we could go the other way...
<Unbibium> Bucket: list all females. <Bucket> relsqui, zoe, BabsBunny, Randalette, MichelleObama, zelda, xkcdgirl92. <Unbibium> /msg zoe Hi, are you single and over 18 and live somewhere Southwest Airlines flies for under $120?
Or, we could counter-troll by having "list all females" list all the ops in the channel, starting with billygoat.