You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
249 lines
7.7 KiB
Plaintext
249 lines
7.7 KiB
Plaintext
//===== rAthena Script =======================================
|
|
//= Disguise Event
|
|
//===== By: ==================================================
|
|
//= GmOcean
|
|
//===== Current Version: =====================================
|
|
//= 5.1
|
|
//===== Compatible With: =====================================
|
|
//= rAthena Project
|
|
//===== Description: =========================================
|
|
//= Guess a monster name correctly for prizes.
|
|
//=
|
|
//= NOTE: Requires PCRE library installed.
|
|
//===== Additional Comments: =================================
|
|
//= 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 amount 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 monster'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 "Disguise Event : You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
|
|
specialeffect EF_DETECT2;
|
|
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 "Disguise Event : 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;
|
|
}
|