// TMW2 Scripts
// Author:
// Jesusalva
// Description:
// Slot Machines, Blackjack, other crap for npc duplication
// Contents:
// "Slot Machine"
// "High Lower"
// SLOT MACHINE - You'll get PRIZE if you roll a 777!
// PRIZE must be numeric INT, AegisName won't get parsed.
// Slot Machine#map_prize
// Slot Machine#map
// Slot Machine#_prize
- script Slot Machine NPC_HIDDEN,{
function symbol {
switch (getarg(0)) {
case 1:
mesn "%%A";
break;
case 2:
mesn "%%B";
break;
case 3:
mesn "%%C";
break;
case 4:
mesn "%%D";
break;
case 5:
mesn "%%E";
break;
case 6:
mesn "%%F";
break;
case 7:
mesn "7";
break;
default:
mesn "%%@";
break;
}
}
L_Menu:
mesn;
mesc l("Spin three symbols, and jackpot great rewards!");
mesc l("Just one coin for spin.");
next;
menu
rif(countitem(.coinid) >= 1, l("Spin!")), L_Spin,
l("Prizes"), L_Info,
l("Leave"), -;
close;
L_Info:
mes "";
mesc l("Prizes:");
mes l("##9 777: @@.", getitemlink(.itemid));
mesc l("Three equal: @@.", "18 casino coins");
mesc l("Two equal: 1 casino coin.");
next;
goto L_Menu;
L_Spin:
mesc l("Spinning...");
next;
delitem .coinid, 1;
.@a=rand2(1,7);
.@b=rand2(1,7);
.@c=rand2(1,7);
symbol(.@a);
symbol(.@b);
symbol(.@c);
next;
mesn;
if (.@a == .@b && .@a == .@c && .@a == 7) {
getitem .itemid, 1;
mesc l("Jackpot! You got a(n) %s!", getitemlink(.itemid)), 3;
} else if (.@a == .@b && .@a == .@c) {
getitem .coinid, 18;
mesc l("Congrats! A pity it was not 777..."), 3;
} else if (.@a == .@b || .@a == .@c || .@b == .@c) {
getitem .coinid, 1;
mesc l("Lucky! You got the coin back!"), 3;
} else {
mesc l("It wasn't this time..."), 3;
}
next;
goto L_Menu;
OnInit:
// "Next-Generation" parsing system
// To replace default item, name NPC like this:
// Slot Machine#_1212
// Where "1212" is the item ID
.@n$=strnpcinfo(0, "_0");
explode(.@ni$, .@n$, "_");
if (getarraysize(.@n$) > 0)
.itemid=atoi(.@ni$[1]);
else
.itemid=0;
// If item ID was not provided
if (.itemid < 1) {
//.itemid=Monocle;
.itemid=BrownBowlerHat;
}
// Coin ID
//.coinid=CasinoCoins;
.coinid=CoinBag;
.sex = G_OTHER;
.distance = 4;
end;
}
// HIGH LOWER - Guess if the next card will be HIGHER or LOWER!
// (No arguments)
- script High Lower NPC_HIDDEN,{
function cardname {
switch (getarg(0)) {
case 0:
return "A"; break;
case 10:
return "J"; break;
case 11:
return "Q"; break;
case 12:
return "K"; break;
case 13:
return l("Joker"); break;
default:
return getarg(0)+1;
}
}
goto L_Menu;
L_Menu:
showavatar;
mesn;
mesc l("Hey, I am flopped. Do you want to gamble?");
mesc l("You need a %s. I'll flip one card, and you'll need to decide if next draw will be HIGHER or LOWER.", getitemlink(.coinid));
mesc l("If a tie happens, I'll give your coin back.");
next;
menu
rif(countitem(.coinid) >= 1, l("Let's play!")), L_Spin,
l("Information"), L_Info,
l("Leave"), L_Quit;
L_Info:
mes "";
mesc l("Rules:");
mesc l("A card will be flipped, you'll need to decide if next flip will be HIGHER or LOWER.");
mesc l("Cards are ranked on this priority: A - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - J - Q - K - Joker");
next;
mesc l("Prizes:");
mesc l("If you're right, you'll get at least %d GP!", .minprize);
mesc l("If a tie happens, you'll get your coin back.");
mesc l("If you're wrong, your winning streak is reset.");
mesc l("Winning Streak is also reset on logout or when you leave the room.");
next;
mesc l("Winning Strike Prizes:");
mesc l("Every seven successive right guesses, you'll get a %s!", getitemlink(Acorn)); // 7.14%
//mesc l("Every fifteen successive right guesses, you'll get a %s!", getitemlink(SilverGift)); // 3.33%
//mesc l("Every fifty successive right guesses, you'll get a %s!", getitemlink(GoldenGift)); // 1.00%
//mesc l("Every 101 successive right guesses, you'll get a %s!", getitemlink(PrismGift)); // 0.50%
next;
goto L_Menu;
L_Spin:
showavatar AVATAR_CARD_COVER;
mesc l("I'll draw a card now!");
next;
delitem .coinid, 1;
// First card will never be an edge card (Ace or Joker), so you can ALWAYS guess wrong.
.@card1=rand2(1, 12);
showavatar 1000+.@card1;
mesn;
mesc l("It's a @@!", cardname(.@card1));
mesc l("Will next draw be HIGHER or LOWER?!");
next;
mesc l("Cards are ranked on this priority: A - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - J - Q - K - Joker");
select
l("HIGHER!"),
l("LOWER!");
mes "";
// Flip Flop!
.@card2=rand2(0, 13);
showavatar 1000+.@card2;
mesn;
mesc l("It's a @@!", cardname(.@card2));
if (.@card1 == .@card2) {
mesc l("It's a tie!");
getitem .coinid, 1;
.@bypass=1;
} else if (.@card2 < .@card1 && @menu == 2) {
mesc l("It's lower! That's right!");
Zeny=Zeny+.minprize;
@gambler_winstreak+=1;
} else if (.@card2 > .@card1 && @menu == 1) {
mesc l("It's higher! That's right!");
Zeny=Zeny+.minprize;
@gambler_winstreak+=1;
} else {
mesc l("You were wrong!");
@gambler_winstreak=0;
}
// Winning Streak
if (!.@bypass && @gambler_winstreak) {
if (@gambler_winstreak % 7 == 0)
getitem Acorn, 1;
/*
if (@gambler_winstreak % 15 == 0)
getitem SilverGift, 1;
if (@gambler_winstreak % 50 == 0)
getitem GoldenGift, 1;
if (@gambler_winstreak % 101 == 0)
getitem PrismGift, 1;
*/
mesc l("Your current win streak is @@!", @gambler_winstreak);
Zeny+=min(((@gambler_winstreak-1)*.gpbonus), .minprize); // Never 2x
} else {
.@bypass=0;
}
next;
goto L_Menu;
L_Quit:
close;
OnInit:
// Gambling configuration
.minprize=180;
.gpbonus=10;
// Coin ID
//.coinid=CasinoCoins;
.coinid=CoinBag;
.sex = G_OTHER;
.distance = 4;
end;
}