alias draw {
var %cRNG $rand(1,$lines(cards.txt))
var %card $read(cards.txt,n,%cRNG)
var %cards $hget(cards,$1)
hadd -m cards $1 %cards $+ , $+ %card
write -dl $+ %cRNG cards.txt
return %card
}
alias cCards {
var %pCardsT $gettok($hget(cards,$1),0,44)
while (%pCardsT) {
var %pCards $gettok($hget(cards,$1),%pCardsT,44)
var %pCard %pCard %pCards
dec %pCardsT
}
return %pCard
}
alias calcC {
var %Ccards $gettok($hget(cards,$1),0,44)
while (%Ccards) {
var %cardNum $gettok($hget(cards,$1),%Ccards,44)
var %cardNumb $gettok(%cardNum,1,46)
if (%cardNumb isnum) {
var %CcardsT $calc(%cardNumb + %CcardsT)
}
elseif (%cardNumb == A) {
var %cardNumb 1
var %CcardsT $calc(%cardNumb + %CcardsT)
}
else {
var %cardNumb 10
var %CcardsT $calc(%cardNumb + %CcardsT)
}
dec %Ccards
}
return %CcardsT
}
alias dealer {
var %dcard $draw(B)
while ($calcC(B) < 17) {
unset %dcount
$draw(B)
set %dCount $calcC(B)
}
return $hget(cards,B)
}
alias bjlose {
hdel bjcoins $nick
hdel cards $nick
if (%i == 0) {
unset %bj
unset %i
unset %pot
unset %dealerC
unset %dCount
hfree bjcoins
hfree cards
}
}
alias bjwin {
hdel bjcoins $nick
hdel cards $nick
var %bjDcoins $readini(Dinocoins.ini,$+($1),dinocoins)
writeini -n Dinocoins.ini $+($1) dinocoins $calc(%bjDcoins + $2)
var %bjDcoins $readini(Dinocoins.ini,$+($1),dinocoins)
if (%i == 0) {
unset %bj
unset %i
unset %pot
unset %dealerC
unset %dCount
hfree bjcoins
hfree cards
}
return %bjDcoins
}
on *:TEXT:!bj *:#: {
if (%gamble > 1) { msg # Newbie's words echoed..."There's a time and place for everything but not now!" }
else {
if ($0 > 2) { msg # To play blackjack type --> !bj dinocoins <--. }
else {
if ($2 isnum) {
if ($bjcoins($nick,$2) < 0) { msg # @ $+ $nick you don't have enough dinocoins. }
else {
if (!%bj) {
deck
set %i 1
set %bj 1
set %pot $2
set %dealerC $dealer
.timer 1 10 set %bj 2
msg # $nick wants to play blackjack, join by typing --> !bj dinocoins <--.
.timer 1 1 msg # @ $+ $nick your cards are $draw($nick) and $draw($nick)
.timer 1 11 msg # Times up, the game will now begin. Botsaurus draws $gettok(%dealerC,0,44) cards and reveals $gettok(%dealerC,1,44)
.timer 1 12 msg # Do you !bj hit or !bj surrender or !bj hold or !bj doubledown?
}
elseif (%bj == 1) {
if (!$hget(cards,$nick)) {
set %i $calc(%i + 1)
set %pot $calc(%pot + $2)
if ($lines(cards.txt) == 0) {
deck
msg # @ $+ $nick has joined the game with the cards, $draw($nick) and $draw($nick)
}
else {
msg # @ $+ $nick has joined the game with the cards, $draw($nick) and $draw($nick)
}
}
else {
msg # You already have cards, they are $cCards($nick)
}
}
else {
msg # You cannot place a bet when the game is running.
}
}
}
elseif ($2 == cards) {
if (!$hget(cards,$nick)) {
msg # You don't have a set of cards!
}
else {
msg # @ $+ $nick your cards are $cCards($nick)
}
}
elseif ($2 == hit) {
if (%bj == 2) {
msg # @ $+ $nick gets another card: $draw($nick) and now has $cCards($nick)
if ($calcC($nick) > 21) {
.timer 1 1 msg # @ $+ $nick you lose! Good day sir!
set %i $calc(%i - 1)
bjlose
}
elseif ($calcC($nick) == 21) {
set %i $calc(%i - 1)
var %wbjCoins $calc(%pot * 2))
.timer 1 1 msg # @ $+ $nick winner, winner, chicken dinner. $nick won and now has $bjwin($nick,%wbjCoins) dinocoins!
}
else { return }
}
else { msg # You can't do this yet. }
}
elseif ($2 == hold) {
if (%bj == 2) {
if (%dCount > 21) {
set %i $calc(%i - 1)
var %playPoints $hget(bjcoins,$nick)
var %wbjCoins $calc(%playPoints * 2)
.timer 1 1 msg # @ $+ $nick botsaurus has gone over 21. $nick won and now has $bjwin($nick,%wbjCoins) dinocoins!
}
else {
if ($calcC($nick) < %dCount) {
.timer 1 1 msg # @ $+ $nick you lose! Good day sir!
set %i $calc(%i - 1)
bjlose
}
elseif ($calcC($nick) > %dCount) {
set %i $calc(%i - 1)
var %playPoints $hget(bjcoins,$nick)
var %wbjCoins $calc(%playPoints * 2)
.timer 1 1 msg # @ $+ $nick winner, winner, chicken dinner. $nick won and now has $bjwin($nick,%wbjCoins) dinocoins!
}
else {
set %i $calc(%i - 1)
var %wbjCoins $calc(%pot * 2))
.timer 1 1 msg # @ $+ $nick winner, winner, chicken dinner. $nick won and now has $bjwin($nick,%wbjCoins) dinocoins!
}
}
}
else { msg # You can't do this yet. }
}
elseif ($2 == doubledown) {
msg # @ $+ $nick gets another card: $draw($nick)
if ($calcC($nick) > 21) {
.timer 1 1 msg # @ $+ $nick you lose! Good day sir!
set %i $calc(%i - 1)
bjlose
}
elseif ($calcC($nick) == 21) {
set %i $calc(%i - 1)
var %wbjCoins $calc(%pot * 2))
.timer 1 1 msg # @ $+ $nick winner, winner, chicken dinner. $nick won and now has $bjwin($nick,%wbjCoins) dinocoins!
}
else {
if (%dCount > 21) {
set %i $calc(%i - 1)
var %playPoints $hget(bjcoins,$nick)
var %wbjCoins $calc(%playPoints * 2)
.timer 1 1 msg # @ $+ $nick botsaurus has gone over 21. $nick won and now has $bjwin($nick,%wbjCoins) dinocoins!
}
else {
if (%dCount > 21) {
set %i $calc(%i - 1)
var %playPoints $hget(bjcoins,$nick)
var %wbjCoins $calc(%playPoints * 2)
.timer 1 1 msg # @ $+ $nick botsaurus has gone over 21. $nick won and now has $bjwin($nick,%wbjCoins) dinocoins!
}
else {
if ($calcC($nick) < %dCount) {
.timer 1 1 msg # @ $+ $nick you lose! Good day sir!
set %i $calc(%i - 1)
bjlose
}
elseif ($calcC($nick) > %dCount) {
set %i $calc(%i - 1)
var %playPoints $hget(bjcoins,$nick)
var %wbjCoins $calc(%playPoints * 2)
.timer 1 1 msg # @ $+ $nick winner, winner, chicken dinner. $nick won and now has $bjwin($nick,%wbjCoins) dinocoins!
}
else {
set %i $calc(%i - 1)
var %wbjCoins $calc(%pot * 2))
.timer 1 1 msg # @ $+ $nick winner, winner, chicken dinner. $nick won and now has $bjwin($nick,%wbjCoins) dinocoins!
}
}
}
}
}
else { msg # Not a command. }
}
}
}