summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/custom/etc/rpsroulette.txt376
1 files 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;
}