//===== Athena Script ======================================== //= Disguise Event NPC //===== By: ================================================== //= Masao //===== Current Version: ===================================== //= 2.0 //===== Compatible With: ===================================== //= eAthena SVN //===== Description: ========================================= //= Disguise Event //===== Additional Comments: ================================= //= Version 1.0 if there are any Bugs please let me know. //= Version 1.2 Added Check if someone already guessed the Monster Name. //= Version 1.5 Fixed so the NPC will display it's originial View ID when the Event ends. //= Version 2.0 Changed some Global / Temporary Variables into NPC Variables. //============================================================ - script DisguiseAnnouncer -1,{ OnClock0300: OnClock0700: OnClock1100: OnClock1500: OnClock1900: OnClock2300: OnStart: announce "The [Disguise Event] will be starting in 30 seconds.",0; sleep 30000; donpcevent "Disguise Event::OnStart"; announce "The [Disguise Event] starts now!",0; end; } quiz_02,305,245,4 script Disguise Event 795,{ set .@n$,"[^0000FFDisguise NPC^000000]"; if (getgmlevel() < 60) { mes .@n$; mes "Hi, how can i help you?"; next; menu "How does it work?",-,"Cancel.",L_Cancel; mes .@n$; mes "This is an very easy Event."; mes "At the beginning of the Event i will disguise myself into a randomly chosen Monster."; mes "After i've done that, you've to put the correct Name into the Box."; next; mes "If the name was correct, you win a Prize! if it was wrong, just try again ;)"; mes "And that's it! Good luck."; close; } L_DisguiseAdmin: mes .@n$; mes "^FF0000~Hi "+strcharinfo(0)+", what can i do for you?~^000000"; switch(select(((!$startdisguise)?"Start Event":"End Event")+":Check Prize:Set Prizes:Rounds:Nothing")) { case 1: next; mes .@n$; mes "Would you like to "+(($startdisguise)?"End":"Start")+" the Event now?"; next; if(select("Yes:No")==1) { if ($startdisguise) { set .Monster,0; set .MonsterName$,""; set .Round,0; set .disguisewin,0; set $startdisguise,0; setnpcdisplay "Disguise Event",795; announce "The [Disguise Event] has been ended by an GM! There will be no prizes!",0; } else donpcevent "DisguiseAnnouncer::OnStart"; close; } break; case 2: next; mes .@n$; mes "^FF0000~The current winning Prize is ^000000 ^008000"+$prize_item_amount+" "+getitemname($prize_item_id)+".^000000"; next; goto L_DisguiseAdmin; case 3: next; mes .@n$; mes "^FF0000~What should the Prize be? Please insert the Item ID.~^000000"; input $prize_item_id; next; mes .@n$; mes "^FF0000~Now the amount?~^000000"; input $prize_item_amount; next; mes .@n$; mes "^FF0000~So, the Prize is^000000 ^008000"+$prize_item_amount+" "+getitemname($prize_item_id)+"^000000? ^FF0000Great.~^000000"; emotion 33; next; goto L_DisguiseAdmin; case 4: next; mes .@n$; mes "Here you can set how many Rounds will be played each time the Event Starts"; input $Rounds; next; mes "^FF0000~So, there will be ^FF0000"+$Rounds+" Rounds played.^000000"; next; goto L_DisguiseAdmin; case 5: break; } next; mes .@n$; mes "Ok, bye."; close; OnStart: set .Monster,1000+rand(1,323); set .MonsterName$,getmonsterinfo(.Monster,0); set .Round,0; set .disguisewin,0; set $startdisguise,1; deletepset 1; defpattern 1,"([^:]+):.\\s*"+.MonsterName$+".*", "L_Correct"; activatepset 1; setnpcdisplay "Disguise Event",.Monster; initnpctimer; end; OnTimer15000: stopnpctimer; set .dfk,1; goto L_Correct; end; L_Correct: if (!.dfk) { set .disguisewin,1; mapannounce "quiz_02",""+strcharinfo(0)+" won! I was disguised as: "+.MonsterName$+"",0; if (!$prize_item_id) npctalk "Sorry there are no prizes."; else getitem $prize_item_id,$prize_item_amount; } set .dfk,0; set .Round,.Round+1; if (.Round<$Rounds) goto L_Round; set $startdisguise,0; setnpcdisplay "Disguise Event",795; npctalk "Thank you all for playing. That was the last round of the Disguise Event. See you next time."; end; L_Round: set .Disguise_Delay,gettimetick(2)+5; set .Monster,1000+rand(1,323); set .MonsterName$,getmonsterinfo(.Monster,0); set .disguisewin,0; setnpcdisplay "Disguise Event",.Monster; deletepset 1; defpattern 1,"([^:]+):.\\s*"+.MonsterName$+".*", "L_Correct"; activatepset 1; initnpctimer; end; L_Cancel: close; OnInit: set $startdisguise,0; end; }