Created
February 18, 2018 00:13
-
-
Save anonymous/d77f426ff1f97f6348d31ef00d759cec to your computer and use it in GitHub Desktop.
Disguise Event
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//===== rAthena Script ======================================= | |
//= Disguise Event | |
//===== By: ================================================== | |
//= GmOcean | |
//===== Current Version: ===================================== | |
//= 5.1 | |
//===== Compatible With: ===================================== | |
//= rAthena SVN | |
//===== Additional Comments: ================================= | |
//= Note: This script requires PCRE to run properly. | |
//= 5.0 Last update by GmOcean. | |
//= 5.1 Cleaned and standardized, mostly. [Euphy] | |
//============================================================ | |
prontera,165,152,3 script Disguise Event 4_M_NFDEADMAN,{ | |
// Currently set to run every two hours. | |
// To change times, edit the OnClock labels below. | |
set .@GMLevel,99; // GM level required to access NPC. | |
set .@n$,"[^0000FFDisguise NPC^000000]"; | |
if (getgmlevel()>=.@GMLevel) { | |
mes .@n$; | |
mes "Select an option."; | |
next; | |
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.",0,0x00CCFF; | |
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.",0,0x00CCFF; | |
announce "The Event is being held in Event Room.",0,0x00CCFF; | |
announce "Just type '@go event' to join.",0,0x00CCFF; | |
close; | |
case 2: | |
mes .@n$; | |
mes "Pick a setting to modify."; | |
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; | |
} | |
} | |
} | |
if (.EventON) end; | |
mes .@n$; | |
mes "Welcome."; | |
mes "How may I be of assistance?"; | |
if(select("Information:Nothing, just passing through.")==2) close; | |
next; | |
mes .@n$; | |
mes "This event is quite simple."; | |
mes "At the start of the event, I will"; | |
mes "disguise myself as a random"; | |
mes "monster. You have to shout"; | |
mes "that monter's name out loud."; | |
next; | |
mes "If you are correct, you will receive"; | |
mes "a prize. If not, keep trying!"; | |
mes "That's all that there is to this event."; | |
close; | |
OnInit: | |
set .EventON,0; | |
set .Wait,0; | |
set .Winner,0; | |
set .ResetCounter,0; | |
set .Rounds,10; | |
set .Prize,7227; | |
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, | |
1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131, | |
2156,2165; | |
set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," + | |
"1171,1172,1173,1181,1187,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; | |
OnClock0000: | |
OnClock0400: | |
OnClock0800: | |
OnClock1200: | |
OnClock1600: | |
OnClock2000: | |
set .ResetCounter,.ResetCounter+1; | |
set .EventON,1; | |
set .Timer,1; | |
set .Wait,1; | |
announce "The Disguise Event will begin in 3 minutes.",0,0x00CCFF; | |
announce "The Event is being held in Main Town near at the Market.",0,0x00CCFF; | |
setnpctimer 0; | |
initnpctimer; | |
end; | |
OnTimer10000: | |
if (.Timer || .Change) end; | |
set .Wait,0; | |
goto iDisguise; | |
end; | |
OnTimer30000: | |
if (.Timer) end; | |
set .Change,0; | |
setnpcdisplay "Disguise Event",795; | |
npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again."; | |
specialeffect 725; | |
set $MonsterName$,""; | |
deletepset 1; | |
stopnpctimer; | |
setnpctimer 0; | |
initnpctimer; | |
end; | |
OnTimer60000: | |
if (.Timer!=1) end; | |
announce "The Disguise Event will begin in 2 minutes.",0,0x00CCFF; | |
announce "The Event is being held in Event Room.",0,0x00CCFF; | |
announce "Just type '@go event' to join.",0,0x00CCFF; | |
end; | |
OnTimer120000: | |
if (.Timer!=1) end; | |
announce "The Disguise Event will begin 1 minute.",0,0x00CCFF; | |
announce "The Event is being held in Event Room.",0,0x00CCFF; | |
announce "Just type '@go event' to join.",0,0x00CCFF; | |
end; | |
OnTimer180000: | |
if (.Timer!=1) end; | |
announce "The Disguise Event has begun!",0,0x00CCFF; | |
announce "The Event is being held in Event Room.",0,0x00CCFF; | |
announce "Just type '@go event' to join.",0,0x00CCFF; | |
set .Timer,0; stopnpctimer; | |
setnpctimer 0; initnpctimer; | |
iDisguise: | |
if (.Rule==1) { | |
set .Winner,0; | |
set .Monster,1000+rand(1,1083); | |
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; | |
defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect"; | |
activatepset 1; | |
if (.Rule==1) setnpcdisplay "Disguise Event",.Monster; | |
if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster]; | |
set .Change,1; | |
setnpctimer 0; | |
end; | |
iCorrect: | |
if (.Winner) { | |
dispbottom "Someone has already won this round."; | |
end; | |
} | |
set .Winner,1; | |
set .RoundCount,.RoundCount+1; | |
deletepset 1; | |
activatepset 1; | |
getitem .Prize,.PrizeAmt; | |
announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",0,0x00CCFF; | |
if (.RoundCount>=.Rounds) { | |
setnpcdisplay "Disguise Event",795; | |
set .RoundCount,0; set .Change,0; set .EventON,0; | |
setnpctimer 0; stopnpctimer; | |
npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later."; | |
end; | |
} | |
setnpcdisplay "Disguise Event",795; | |
set .Change,0; | |
setnpctimer 0; | |
end; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment