return bags
}
+function sp_bid(who)
+{
+ return sp_nil[who] == 0 ? sp_bids[who] :
+ sp_nil[who] == 1 ? "nil" :
+ sp_nil[who] == 2 ? "blind" : "n/a"
+}
+
function sp_bidders( i, turn, bid, bids)
{
for (i = 0; i < 4; i++) {
turn = (sp_dealer + i) % 4
- if (sp_bids[turn] && !sp_nil[turn])
- bid = sp_order[turn] ":" sp_bids[turn]
- else if (sp_nil[turn] == 1)
- bid = sp_order[turn] ":" "nil"
- else if (sp_nil[turn] == 2)
- bid = sp_order[turn] ":" "blind"
- else
- continue
- bids = bids " " bid
+ if (bid = sp_bid(turn))
+ bids = bids " " sp_order[turn] ":" bid
}
gsub(/^ +| +$/, "", bids)
return bids
# Help
/^\.help [Ss]pades$/ {
say("Spades -- play a game of spades")
- say("Examples:")
+ say(".help game -- setup and administer the game")
+ say(".help play -- commands for playing spades")
+ say(".help auth -- control player authorization")
+ next
+}
+
+/^\.help game$/ {
say(".newgame [score] -- start a game to <score> points, default 500")
say(".endgame -- abort the current game")
say(".savegame -- save the current game to disk")
say(".loadgame -- load the previously saved game")
+ next
+}
+
+/^\.help play$/ {
say(".join -- join the current game")
say(".look -- look at your cards")
- say(".bid n -- bid for <n> tricks")
+ say(".bid [n] -- bid for <n> tricks")
+ say(".pass [card] -- pass a card to your partner")
say(".play [card] -- play a card")
- say(".score -- check the score")
- say(".tricks -- check how many trick have been taken")
+ say(".turn -- check whose turn it is")
say(".bids -- check what everyone bid")
+ say(".tricks -- check how many trick have been taken")
+ say(".score -- check the score")
+ next
+}
+
+/^\.help auth$/ {
+ say(".auth [who] -- display authentication info for a user")
+ say(".allow [who] -- allow another person to play on your behalf")
+ say(".deny [who] -- prevent a previously allowed user from playing")
+ say(".show -- display which users can play for which players")
next
}
}
/^\.bids$/ && sp_state ~ "(pass|play)" {
- say(sp_order[0] " bid " sp_bids[0] ", " \
- sp_order[2] " bid " sp_bids[2] ", " \
+ say(sp_order[0] " bid " sp_bid(0) ", " \
+ sp_order[2] " bid " sp_bid(2) ", " \
"total: " sp_bids[0] + sp_bids[2])
- say(sp_order[1] " bid " sp_bids[1] ", " \
- sp_order[3] " bid " sp_bids[3] ", " \
+ say(sp_order[1] " bid " sp_bid(1) ", " \
+ sp_order[3] " bid " sp_bid(3) ", " \
"total: " sp_bids[1] + sp_bids[3])
}
/^\.tricks$/ && sp_state == "play" {
- say(sp_order[0] " took " int(sp_tricks[0]) "/" int(sp_bids[0]) ", " \
- sp_order[2] " took " int(sp_tricks[2]) "/" int(sp_bids[2]))
- say(sp_order[1] " took " int(sp_tricks[1]) "/" int(sp_bids[1]) ", " \
- sp_order[3] " took " int(sp_tricks[3]) "/" int(sp_bids[3]))
+ say(sp_order[0] " took " int(sp_tricks[0]) "/" sp_bid(0) ", " \
+ sp_order[2] " took " int(sp_tricks[2]) "/" sp_bid(2))
+ say(sp_order[1] " took " int(sp_tricks[1]) "/" sp_bid(1) ", " \
+ sp_order[3] " took " int(sp_tricks[3]) "/" sp_bid(3))
}
(TO == NICK || DST == sp_channel) &&
/^\.((new|end|load)game|join|look|bid|pass|play)/ {
sp_save("var/sp_cur.json");
}
-
-# Standin
-#/^\.playfor [^ ]*$/ {
-#}
-#
-#/^\.standin [^ ]*$/ {
-# if (p in sp_players) {
-# }
-# for (p in sp_standin) {
-# if ($2 in sp_standin)
-# say(here " is already playing for " sp_standin[p]);
-# }
-# sp_standin[away] = here
-#}
-#