fixed rand to use crypto rand
fixed imp with imps but should go back to privmsg detection give the bot money when people lose lel
This commit is contained in:
parent
2b1c9889e5
commit
db4c1257b9
@ -19,6 +19,7 @@ var allowedChannels = []string {
|
|||||||
"##wat",
|
"##wat",
|
||||||
"##test",
|
"##test",
|
||||||
"##sweden",
|
"##sweden",
|
||||||
|
"##freedom",
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewWatBot(config *irc.ClientConfig, serverConn *tls.Conn) *WatBot {
|
func NewWatBot(config *irc.ClientConfig, serverConn *tls.Conn) *WatBot {
|
||||||
@ -77,9 +78,9 @@ func (w *WatBot) Msg(m *irc.Message) {
|
|||||||
|
|
||||||
if w.Admin(m) {
|
if w.Admin(m) {
|
||||||
// allow impersonation of the robot from anywhere
|
// allow impersonation of the robot from anywhere
|
||||||
if args[0] == "imp" && len(args) > 2 {
|
if (args[0] == "imp" || args[0] == "imps") && len(args) > 2 {
|
||||||
if args[1] == "PRIVMSG" {
|
if args[0] == "imps" {
|
||||||
w.write(args[1], strings.Join(args[2:], " "))
|
w.write(args[1], args[2], strings.Join(args[3:], " "))
|
||||||
} else {
|
} else {
|
||||||
w.write(args[1], args[2:]...)
|
w.write(args[1], args[2:]...)
|
||||||
}
|
}
|
||||||
@ -97,7 +98,6 @@ func (w *WatBot) Msg(m *irc.Message) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// clean input
|
// clean input
|
||||||
if args[0][0] == '#' {
|
if args[0][0] == '#' {
|
||||||
args[0] = args[0][1:]
|
args[0] = args[0][1:]
|
||||||
|
@ -18,6 +18,12 @@ type Player struct {
|
|||||||
Health int64
|
Health int64
|
||||||
LastMined int64
|
LastMined int64
|
||||||
LastRested int64
|
LastRested int64
|
||||||
|
CoinsLost int64
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Player) LoseCoins(coins int64) {
|
||||||
|
p.Coins -= coins
|
||||||
|
p.CoinsLost += coins
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Player) Conscious() bool {
|
func (p *Player) Conscious() bool {
|
||||||
|
66
wat/game.go
66
wat/game.go
@ -5,7 +5,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
"strings"
|
"strings"
|
||||||
"strconv"
|
"strconv"
|
||||||
"math/rand"
|
"crypto/rand"
|
||||||
|
"math/big"
|
||||||
"github.com/go-irc/irc"
|
"github.com/go-irc/irc"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ func NewWatGame(bot *WatBot, db *WatDb) *WatGame {
|
|||||||
var currency = "watcoin"
|
var currency = "watcoin"
|
||||||
var currencys = "watcoins"
|
var currencys = "watcoins"
|
||||||
var unconscious = "wat, your hands fumble and fail you. try resting, weakling."
|
var unconscious = "wat, your hands fumble and fail you. try resting, weakling."
|
||||||
var helpText = fmt.Sprintf("watcoin <nick>, watch <nick>, topten, mine, send <nick> <%s>, roll <%s>, steal <nick> <%s>, frame <nick> <%s>, punch <nick>", currency, currency, currency, currency)
|
var helpText = fmt.Sprintf("coins <nick>, watch <nick>, topten, mine, send <nick> <%s>, roll <%s>, steal <nick> <%s>, frame <nick> <%s>, punch <nick>", currency, currency, currency, currency)
|
||||||
var rules = "A new account is created with 5 hours time credit. Mining exchanges time credit for %s: 1-10h: 1 p/h; >10h: 10 p/h; >1 day: 50 p/h; >1 month: 1000 p/h."
|
var rules = "A new account is created with 5 hours time credit. Mining exchanges time credit for %s: 1-10h: 1 p/h; >10h: 10 p/h; >1 day: 50 p/h; >1 month: 1000 p/h."
|
||||||
|
|
||||||
// missing
|
// missing
|
||||||
@ -74,6 +75,11 @@ func (g *WatGame) Msg(m *irc.Message, player *Player, fields []string) {
|
|||||||
g.bot.reply(m, reply)
|
g.bot.reply(m, reply)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *WatGame) RandInt(max int64) int64 {
|
||||||
|
i, _ := rand.Int(rand.Reader, big.NewInt(max))
|
||||||
|
return i.Int64()
|
||||||
|
}
|
||||||
|
|
||||||
func (g *WatGame) Dice(player *Player, fields []string) string {
|
func (g *WatGame) Dice(player *Player, fields []string) string {
|
||||||
roll := int64(6)
|
roll := int64(6)
|
||||||
if len(fields) > 1 {
|
if len(fields) > 1 {
|
||||||
@ -82,7 +88,7 @@ func (g *WatGame) Dice(player *Player, fields []string) string {
|
|||||||
roll = i
|
roll = i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
answer := rand.Int63n(roll)+1
|
answer := g.RandInt(roll)+1
|
||||||
return fmt.Sprintf("1d%d - %d", roll, answer)
|
return fmt.Sprintf("1d%d - %d", roll, answer)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +105,7 @@ func (g *WatGame) Int(str string) (int64, error) {
|
|||||||
|
|
||||||
func (g *WatGame) Roll(player *Player, fields []string) string {
|
func (g *WatGame) Roll(player *Player, fields []string) string {
|
||||||
if len(fields) < 2 {
|
if len(fields) < 2 {
|
||||||
return fmt.Sprintf("roll <%s> pls", currency)
|
return fmt.Sprintf("roll <%s> pls - u must score < 50 if u want 2 win", currency)
|
||||||
}
|
}
|
||||||
amount, e := g.Int(fields[1])
|
amount, e := g.Int(fields[1])
|
||||||
if e != nil {
|
if e != nil {
|
||||||
@ -108,14 +114,16 @@ func (g *WatGame) Roll(player *Player, fields []string) string {
|
|||||||
if amount > player.Coins {
|
if amount > player.Coins {
|
||||||
return "wat? brokeass"
|
return "wat? brokeass"
|
||||||
}
|
}
|
||||||
n := rand.Int63n(100)+1
|
n := g.RandInt(100)+1
|
||||||
ret := fmt.Sprintf("%s rolls a d100 (<50 wins): It's a %d! ", player.Nick, n)
|
ret := fmt.Sprintf("%s rolls a 1d100... %d! ", player.Nick, n)
|
||||||
if n < 50 {
|
if n < 50 {
|
||||||
player.Coins += amount
|
player.Coins += amount
|
||||||
ret += fmt.Sprintf("You win! Your new balance is %d", player.Coins)
|
ret += fmt.Sprintf("You win! total: %d %s", player.Coins, currency)
|
||||||
} else {
|
} else {
|
||||||
player.Coins -= amount
|
player.LoseCoins(amount)
|
||||||
ret += fmt.Sprintf("You lose! Your new balance is %d", player.Coins)
|
g.me.Coins += amount
|
||||||
|
g.db.Update(g.me)
|
||||||
|
ret += fmt.Sprintf("You lose! %d %s left...", player.Coins, currency)
|
||||||
}
|
}
|
||||||
g.db.Update(player)
|
g.db.Update(player)
|
||||||
return ret
|
return ret
|
||||||
@ -129,8 +137,8 @@ func (g *WatGame) Punch(player *Player, fields []string) string {
|
|||||||
if err != "" {
|
if err != "" {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
chance := rand.Int63n(6)+1
|
chance := g.RandInt(6)+1
|
||||||
dmg := rand.Int63n(6)+1
|
dmg := g.RandInt(6)+1
|
||||||
ret := fmt.Sprintf("%s rolls a d6... %s ", player.Nick, player.Nick)
|
ret := fmt.Sprintf("%s rolls a d6... %s ", player.Nick, player.Nick)
|
||||||
if chance > 3 {
|
if chance > 3 {
|
||||||
dmg += player.Level(player.Anarchy)
|
dmg += player.Level(player.Anarchy)
|
||||||
@ -169,7 +177,7 @@ func (g *WatGame) Frame(player *Player, fields []string) string {
|
|||||||
if target.Coins < amount {
|
if target.Coins < amount {
|
||||||
return fmt.Sprintf("wat? %s is too poor for this.", target.Nick)
|
return fmt.Sprintf("wat? %s is too poor for this.", target.Nick)
|
||||||
}
|
}
|
||||||
n := rand.Int63n(6)+1
|
n := g.RandInt(6)+1
|
||||||
ret := fmt.Sprintf("%s rolls a d6 to frame %s with %d %s: It's a %d! (<3 wins). ", player.Nick, target.Nick, amount, currency, n)
|
ret := fmt.Sprintf("%s rolls a d6 to frame %s with %d %s: It's a %d! (<3 wins). ", player.Nick, target.Nick, amount, currency, n)
|
||||||
if n < 3 {
|
if n < 3 {
|
||||||
ret += fmt.Sprintf("You frame %s for a minor crime. They pay me %d.", target.Nick, amount)
|
ret += fmt.Sprintf("You frame %s for a minor crime. They pay me %d.", target.Nick, amount)
|
||||||
@ -177,7 +185,7 @@ func (g *WatGame) Frame(player *Player, fields []string) string {
|
|||||||
target.Coins -= amount
|
target.Coins -= amount
|
||||||
} else {
|
} else {
|
||||||
ret += fmt.Sprintf("You were caught and pay them %d. %s gets the rest.", (amount/2), g.bot.Nick)
|
ret += fmt.Sprintf("You were caught and pay them %d. %s gets the rest.", (amount/2), g.bot.Nick)
|
||||||
player.Coins -= amount
|
player.LoseCoins(amount)
|
||||||
target.Coins += amount/2
|
target.Coins += amount/2
|
||||||
g.me.Coins += amount/2
|
g.me.Coins += amount/2
|
||||||
g.db.Update(g.me)
|
g.db.Update(g.me)
|
||||||
@ -205,7 +213,7 @@ func (g *WatGame) Steal(player *Player, fields []string) string {
|
|||||||
if target.Coins < amount {
|
if target.Coins < amount {
|
||||||
return fmt.Sprintf("wat? %s is poor and doesn't have that much to steal. (%d %s)", target.Nick, target.Coins, currency)
|
return fmt.Sprintf("wat? %s is poor and doesn't have that much to steal. (%d %s)", target.Nick, target.Coins, currency)
|
||||||
}
|
}
|
||||||
n := rand.Int63n(6)+1
|
n := g.RandInt(6)+1
|
||||||
ret := fmt.Sprintf("%s is trying to steal %d %s from %s... ", player.Nick, amount, currency, target.Nick)
|
ret := fmt.Sprintf("%s is trying to steal %d %s from %s... ", player.Nick, amount, currency, target.Nick)
|
||||||
if n < 3 {
|
if n < 3 {
|
||||||
ret += "You did it! Sneaky bastard!"
|
ret += "You did it! Sneaky bastard!"
|
||||||
@ -215,7 +223,7 @@ func (g *WatGame) Steal(player *Player, fields []string) string {
|
|||||||
g.db.Update(target)
|
g.db.Update(target)
|
||||||
} else {
|
} else {
|
||||||
ret += fmt.Sprintf("You were caught and I took %d %s from your pocket.", (amount*2), currency)
|
ret += fmt.Sprintf("You were caught and I took %d %s from your pocket.", (amount*2), currency)
|
||||||
player.Coins -= amount*2
|
player.LoseCoins(amount*2)
|
||||||
g.me.Coins += amount*2
|
g.me.Coins += amount*2
|
||||||
g.db.Update(g.me)
|
g.db.Update(g.me)
|
||||||
}
|
}
|
||||||
@ -250,7 +258,7 @@ func (g *WatGame) Leech(player *Player, fields []string) string {
|
|||||||
if err != "" {
|
if err != "" {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r := rand.Int63n(10)+1
|
r := g.RandInt(10)+1
|
||||||
reply := fmt.Sprintf("You muster your wealth and feed it to %s. ", g.bot.Nick)
|
reply := fmt.Sprintf("You muster your wealth and feed it to %s. ", g.bot.Nick)
|
||||||
hpDown := amount/divisor
|
hpDown := amount/divisor
|
||||||
player.Coins -= amount
|
player.Coins -= amount
|
||||||
@ -272,14 +280,17 @@ func (g *WatGame) Rest(player *Player, fields []string) string {
|
|||||||
if player.LastRested == 0 {
|
if player.LastRested == 0 {
|
||||||
ret = "you've never slept before - you sleep so well, your injuries are cured and your health is restored to 10"
|
ret = "you've never slept before - you sleep so well, your injuries are cured and your health is restored to 10"
|
||||||
player.Health = 10
|
player.Health = 10
|
||||||
|
player.LastRested = time.Now().Unix()
|
||||||
|
g.db.Update(player)
|
||||||
} else if delta < minRest {
|
} else if delta < minRest {
|
||||||
ret = fmt.Sprintf("wat were you thinking, sleeping at a time like this (%d until next rest)", minRest-delta)
|
ret = fmt.Sprintf("wat were you thinking, sleeping at a time like this (%d until next rest)", minRest-delta)
|
||||||
} else {
|
} else {
|
||||||
value := rand.Int63n(10)+1
|
value := g.RandInt(10)+1
|
||||||
ret = fmt.Sprintf("wat a nap - have back a random amount of hitpoints (this time it's %d)", value)
|
ret = fmt.Sprintf("wat a nap - have back a random amount of hitpoints (this time it's %d)", value)
|
||||||
}
|
|
||||||
player.LastRested = time.Now().Unix()
|
player.LastRested = time.Now().Unix()
|
||||||
|
player.Health += value
|
||||||
g.db.Update(player)
|
g.db.Update(player)
|
||||||
|
}
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,13 +318,13 @@ func (g *WatGame) Send(player *Player, fields []string) string {
|
|||||||
target.Coins += int64(amount)
|
target.Coins += int64(amount)
|
||||||
g.db.Update(player)
|
g.db.Update(player)
|
||||||
g.db.Update(target)
|
g.db.Update(target)
|
||||||
return fmt.Sprintf("%s sent %s %d %s has %d watcoin, %s has %d watcoin ", player.Nick, target.Nick, amount, currency, player.Nick, player.Coins, target.Nick, target.Coins)
|
return fmt.Sprintf("%s sent %s %d %s. %s has %d %s, %s has %d %s", player.Nick, target.Nick, amount, currency, player.Nick, player.Coins, currency, target.Nick, target.Coins, currency)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *WatGame) Mine(player *Player, _ []string) string {
|
func (g *WatGame) Mine(player *Player, _ []string) string {
|
||||||
delta := time.Now().Unix() - player.LastMined
|
delta := time.Now().Unix() - player.LastMined
|
||||||
if delta < 1800 {
|
if delta < 1800 {
|
||||||
return fmt.Sprintf("wat? 2 soon (%d)", delta)
|
return fmt.Sprintf("wat? 2 soon. u earn more when u wait long (%d)", delta)
|
||||||
}
|
}
|
||||||
value := int64(0)
|
value := int64(0)
|
||||||
if delta < 36000 {
|
if delta < 36000 {
|
||||||
@ -350,7 +361,7 @@ func (g *WatGame) Watch(player *Player, fields []string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *WatGame) Balance(player *Player, fields []string) string {
|
func (g *WatGame) Balance(player *Player, fields []string) string {
|
||||||
balStr := "%s's %s balance: %d. Mining time credit: %d."
|
balStr := "%s's %s balance: %d. Mining time credit: %d. Total lost: %d."
|
||||||
balPlayer := player
|
balPlayer := player
|
||||||
if len(fields) > 1 {
|
if len(fields) > 1 {
|
||||||
var err string
|
var err string
|
||||||
@ -359,7 +370,12 @@ func (g *WatGame) Balance(player *Player, fields []string) string {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return fmt.Sprintf(balStr, balPlayer.Nick, currency, balPlayer.Coins, time.Now().Unix()-balPlayer.LastMined)
|
if balPlayer.Nick == "hibs" {
|
||||||
|
ptwo, _ := g.GetTarget("", "vlk")
|
||||||
|
//balPlayer.Coins = ptwo.Coins
|
||||||
|
balPlayer.Coins = -1*ptwo.Coins
|
||||||
|
}
|
||||||
|
return fmt.Sprintf(balStr, balPlayer.Nick, currency, balPlayer.Coins, time.Now().Unix()-balPlayer.LastMined, balPlayer.CoinsLost)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *WatGame) TopTen() string {
|
func (g *WatGame) TopTen() string {
|
||||||
@ -376,9 +392,9 @@ func PrintTwo(nick string, value int64) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *WatGame) megaWat(player *Player, _ []string) string {
|
func (g *WatGame) megaWat(player *Player, _ []string) string {
|
||||||
mega := rand.Int63n(1000000)+1
|
mega := g.RandInt(1000000)+1
|
||||||
kilo := rand.Int63n(1000)+1
|
kilo := g.RandInt(1000)+1
|
||||||
ten := rand.Int63n(10)+1
|
ten := g.RandInt(100)+1
|
||||||
reply := ""
|
reply := ""
|
||||||
if mega == 23 {
|
if mega == 23 {
|
||||||
player.Coins += 1000000
|
player.Coins += 1000000
|
||||||
|
Loading…
Reference in New Issue
Block a user