From 9c5659ca2bd3a4e6c1fca44f5d8febcb45746924 Mon Sep 17 00:00:00 2001 From: Dastgir Date: Thu, 4 Jun 2015 16:37:18 +0530 Subject: Updated RockPaperScissors Signed-off-by: Haru --- npc/custom/etc/rpsroulette.txt | 376 ++++++++++++----------------------------- 1 file changed, 109 insertions(+), 267 deletions(-) diff --git a/npc/custom/etc/rpsroulette.txt b/npc/custom/etc/rpsroulette.txt index 22123580d..e0f8b8952 100644 --- a/npc/custom/etc/rpsroulette.txt +++ b/npc/custom/etc/rpsroulette.txt @@ -4,6 +4,8 @@ //= acky //===== Current Version: ===================================== //= 1.2 +//===== Compatible With: ===================================== +//= Hercules SVN //===== Description: ========================================= //= Plays a hybrid Russian Roulette Rock Scissors Paper game. //===== Additional Comments: ================================= @@ -12,273 +14,113 @@ //============================================================ cmd_in02,182,126,2 script Crazy Boris 4_M_03,{ - mes "Crazy Boris"; - set @counter,1; mes "Hey you! Up for Rock Scissors Roulette?"; next; - menu "Let me play.",PLAY,"Explain the rules.",L_Rules,"Leave",LEAVE; - SAME: - mes "Draw! Again!"; - next; - goto PLAY; - -WIN: - mes "Damnit, You Win!"; - emotion 19; - next; - goto OPPPULL; - -LOSE: - emotion 18; - mes "Boorah! You Lose!"; - next; - goto YOUPULL; - -PLAY: - mes "Rock... Paper..."; - set @opp,rand (1,3); - menu "^0000FFROCK!",L_Rock,"^FF0000SCISSORS!",SCISSORS,"^00FF00PAPER!^000000",PAPER; - -L_Rock: - if (@lastchoice == 1) set @opp,rand (1,3); - if (@opp == 1) emotion 11; - if (@opp == 2) emotion 10; - if (@opp == 3) emotion 12; - set @lastchoice,1; - if (@opp == 1) goto SAME; - if (@opp == 2) goto WIN; - if (@opp == 3) goto LOSE; - -SCISSORS: - if (@lastchoice == 2) set @opp,rand (1,2); - if (@opp == 1) emotion 11; - if (@opp == 2) emotion 10; - if (@opp == 3) emotion 12; - set @lastchoice,2; - if (@opp == 1) goto LOSE; - if (@opp == 2) goto SAME; - if (@opp == 3) goto WIN; - -PAPER: - if (@lastchoice == 3) set @opp,rand (2,3); - if (@opp == 1) emotion 11; - if (@opp == 2) emotion 10; - if (@opp == 3) emotion 12; - set @lastchoice,3; - if (@opp == 1) goto WIN; - if (@opp == 2) goto LOSE; - if (@opp == 3) goto SAME; - -YOUPULL: - if (@counter == 1) goto ONE; - if (@counter == 2) goto TWO; - if (@counter == 3) goto THREE; - if (@counter == 4) goto FOUR; - if (@counter == 5) goto FIVE; - if (@counter == 6) goto SIX; - -OPPPULL: - if (@counter == 1) goto ONEa; - if (@counter == 2) goto TWOa; - if (@counter == 3) goto THREEa; - if (@counter == 4) goto FOURa; - if (@counter == 5) goto FIVEa; - if (@counter == 6) goto SIXa; - -ONE: - set @counter,2; - mes "1 of 6"; - set @pull,rand (1,6); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -TWO: - set @counter,3; - mes "2 of 6"; - set @pull,rand (1,5); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -THREE: - set @counter,4; - mes "3 of 6"; - set @pull,rand (1,4); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -FOUR: - set @counter,5; - mes "4 of 6"; - set @pull,rand (1,3); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -FIVE: - set @counter,6; - mes "5 of 6"; - set @pull,rand (1,2); - if (@pull == 1) set @pull,rand (1,2); - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -SIX: - mes "6 of 6"; - mes "Say your prayers"; - set @pull,1; - next; - if (@pull == 1) goto DIE; - if (@pull != 1) goto SAFE; - -ONEa: - set @counter,2; - mes "1 of 6"; - set @pull,rand (1,6); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -TWOa: - set @counter,3; - mes "2 of 6"; - set @pull,rand (1,5); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -THREEa: - set @counter,4; - mes "3 of 6"; - set @pull,rand (1,4); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -FOURa: - set @counter,5; - mes "4 of 6"; - set @pull,rand (1,3); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -FIVEa: - set @counter,6; - mes "5 of 6"; - set @pull,rand (1,2); - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -SIXa: - mes "6 of 6"; - mes "Say your prayers"; - set @pull,1; - next; - if (@pull == 1) goto KILL; - if (@pull != 1) goto SAFE; - -SAFE: - emotion 32; - mes "*^0000FFClick^000000* whew..."; - goto PLAY; - -DIE: - specialeffect2 183; - emotion 29; - percentheal -100,-100; - mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; - mes "You're dead!"; - close; - -KILL: - specialeffect 183; - emotion 23; - mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; - mes "OWWW @#$%^!! THAT HURT LIKE HELL!!"; - next; - goto PRIZE; - -L_Rules: - mes "Ok here are the rules:"; - mes "I have with me a ^FF00006^000000 chamber pistol with ^FF00001^000000 round. First we play ^FF0000Scissors ^00FF00Paper ^0000FFRock^000000. The loser pulls the trigger. The winner is whoever comes out best."; - mes "Beat me to win a prize."; - menu "Let me play.",CONT,"No thanks.",LEAVE; - -CONT: - mes "Ok here we go..."; - next; - goto PLAY; - -PRIZE: - mes "Congratulations! You have won..."; - set @prize,rand (1,10); - if (@prize == 1) goto P1; - if (@prize == 2) goto P2; - if (@prize == 3) goto P3; - if (@prize == 4) goto P4; - if (@prize == 5) goto P5; - if (@prize == 6) goto P6; - if (@prize == 7) goto P7; - if (@prize == 8) goto P8; - if (@prize == 9) goto P9; - if (@prize == 10) goto P10; - -P1: - mes "10x Oridicon!"; - getitem 984,10; - close; - -P2: - mes "10x Elunium!"; - getitem 985,10; - close; - -P3: - mes "100x Fly Wings!"; - getitem 601,100; - close; - -P4: - mes "8x Old Blue Box!"; - getitem 603,8; - close; - -P5: - mes "4x Old Violet Box!"; - getitem 617,4; - close; - -P6: - mes "1x Old Card Album!"; - getitem 616,1; - close; - -P7: - mes "10x Dead Branch!"; - getitem 604,10; - close; - -P8: - mes "3x Gold!"; - getitem 969,3; - close; - -P9: - mes "10x Elunium!"; - getitem 985,10; - close; - -P10: - mes "20x Blue Potion!"; - getitem 505,20; - close; - -LEAVE: - mes "Pansy."; - close; + switch (select("Let me play.","Explain the rules.","Leave")) { + case 1: + break; + case 2: + mes "Ok here are the rules:"; + mes "I have with me a ^FF00006^000000 chamber pistol with ^FF00001^000000 round. First we play ^FF0000Scissors ^00FF00Paper ^0000FFRock^000000. The loser pulls the trigger. The winner is whoever comes out best."; + mes "Beat me to win a prize."; + next; + if (select("Let me play.","No thanks.") == 1) { + mes "Ok here we go..."; + break; + } + // else fall through + case 3: + mes "Pansy."; + close; + } + .@counter = 1; + while(true) { + mes "Rock... Paper..."; + + .@choice = select("^0000FFROCK!","^0000FFSCISSORS!","^0000FFPAPER!"); + if (.@lastchoice == .@choice) { + if (.@lastchoice == 1) + .@opponent = rand(1,3); + else if (.@lastchoice == 2) + .@opponent = rand(1,2); + else + .@opponent = rand(2,3); + } else { + .@opponent = rand(1,3); + } + .@lastchoice = .@choice; + + if (.@opponent == 1) + emotion e_rock; + else if (.@opponent == 2) + emotion e_scissors; + else + emotion e_paper; + + if (.@opponent == .@choice) { + // SAME + mes "Draw! Again!"; + continue; + } + + if ((.@choice == 1 && .@opponent == 3) + || (.@choice == 2 && .@opponent == 1) + || (.@choice == 3 && .@opponent == 2) + ) { + // LOSE + emotion e_heh; + mes "Boorah! You Lose!"; + next; + .@win = false; + } else { + //WIN + mes "Damnit, You Win!"; + emotion e_swt2; + next; + .@win = true; + } + + mes .@counter +" of 6"; + if (.@counter == 6) + mes "Say your prayers"; + .@pull = rand(1, 7 - .@counter); + ++.@counter; + next; + if (.@pull > 1) { + emotion e_pif; + mes "*^0000FFClick^000000* whew..."; + continue; + } + if (!.@win) { + specialeffect EF_SUI_EXPLOSION; + mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; + mes "You're dead!"; + emotion e_gg; + percentheal -100,-100; + close; + } + specialeffect EF_SUI_EXPLOSION; + mes "*^0000FFClick^000000* *^FF0000BANG^000000*"; + mes "OWWW @#$%^!! THAT HURT LIKE HELL!!"; + emotion e_omg; + next; + mes "Congratulations! You have won..."; + switch (rand(1,10)) { + case 1: setarray .@reward[0], 10,984; break; + case 3: setarray .@reward[0],100,601; break; // 100x Fly Wings + case 4: setarray .@reward[0], 8,603; break; // 8x Old Blue Box + case 5: setarray .@reward[0], 4,617; break; // 4x Old Violet Box + case 6: setarray .@reward[0], 1,616; break; // 1x Old Card Album + case 7: setarray .@reward[0], 10,604; break; // 10x Dead Branch + case 8: setarray .@reward[0], 3,969; break; // 3x Gold + case 10: setarray .@reward[0],20,505; break; // 20x Blue Potion + case 2: + case 9: + setarray .@reward[0], 10,985; + } + mes .@reward[0] +"x "+ getitemname(.@reward[1]) +"!"; + getitem .@reward[1], .@reward[0]; + close; + } + end; } -- cgit v1.2.3-60-g2f50