diff options
Diffstat (limited to 'npc/custom/events/disguise.txt')
-rw-r--r-- | npc/custom/events/disguise.txt | 245 |
1 files changed, 245 insertions, 0 deletions
diff --git a/npc/custom/events/disguise.txt b/npc/custom/events/disguise.txt new file mode 100644 index 000000000..a3113a288 --- /dev/null +++ b/npc/custom/events/disguise.txt @@ -0,0 +1,245 @@ +//===== 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,160,155,4 script Disguise Event 795,{ + + // Currently set to run every two hours. + // To change times, edit the OnClock labels below. + + set .@GMLevel,60; // 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.",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: + 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,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, + 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: +OnClock0200: +OnClock0400: +OnClock0600: +OnClock0800: +OnClock1000: +OnClock1200: +OnClock1400: +OnClock1600: +OnClock1800: +OnClock2000: +OnClock2200: + 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 Event is being held in Prontera.",bc_all | bc_blue; + 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.",bc_all | bc_blue; + announce "The Event is being held in Prontera.",bc_all | bc_blue; + end; +OnTimer120000: + if (.Timer!=1) end; + announce "The Disguise Event will begin 1 minute.",bc_all | bc_blue; + announce "The Event is being held in Prontera.",bc_all | bc_blue; + end; +OnTimer180000: + if (.Timer!=1) end; + announce "The Disguise Event has begun!",bc_all | bc_blue; + announce "The Event is being held in Prontera.",bc_all | bc_blue; + set .Timer,0; stopnpctimer; + setnpctimer 0; initnpctimer; +iDisguise: + 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; + 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$+"",bc_map | bc_blue; + 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; +} |