//===== Hercules Script ======================================//= Disguise Event//===== By: ==================================================//= GmOcean//===== Current Version: =====================================//= 5.1//===== Additional Comments: =================================//= Note: This script requires PCRE to run properly.//= 5.0 Last update by GmOcean.//= 5.1 Cleaned and standardized, mostly. [Euphy]//= 5.2 Updated to current Hercules syntax. [Winterfox]//============================================================new_4-4,131,190,5 script Disguise Event 4_M_NFDEADMAN,{// Currently set to run every two hours.// To change times, edit the OnClock labels below. .@GroupId =80; // Group ID required to access NPC. .@n$ ="[^0000FFDisguise NPC^000000]";if(getgroupid() >= .@GroupId){mes( .@n$ );mes("Select an option.");next;switch(select("Turn ON/OFF Event:Event Settings")){case1: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){ .EventON=0; .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", 4_M_NFDEADMAN );close;} .EventON=1; .Timer=1;initnpctimer; .ResetCounter++;announce("The Disguise Event will begin in 3 minutes.",bc_all | bc_blue);announce("The Event is being held in Event Room.",bc_all | bc_blue);close;case2:mes( .@n$ );mes("Pick a setting to modify.");next;switch(select("Monster Display:Number of Rounds:Prize Settings")){case1:setarray( .@r$, "Disguise as all monsters.", "Disguise as MVPs only.");mes( .@n$ );mes("Choose a disguise rule.");next; .Rule=select(implode( .@r$, ":"));mes( .@n$ );mes("The Disguise Rule has been set:");mes(" > ^0055FF"+ .@r$[( .Rule-1)]+"^000000");close;case2:mes( .@n$ );mes("Input the number of rounds you want the event to last.");mes("Current number: [^0000FF"+ .Rounds+"^000000]");next;input .@Rounds; .Rounds= .@Rounds;mes( .@n$ );mes("The number of rounds has been changed to "+ .Rounds+".");close;case3: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;} .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."); .@amount =1;next;mes( .@n$ );} .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: .EventON=0; .Wait=0; .Winner=0; .ResetCounter=0; .Rounds=10; .Prize=7227; .PrizeAmt=2; .Rule=1;setarray( .MVP, OSIRIS, BAPHOMET, DOPPELGANGER, MISTRESS, GOLDEN_BUG, ORK_HERO, DRAKE, EDDGA, MAYA, MOONLIGHT, PHARAOH, PHREEONI, ORC_LORD, KNIGHT_OF_WINDSTORM, GARM, DARK_LORD, TURTLE_GENERAL, LORD_OF_DEATH, DRACULA, EVENT_BAPHO, DARK_SNAKE_LORD, INCANTATION_SAMURAI, PORING_V, AMON_RA, TAO_GUNKA, RSX_0806, BACSOJIN_, B_SEYREN, B_EREMES, B_HARWORD, B_MAGALETA, B_SHECIL, B_KATRINN, B_YGNIZEM, APOCALIPS_H, LADY_TANEE, THANATOS, DETALE, KIEL_, RANDGRIS, GLOOMUNDERNIGHT, KTULLANUX, ATROCE, G_MAGALETA_, IFRIT, FALLINGBISHOP, BEELZEBUB_, GOPINICH, MOROCC_, KUBLIN, S_NYDHOG, BOITATA );if( RENEWAL )setarray( .MVP[getarraysize( .MVP)], QUEEN_SCARABA, LOST_DRAGON, LEAK, I_QUEEN_SCARABA ); .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; OnMinute55://Event Start .ResetCounter++; .EventON=1; .Timer=1; .Wait=1;announce("The Disguise Event will begin in 3 minutes.", bc_all | bc_blue);announce("The Event is being held in Event Room.", bc_all | bc_blue);initnpctimer;end; OnTimer10000:if( .Timer || .Change)end; function Disguise; .Wait=0; Disguise;end; OnTimer30000:if(.Timer)end; .Change=0;setnpcdisplay("Disguise Event", 4_M_NFDEADMAN );npctalk("You took too long to guess what I was. Please wait 10 seconds while I disguise again.");specialeffect(725); $MonsterName$ ="";deletepset(1);initnpctimer;end; OnTimer60000:if(!.Timer)end;announce("The Disguise Event will begin in 2 minutes.", bc_all | bc_blue);announce("The Event is being held in Event Room.", bc_all | bc_blue);end; OnTimer120000:if(!.Timer)end;announce("The Disguise Event will begin 1 minute.",bc_all | bc_blue);announce("The Event is being held in Event Room.",bc_all | bc_blue);end; OnTimer180000: function Disguise;if(!.Timer)end;announce("The Disguise Event has begun!",bc_all | bc_blue);announce("The Event is being held in Event Room.",bc_all | bc_blue); .Timer=0;initnpctimer; Disguise;end; OnCorrect:if(.Winner){dispbottom("Someone has already won this round.");end;} .Winner=1; .RoundCount++;deletepset(1);activatepset(1);getitem(.Prize, .PrizeAmt);announce(strcharinfo( PC_NAME )+" is correct! I was disguised as: "+ $MonsterName$, bc_map | bc_blue);if( .RoundCount >= .Rounds){setnpcdisplay("Disguise Event", 4_M_NFDEADMAN ); .RoundCount=0; .Change=0; .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", 4_M_NFDEADMAN ); .Change=0;setnpctimer0;end; function Disguise {if( .Rule==1){ .Winner=0; .@monster=rand(SCORPION, PINGUICULA);if(compare(","+ .Blacklist$ +"," , ","+ .@monster+",")) Disguise;if(.@monster== .LastMonster) Disguise; .LastMonster= .@monster; $MonsterName$ =getmonsterinfo( .@monster, 0);}else{ .Winner=0; .@monster=rand(getarraysize( .MVP)); $MonsterName$ =getmonsterinfo( .MVP[ .@monster], 0);}deletepset(1);defpattern(1, "([^:]+):.\\s*"+$MonsterName$+".*", "OnCorrect");activatepset(1);if( .Rule==1)setnpcdisplay("Disguise Event", .@monster);elsesetnpcdisplay("Disguise Event", .MVP[ .@monster]); .Change=1;setnpctimer(0);}}