summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-07-30 19:53:22 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-07-30 19:53:22 +0200
commit92fdc41ebcc1d8c84c5b9d6cf5cf90b7956a4935 (patch)
tree004c9d6b9e31d2a870d22dfe960dd0a773e2015a
parent2d4e8d336954a995f4f1b7582745525825954419 (diff)
Add easteregg
-rw-r--r--roulette.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/roulette.go b/roulette.go
new file mode 100644
index 0000000..6b44409
--- /dev/null
+++ b/roulette.go
@@ -0,0 +1,47 @@
+package main
+
+import (
+ "math/rand"
+ "time"
+
+ irc "github.com/fluffle/goirc/client"
+)
+
+type RR struct{ Command }
+
+const barrel = 6
+
+var (
+ bullet int
+ loaded int
+)
+
+func reload() {
+ loaded = rand.Intn(barrel)
+ bullet = 0
+}
+
+func trigger() bool {
+ bullet++
+ bullet %= barrel
+ return bullet == loaded
+}
+
+func (_ RR) Handle(conn *irc.Conn, line *irc.Line) {
+ if !line.Public() {
+ return
+ }
+ if trigger() {
+ conn.Kick(*room, line.Nick, "bang!")
+ conn.Notice(*room, "reload")
+ }
+}
+
+func init() {
+ rand.Seed(time.Now().Unix())
+ Register("!", &RR{
+ Command{
+ Help: "Russian roulette",
+ },
+ })
+}