Browse Source

- Custom Disguise Event: changed global variables to NPC variables.
- Changed the blacklist to a string compare instead of looping through an array.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16757 54d463be-8e91-2dee-dedb-b68131a5f0ec

brianluau 12 years ago
parent
commit
4930f78bcc
1 changed files with 128 additions and 125 deletions
  1. 128 125
      npc/custom/events/disguise.txt

+ 128 - 125
npc/custom/events/disguise.txt

@@ -25,80 +25,84 @@ prontera,160,155,4	script	Disguise Event	795,{
 		mes "Select an option.";
 		mes "Select an option.";
 		next;
 		next;
 		switch(select("Turn ON/OFF Event:Event Settings")) {
 		switch(select("Turn ON/OFF Event:Event Settings")) {
+		case 1:
+			mes .@n$;
+			if (.EventON) {
+				mes "The Event is currently: [^0000FFON^000000]";
+				mes "Would you like to turn it OFF?";
+			} else {
+				mes "The Event is currently: [^FF0000OFF^000000]";
+				mes "Would you like to turn it ON?";
+			}
+			if(select("Yes:No")==2) close;
+			if (.EventON) {
+				set .EventON,0; set .Timer,0;
+				setnpctimer 0; stopnpctimer;
+				announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",bc_map | bc_blue;
+				deletepset 1;
+				setnpcdisplay "Disguise Event",795;
+				close;
+			}
+			set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer;
+			set .ResetCounter,.ResetCounter+1;
+			announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
+			announce "The Event is being held in Prontera.",bc_all | bc_blue;
+			close;
+		case 2:
+			mes .@n$;
+			mes "Pick a setting to modify.";
+			next;
+			switch(select("Monster Display:Number of Rounds:Prize Settings")) {
 			case 1:
 			case 1:
+				setarray .@r$[0],"Disguise as all monsters.","Disguise as MVPs only.";
+				mes .@n$;
+				mes "Choose a disguise rule.";
+				next;
+				set .Rule, select(implode(.@r$,":"));
 				mes .@n$;
 				mes .@n$;
-				if ($@EventON) {
-					mes "The Event is currently: [^0000FFON^000000]";
-					mes "Would you like to turn it OFF?"; }
-				else {
-					mes "The Event is currently: [^FF0000OFF^000000]";
-					mes "Would you like to turn it ON?"; }
-				if(select("Yes:No")==2) close;
-				if ($@EventON) {
-					set $@EventON,0; set $@Timer,0;
-					setnpctimer 0; stopnpctimer;
-					announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",bc_map | bc_blue;
-					deletepset 1;
-					setnpcdisplay "Disguise Event",795;
-					close; }
-				set $@EventON,1; set $@Timer,1; setnpctimer 0; initnpctimer;
-				set $@ResetCounter,$@ResetCounter+1;
-				announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
-				announce "The Event is being held in Prontera.",bc_all | bc_blue;
+				mes "The Disguise Rule has been set:";
+				mes "  > ^0055FF"+.@r$[.Rule-1]+"^000000";
 				close;
 				close;
 			case 2:
 			case 2:
 				mes .@n$;
 				mes .@n$;
-				mes "Pick a setting to modify.";
+				mes "Input the number of rounds you want the event to last.";
+				mes "Current number: [^0000FF"+.Rounds+"^000000]";
+				next;
+				input .@Rounds;
+				set .Rounds,.@Rounds;
+				mes .@n$;
+				mes "The number of rounds has been changed to "+.Rounds+".";
+				close;
+			case 3:
+				mes .@n$;
+				mes "Input the Item ID of the prize given each round.";
+				mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")";
+				next;
+				input .@Prize;
+				mes .@n$;
+				if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null") {
+					mes "That item does not exist. Please try again.";
+					close;
+				}
+				set .Prize,.@Prize;
+				mes "Input the amount to be given.";
 				next;
 				next;
-				switch(select("Monster Display:Number of Rounds:Prize Settings")) {
-					case 1:
-						setarray .@r$[0],"Disguise as all monsters.","Disguise as MVPs only.";
-						mes .@n$;
-						mes "Choose a disguise rule.";
-						next;
-						set $Rule, select(implode(.@r$,":"));
-						mes .@n$;
-						mes "The Disguise Rule has been set:";
-						mes "  > ^0055FF"+.@r$[$Rule-1]+"^000000";
-						close;
-					case 2:
-						mes .@n$;
-						mes "Input the number of rounds you want the event to last.";
-						mes "Current number: [^0000FF"+$Rounds+"^000000]";
-						next;
-						input .@Rounds;
-						set $Rounds,.@Rounds;
-						mes .@n$;
-						mes "The number of rounds has been changed to "+$Rounds+".";
-						close;
-					case 3:
-						mes .@n$;
-						mes "Input the Item ID of the prize given each round.";
-						mes "Current item: [^0000FF"+getitemname($Prize)+"^000000] (ID #"+$Prize+")";
-						next;
-						input .@Prize;
-						mes .@n$;
-						if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null") {
-							mes "That item does not exist. Please try again.";
-							close; }
-						set $Prize,.@Prize;
-						mes "Input the amount to be given.";
-						next;
-						input .@amount;
-						mes .@n$;
-						if (.@amount<=0 || .@amount>=10000) {
-							mes "That amount is invalid. Using default ammount of 1.";
-							set .@amount,1;
-							next;
-							mes .@n$; }
-						set $PrizeAmt,.@amount;
-						mes "The Prize has been changed successfully.";
-						mes "Prize: "+$PrizeAmt+"x [^0000FF"+getitemname($Prize)+"^000000]";
-						close;
+				input .@amount;
+				mes .@n$;
+				if (.@amount<=0 || .@amount>=10000) {
+					mes "That amount is invalid. Using default ammount of 1.";
+					set .@amount,1;
+					next;
+					mes .@n$;
 				}
 				}
+				set .PrizeAmt,.@amount;
+				mes "The Prize has been changed successfully.";
+				mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]";
+				close;
+			}
 		}
 		}
 	}
 	}
-	if ($@EventON) end;
+	if (.EventON) end;
 	mes .@n$;
 	mes .@n$;
 	mes "Welcome.";
 	mes "Welcome.";
 	mes "How may I be of assistance?";
 	mes "How may I be of assistance?";
@@ -117,31 +121,28 @@ prontera,160,155,4	script	Disguise Event	795,{
 	close;
 	close;
 
 
 OnInit:
 OnInit:
-	set $@EventON,0;
-	set $@Wait,0;
-	set $@Winner,0;
-	set $@ResetCounter,0;
-	if (!$Rounds) set $Rounds,10;
-	else set $Rounds,$Rounds;
-	if (!$Prize) set $Prize,512;
-	else set $Prize,$Prize;
-	if (!$PrizeAmt) set $PrizeAmt,1;
-	else set $PrizeAmt,$PrizeAmt;
-	if ($Rule) set $Rule,1;
-	else set $Rule,$Rule;
-	setarray $@MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,
+	set .EventON,0;
+	set .Wait,0;
+	set .Winner,0;
+	set .ResetCounter,0;
+	set .Rounds,10;
+	set .Prize,512;
+	set .PrizeAmt,1;
+	set .Rule,1;
+	setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,
 	                  1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688,
 	                  1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688,
 				   1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131,
 				   1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131,
 				   2156,2165;
 				   2156,2165;
-	setarray $@BlackList[0], 1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168,1171,1172,1173,1181,1210,1217,1218,
-						1222,1223,1224,1225,1226,1227,1228,1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,
-						2002,2003,2004,2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035,2036,
-						2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050,2051,2052,2053,2054,
-						2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2075,2076,2077,2078,2079,
-						2080,2081,2083,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,
-						2099,2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,
-						2117,2118;
-	setarray $@BlackList2[0],2119,2120,2121,2123,2124,2125,1496;
+	set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," + 
+	    "1171,1172,1173,1181,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," + 
+	    "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," + 
+	    "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," + 
+	    "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," + 
+	    "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," + 
+	    "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," + 
+	    "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," + 
+	    "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," + 
+	    "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,";
 	end;
 	end;
 OnClock0000:
 OnClock0000:
 OnClock0200:
 OnClock0200:
@@ -155,23 +156,23 @@ OnClock1600:
 OnClock1800:
 OnClock1800:
 OnClock2000:
 OnClock2000:
 OnClock2200:
 OnClock2200:
-	set $@ResetCounter,$@ResetCounter+1;
-	set $@EventON,1;
-	set $@Timer,1;
-	set $@Wait,1;
+	set .ResetCounter,.ResetCounter+1;
+	set .EventON,1;
+	set .Timer,1;
+	set .Wait,1;
 	announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
 	announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
 	announce "The Event is being held in Prontera.",bc_all | bc_blue;
 	announce "The Event is being held in Prontera.",bc_all | bc_blue;
 	setnpctimer 0;
 	setnpctimer 0;
 	initnpctimer;
 	initnpctimer;
 	end;
 	end;
 OnTimer10000:
 OnTimer10000:
-	if ($@Timer || $@Change) end;
-	set $@Wait,0;
+	if (.Timer || .Change) end;
+	set .Wait,0;
 	goto iDisguise;
 	goto iDisguise;
 	end;
 	end;
 OnTimer30000:
 OnTimer30000:
-	if ($@Timer) end;
-	set $@Change,0;
+	if (.Timer) end;
+	set .Change,0;
 	setnpcdisplay "Disguise Event",795;
 	setnpcdisplay "Disguise Event",795;
 	npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
 	npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
 	specialeffect 725;
 	specialeffect 725;
@@ -182,61 +183,63 @@ OnTimer30000:
 	initnpctimer;
 	initnpctimer;
 	end;
 	end;
 OnTimer60000:
 OnTimer60000:
-	if ($@Timer!=1) end;
+	if (.Timer!=1) end;
 	announce "The Disguise Event will begin in 2 minutes.",bc_all | bc_blue;
 	announce "The Disguise Event will begin in 2 minutes.",bc_all | bc_blue;
 	announce "The Event is being held in Prontera.",bc_all | bc_blue;
 	announce "The Event is being held in Prontera.",bc_all | bc_blue;
 	end;
 	end;
 OnTimer120000:
 OnTimer120000:
-	if ($@Timer!=1) end;
+	if (.Timer!=1) end;
 	announce "The Disguise Event will begin 1 minute.",bc_all | bc_blue;
 	announce "The Disguise Event will begin 1 minute.",bc_all | bc_blue;
 	announce "The Event is being held in Prontera.",bc_all | bc_blue;
 	announce "The Event is being held in Prontera.",bc_all | bc_blue;
 	end;
 	end;
 OnTimer180000:
 OnTimer180000:
-	if ($@Timer!=1) end;
+	if (.Timer!=1) end;
 	announce "The Disguise Event has begun!",bc_all | bc_blue;
 	announce "The Disguise Event has begun!",bc_all | bc_blue;
 	announce "The Event is being held in Prontera.",bc_all | bc_blue;
 	announce "The Event is being held in Prontera.",bc_all | bc_blue;
-	set $@Timer,0; stopnpctimer;
+	set .Timer,0; stopnpctimer;
 	setnpctimer 0; initnpctimer;
 	setnpctimer 0; initnpctimer;
-	goto iDisguise;
-	end;
 iDisguise:
 iDisguise:
-	if ($Rule==1) {
-		set $@Winner,0;
-		set $@Monster,1000+rand(1,995);
-		for(set .@BL,0; .@BL<getarraysize($@BlackList); set .@BL,.@BL+1)
-			if ($@Monster==$@BlackList[.@BL] || $@Monster==$@BlackList2[.@BL]) goto iDisguise;
-		if ($@Monster==$@LastMonster) goto iDisguise;
-		set $@LastMonster,$@Monster;
-		set $MonsterName$,getmonsterinfo($@Monster,0); }
-	if ($Rule==2) {
-		set $@Winner,0;
-		set $@Monster,rand(49);
-		set $MonsterName$,getmonsterinfo($@MVP[$@Monster],0); }
+	if (.Rule==1) {
+		set .Winner,0;
+		set .Monster,1000+rand(1,995);
+		if (compare(","+.BlackList$+"," , ","+.Monster+",")) goto iDisguise;
+		if (.Monster==.LastMonster) goto iDisguise;
+		set .LastMonster,.Monster;
+		set $MonsterName$,getmonsterinfo(.Monster,0);
+	}
+	if (.Rule==2) {
+		set .Winner,0;
+		set .Monster,rand(49);
+		set $MonsterName$,getmonsterinfo(.MVP[.Monster],0);
+	}
 	deletepset 1;
 	deletepset 1;
 	defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";
 	defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";
 	activatepset 1;
 	activatepset 1;
-	if ($Rule==1) setnpcdisplay "Disguise Event",$@Monster;
-	if ($Rule==2) setnpcdisplay "Disguise Event",$@MVP[$@Monster];
-	set $@Change,1;
+	if (.Rule==1) setnpcdisplay "Disguise Event",.Monster;
+	if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster];
+	set .Change,1;
 	setnpctimer 0;
 	setnpctimer 0;
 	end;
 	end;
 iCorrect:
 iCorrect:
-	if ($@Winner) {
-		dispbottom "Someone has already won this round."; end; }
-	set $@Winner,1;
-	set $@RoundCount,$@RoundCount+1;
+	if (.Winner) {
+		dispbottom "Someone has already won this round.";
+		end;
+	}
+	set .Winner,1;
+	set .RoundCount,.RoundCount+1;
 	deletepset 1;
 	deletepset 1;
 	activatepset 1;
 	activatepset 1;
-	getitem $Prize,$PrizeAmt;
+	getitem .Prize,.PrizeAmt;
 	announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",bc_map | bc_blue;
 	announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",bc_map | bc_blue;
-	if ($@RoundCount>=$Rounds) {
+	if (.RoundCount>=.Rounds) {
 		setnpcdisplay "Disguise Event",795;
 		setnpcdisplay "Disguise Event",795;
-		set $@RoundCount,0; set $@Change,0; set $@EventON,0;
+		set .RoundCount,0; set .Change,0; set .EventON,0;
 		setnpctimer 0; stopnpctimer;
 		setnpctimer 0; stopnpctimer;
 		npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
 		npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
-		end; }
+		end;
+	}
 	setnpcdisplay "Disguise Event",795;
 	setnpcdisplay "Disguise Event",795;
-	set $@Change,0;
+	set .Change,0;
 	setnpctimer 0;
 	setnpctimer 0;
 	end;
 	end;
 }
 }