浏览代码

- Added 2008 & 2009 iRO Halloween Events (Happy Halloween eAthena).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14112 54d463be-8e91-2dee-dedb-b68131a5f0ec
Kisuka 15 年之前
父节点
当前提交
2b884672af
共有 9 个文件被更改,包括 797 次插入4 次删除
  1. 3 0
      conf/maps_athena.conf
  2. 14 3
      db/item_db2.txt
  3. 1 0
      db/map_index.txt
  4. 4 0
      db/mob_avail.txt
  5. 12 1
      db/mob_db2.txt
  6. 6 0
      db/mob_skill_db2.txt
  7. 312 0
      npc/events/halloween_2008.txt
  8. 441 0
      npc/events/halloween_2009.txt
  9. 4 0
      npc/scripts_athena.conf

+ 3 - 0
conf/maps_athena.conf

@@ -897,6 +897,9 @@ map: spl_fild01
 map: spl_in01
 map: spl_in02
 
+// Event Maps
+map: evt_zombie
+
 //------------------------- Clone Maps ---------------------------
 //------------------------- Extra Maps ---------------------------
 

+ 14 - 3
db/item_db2.txt

@@ -35,9 +35,13 @@
 //12200,Event_Cake,Event Cake,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "PR_MAGNIFICAT",3; },{},{}
 //12238,New_Year_Rice_Cake_1,New Year Rice Cake,0,20,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 20,15; sc_start SC_STRFood,1200000,3; sc_start SC_INTFood,1200000,3; sc_start SC_LUKFood,1200000,3; sc_start SC_SpeedUp1,5000,0; },{},{}
 //12239,New_Year_Rice_Cake_2,New Year Rice Cake,0,20,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 20,15; sc_start SC_DEXFood,1200000,3; sc_start SC_AGIFood,1200000,3; sc_start SC_VITFood,1200000,3; sc_start SC_SpeedUp1,5000,0; },{},{}
-//Required for St. Patrick's Day (2008) event script.
+
+// iRO St. Patrick's Day Event 2008
+//=============================================================
 //12715,Black_Treasure_Chest,Black Treasure Chest,2,0,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "F_08stpattyseventbox"; },{},{}
-//Required for Valentine's Day (2009) event script.
+
+// iRO Valentine's Day Event 2009
+//=============================================================
 //12742,Valentine_Gift_Box_M,Valentine Gift Box,2,10,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 7946,1; },{},{}
 //12743,Valentine_Gift_Box_F,Valentine Gift Box,2,10,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 7947,1; },{},{}
 //12744,Chocolate_Box,Chocolate Box,2,10,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 558,1; },{},{}
@@ -47,6 +51,13 @@
 //7948,Box,Box,3,10,,10,,,,,,,,,,,,,{},{},{}
 //5817,Valentine's_Emblem,Valentine's Emblem,5,10,,0,,3,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAtkRate,3; bonus bMatkRate,3; bonus bAllStats,2; bonus bFlee,10; bonus bAspd,1; bonus bMdef,3; bonus2 bSkillAtk,"AL_HEAL",10; bonus2 bSkillHeal,"AL_HEAL",10; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bAddItemHealRate,IG_Potion,10; },{},{}
 
-// Old Tuxedo and Wedding Dress, will display the outfit when worn, un-comment to enable it
+// iRO Halloween Event 2009
+//=============================================================
+//5668,Weird_Pumpkin_Hat,Weird Pumpkin Hat,5,20,,0,,5,,0,0xFFFFFFFF,7,2,256,,0,1,206,{ bonus bMdef,5; bonus2 bAddMonsterDropItem,12192,2500; },{},{}
+//6298,Crushed_Pumpkin,Crushed Pumpkin,3,0,,0,,,,,,,,,,,,,{},{},{}
+//6299,Worn_Fabric,Worn Fabric,3,0,,0,,,,,,,,,,,,,{},{},{}
+
+// Old Tuxedo and Wedding Dress, will display the outfit when worn.
+//==================================================================
 //2338,Wedding_Dress,Wedding Dress,5,43000,,500,,0,,0,0xFFFFFFFE,7,0,16,,0,1,0,{},{ setoption Option_Wedding,1; },{ setoption Option_Wedding,0; }
 //7170,Tuxedo,Tuxedo,5,43000,,10,,0,,0,0xFFFFFFFE,7,1,16,,0,1,0,{},{ setoption Option_Wedding,1; },{ setoption Option_Wedding,0; }

+ 1 - 0
db/map_index.txt

@@ -753,6 +753,7 @@ spl_in02
 bat_c01
 bat_c02
 bat_c03
+evt_zombie
 
 // Only add maps under this line if they are not standard maps!
 

+ 4 - 0
db/mob_avail.txt

@@ -24,3 +24,7 @@
 //1903,4012,1,21,0,1720,0,102,184,57,16,0
 // Sentry
 //1904,1286,0
+
+// iRO Halloween Event 2009
+//3000,1179,0
+//3001,1272,0

+ 12 - 1
db/mob_db2.txt

@@ -25,9 +25,20 @@
 //1175,TAROU,Tarou,Tarou,11,284,0,57,28,1,34,45,0,0,1,20,11,10,24,5,10,12,0,2,27,0x91,150,1744,1044,684,0,0,0,0,0,0,0,0,1016,9000,919,3000,949,800,528,1000,701,2,7869,2500,0,0,0,0,0,0,4028,1
 //1209,CRAMP,Cramp,Cramp,56,4720,0,2300,1513,1,395,465,0,5,1,85,35,5,65,60,10,12,0,2,45,0x3095,100,1000,500,1000,0,0,0,0,0,0,0,0,7007,4656,528,1000,726,80,746,110,568,250,510,70,984,95,7869,1500,0,0,4296,1
 
-//St. Patricks 2008 Eent Monster overrides
+//iRO St. Patricks Day 2008 Event Monster overrides
 //Uncomment if event is enabled, as these drops modifications are nessecary.
 //1841,G_SNAKE_,Snake Lord's Minon,Snake Lord's Minon,15,471,0,72,48,1,46,55,0,0,1,15,15,10,35,5,10,12,1,2,22,0x81,200,1576,576,576,0,0,0,0,0,0,0,0,7915,1000,7916,100,7720,30,12715,7,0,0,0,0,0,0,0,0,0,0,0,0
 //1842,G_ANACONDAQ_,Snake Lord's Minon,Snake Lord's Minon,23,1109,0,300,149,1,124,157,0,0,1,23,28,10,36,5,10,12,1,2,25,0x91,200,1576,576,576,0,0,0,0,0,0,0,0,7915,1000,7916,100,7720,30,12715,7,0,0,0,0,0,0,0,0,0,0,0,0
 //1843,SIDE_WINDER_,Snake Lord's Minon,Snake Lord's Minon,43,4929,0,1996,993,1,240,320,5,10,38,43,40,15,115,20,10,12,1,2,25,0x3095,200,1576,576,576,0,0,0,0,0,0,0,0,7915,1000,7916,100,7720,30,12715,7,0,0,0,0,0,0,0,0,0,0,0,0
 //1844,G_ISIS_,Snake Lord's Minon,Snake Lord's Minon,47,7003,0,3709,1550,1,423,507,10,35,38,65,43,50,66,15,10,12,2,6,27,0x3195,200,1384,768,336,0,0,0,0,0,0,0,0,7915,1000,7916,100,7720,30,12715,8,0,0,0,0,0,0,0,0,0,0,0,0
+
+//iRO Halloween 2009 Event
+//Uncomment if event is enabled. Uncomment the skills for Halloween Whisper in mob_skill_db2.
+//3000,HALLOWEEN_WHISPER,Halloween Whisper,Halloween Whisper,1,800,0,0,0,1,10,13,0,45,1,51,14,0,60,0,10,12,0,6,68,0x81,150,1960,960,504,0,0,0,0,0,0,0,0,12396,150,6299,5335,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+//3001,HALLOWEEN_DARK_LORD,Halloween Dark Lord,Halloween Dark Lord,1,45,0,0,0,1,10,13,0,45,1,51,14,0,60,0,10,12,2,6,89,0x81,100,868,768,480,0,0,0,0,0,0,0,0,12396,800,12397,5335,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+
+//iRO Halloween 2008 Event
+//Uncomment if event is enabled.
+//3000,ZOMBIE,Zombie,Zombie,15,534,0,50,33,1,67,79,0,10,1,8,7,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,0,957,9000,724,5,938,1000,958,50,727,70,0,0,0,0,0,0,0,0,4038,1
+//3001,GHOUL,Ghoul,Ghoul,40,5418,0,1088,622,1,420,500,5,20,1,20,29,0,45,20,10,12,1,1,49,0x3885,250,2456,912,504,0,0,0,0,0,0,0,0,958,6000,756,110,509,700,511,800,2609,60,934,150,1260,1,0,0,0,0,4110,1
+//3002,ZOMBIE_MASTER,Zombie Master,Zombie Master,62,14211,0,7610,2826,1,824,1084,37,26,25,20,30,5,77,35,10,12,1,1,29,0x3695,175,2612,912,288,0,0,0,0,0,0,0,0,7071,4413,938,1500,958,1500,723,200,727,100,1260,1,2324,2,0,0,0,0,4274,1

+ 6 - 0
db/mob_skill_db2.txt

@@ -131,4 +131,10 @@
 //1239,Fire Poring@RG_STRIPSHIELD,attack,216,5,2000,0,3000,yes,target,always,0,,,,,,
 //1239,Fire Poring@RG_STRIPWEAPON,attack,215,5,2000,0,3000,yes,target,always,0,,,,,,
 
+//iRO Halloween Event 2009
+//3000,Halloween Whisper@AS_CLOAKING,idle,135,1,2000,200,5000,yes,self,always,0,,,,,,
+//3000,Halloween Whisper@AS_CLOAKING,chase,135,1,2000,200,5000,yes,self,always,0,,,,,,
+//3000,Halloween Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,,,,,
+//3000,Halloween Whisper@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,
+
 // Here you can place your custom mob skills

+ 312 - 0
npc/events/halloween_2008.txt

@@ -0,0 +1,312 @@
+//===== eAthena Script =======================================
+//= iRO Halloween (2008)
+//===== By: ==================================================
+//= Kisuka
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= eAthena SVN
+//===== Description: =========================================
+//= iRO Halloween (2008)
+//= Run away from the zombies for tickets.
+//= Redeem tickets for prizes.
+//===== Notes: ===============================================
+//= You must enable the event monsters in mob_db2.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Kisuka]
+//============================================================
+
+payon,162,176,4	script	Halloween Magician#iRO08	704,{
+	
+	if(Hallow08 < 1) {
+			mes "[Halloween Magician]";
+			mes "Kkkkkkkkk!";
+			mes "I have a special event this";
+			mes "Halloween that tests your luck and";
+			mes "agility.";
+			mes "Are you interested?";
+			next;
+			mes "[Halloween Magician]";
+			mes "Come on! Don't be a wuss!";
+			mes "If you collect enough tickets";
+			mes "you can get good prizes!";
+			mes "So what do you say?";
+			next;
+			goto MainMenu;
+	}
+
+	if (Hallow08Kill == 1) {
+		mes "[Halloween Magician]";
+		mes "You a 'fraidy cat or something?!";
+		mes "You know you want to try again...";
+		mes "Do you know the rules?";
+		next;
+		set Hallow08Kill,0;
+		if(select("Yes, I know.:No, I don't know.") == 2) {
+			goto Rules;
+		}
+		goto Participate;
+	}
+
+	if (Hallow08Kill == 2) {
+		mes "[Halloween Magician]";
+		mes "Oh, well done! You are alright!";
+		mes "Isn't it fun with zombies??";
+		mes "You know, zombies were people too!";
+		mes "Ha!";
+		mes "Kkkkkkk.";
+		next;
+		getitem 7941,1;
+		set Hallow08Kill,0;
+		mes "[Halloween Magician]";
+		mes "As I promised";
+		mes "You can get Halloween tickets";
+		mes "for cool items.";
+		close;
+	}
+
+	if(Hallow08 > 0) {
+		mes "[Halloween Magician]";
+		mes "Well, do you want to hear the rules";
+		mes "again or,";
+		mes "just get back to it...";
+		next;
+		goto MainMenu2;
+	}
+	
+		Rules:
+			mes "[Halloween Magician]";
+			mes "This village is like a virtual";
+			mes "Payon. There are zombies and ghouls";
+			mes "roaming around";
+			mes "and three southern exits, but only";
+			mes "one works.";
+			mes "That's up to you to find out.";
+			next;
+			mes "[Halloween Magician]";
+			mes "You can't use any skills";
+			mes "to kill the ghouls or zombies.";
+			mes "And one more thing...";
+			mes "you shouldn't forget...";
+			next;
+			mes "[Halloween Magician]";
+			mes "All participants";
+			mes "should be wearing nothing.";
+			mes "Put all belongings in your storage";
+			mes "and come back here when your weight";
+			mes "is '0'.";
+			next;
+			mes "[Halloween Magician]";
+			mes "Oh and one more thing!";
+			mes "You can't be riding a PecoPeco or";
+			mes "have a Cart.";
+			mes "If you are, then I will remove them";
+			mes "before you enter.";
+			mes "Got it?";
+			next;
+			mes "[Halloween Magician]";
+			mes "Remember, there are three exits but";
+			mes "only one works randomly,";
+			mes "the zombies and ghouls roaming";
+			mes "around there can't be killed";
+			mes "and you can't be wearing anything.";
+			next;
+			if (Hallow08 > 0) {
+				mes "[Halloween Magician]";
+				mes "Hey...";
+				mes "Come back once you're ready.";
+				close;
+			}else{
+				goto MainMenu;
+			}
+			
+		Participate:
+			mes "[Halloween Magician]";
+			mes "Ok, you are ready.";
+			mes "Let me check your weight.";
+			next;
+			if (Weight > 0) {
+				mes "[Halloween Magician]";
+				mes "Gosh!";
+				mes "There's always a black sheep";
+				mes "anywhere.";
+				next;
+				mes "[Halloween Magician]";
+				mes "You think I wouldn't notice that";
+				mes "your weight is above '0'?";
+				mes "You're overweight...";
+				close;
+			}else{
+				mes "[Halloween Magician]";
+				mes "You seem good to go,";
+				mes "and your weight is just right.";
+				next;
+				mes "[Halloween Magician]";
+				mes "I was quite swamped with my work,";
+				mes "so I'm exhausted.";
+				next;
+				mes "[Halloween Magician]";
+				mes "I sometimes forget to send you";
+				mes "there...";
+				next;
+				mes "[Halloween Magician]";
+				mes "I hope you come back well.";
+				close2;
+				if (Hallow08 < 1) {
+					set Hallow08,1;
+				}
+				set Hallow08Kill,1;
+				set @Hallow08Warp, rand(1,3);
+				percentheal -98,0;
+				setriding 0;
+				setcart 0;
+				warp "evt_zombie",155,246;
+				end;
+			}
+			
+		TicketExchange:
+			mes "[Halloween Magician]";
+			mes "You want to exchange tickets for";
+			mes "prizes?";
+			mes "Good job! Kkkkkk!";
+			next;
+			mes "[Halloween Magician]";
+			mes "Lemme tell you what items you can";
+			mes "exchange for.";
+			next;
+			mes "[Halloween Magician]";
+			mes "5 tickets for Pumpkin Pie.";
+			mes "20 tickets for Pumpkin-Head.";
+			mes "50 tickets for Old Blue Box.";
+			mes "70 tickets for Old Purple Box.";
+			mes "200 tickets for Old Card Album.";
+			next;
+			mes "[Halloween Magician]";
+			mes "What would you like to exchange";
+			mes "for?";
+			next;
+			switch(select("Pumpkin Pie:Pumpkin-Head:Old Blue Box:Old Purple Box:Old Card Album")) {
+				case 1:
+					if(countitem(7941) < 5) {
+						goto NotEnough;
+					}else{
+						delitem 7941,5;
+						getitem 12192,1;
+						goto Enough;
+					}
+					break;
+				case 2:
+					if(countitem(7941) < 20) {
+						goto NotEnough;
+					}else{
+						delitem 7941,20;
+						getitem 5134,1;
+						goto Enough;
+					}
+					break;
+				case 3:
+					if(countitem(7941) < 50) {
+						goto NotEnough;
+					}else{
+						delitem 7941,50;
+						getitem 603,1;
+						goto Enough;
+					}
+					break;
+				case 4:
+					if(countitem(7941) < 70) {
+						goto NotEnough;
+					}else{
+						delitem 7941,70;
+						getitem 617,1;
+						goto Enough;
+					}
+					break;			
+				case 5:
+					if(countitem(7941) < 200) {
+						goto NotEnough;
+					}else{
+						delitem 7941,200;
+						getitem 616,1;
+						goto Enough;
+					}
+			}
+					
+		NextTime:
+			mes "[Halloween Magician]";
+			mes "Ok, see you then.";
+			mes "Kkkkkkkk.";
+			close;
+
+	MainMenu:
+		menu "Explain it to me.",Rules,"I want to participate.",Participate,"I want to exchange tickets for prizes.",TicketExchange,"I'll come back next time.",NextTime;
+
+	MainMenu2:
+		menu "Get me back there now!",Participate,"Please, tell me the rules",Rules,"I want to exchange tickets for prizes.",TicketExchange,"I'll come back next time.",NextTime;
+
+	NotEnough:
+		mes "[Halloween Magician]";
+		mes "You don't have enough tickets!";
+		mes "Can't you even count?";
+		mes "Please come here with the right";
+		mes "number of tickets.";
+		close;
+
+	Enough:
+		mes "[Halloween Magician]";
+		mes "Here it is.";
+		mes "Do you need...";
+		mes "anything else?";
+		next;
+		if (Hallow08 == 1) {
+			goto MainMenu2;
+		}else{
+			goto MainMenu;
+		}
+}
+	
+// --------------- MapFlags ---------------
+
+evt_zombie	mapflag	nightenabled
+evt_zombie	mapflag	nobranch
+evt_zombie	mapflag	nomemo
+evt_zombie	mapflag	nopenalty
+evt_zombie	mapflag	pvp	off
+evt_zombie	mapflag	noreturn
+evt_zombie	mapflag	nosave	SavePoint
+evt_zombie	mapflag	noskill
+evt_zombie	mapflag	noteleport
+
+evt_zombie,16,142,1	script	zombiewarp001	45,2,2,{
+	OnTouch:
+	if (@Hallow08Warp == 1) {
+		set Hallow08Kill,2;
+		specialeffect 16;
+		warp "payon",28,142;
+	}
+	end;
+}
+
+evt_zombie,122,27,1	script	zombiewarp002	45,2,2,{
+	OnTouch:
+	if (@Hallow08Warp == 2) {
+		set Hallow08Kill,2;
+		specialeffect 16;
+		warp "payon",121,40;
+	}
+	end;
+}
+
+evt_zombie,267,89,1	script	zombiewarp003	45,2,2,{
+	OnTouch:
+	if (@Hallow08Warp == 3) {
+		set Hallow08Kill,2;
+		specialeffect 16;
+		warp "payon",253,95;
+	}
+	end;
+}
+
+evt_zombie,0,0,0,0	monster	Zombie	3000,150,0,0,0
+evt_zombie,0,0,0,0	monster	Ghoul	3001,80,0,0,0
+evt_zombie,0,0,0,0	monster	Zombie Master	3002,20,0,0,0

+ 441 - 0
npc/events/halloween_2009.txt

@@ -0,0 +1,441 @@
+//===== eAthena Script =======================================
+//= iRO Halloween (2009)
+//===== By: ==================================================
+//= Kisuka
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= eAthena SVN
+//===== Description: =========================================
+//= iRO Halloween (2009)
+//= Quest for Weird Pumpkin Hat.
+//= Exchange treats for buffs.
+//= Summon event monsters in towns.
+//===== Notes: ===============================================
+//= You must enable the event items in item_db2.
+//= You must enable the event mobs in mob_db2, mob_avail, and
+//= their skills in mob_skill_db2.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Kisuka]
+//============================================================
+
+// Headgear Quest - Pumpkin Hat
+// ============================
+prontera,152,192,5	script	Pumpkin Hat Researcher	712,{
+	if(BaseLevel < 45) {
+		mes "[Pumpkin Hat Researcher]";
+		mes "Shoo, I don't need a child. Shoo! I don't talk to novices.";
+		next;
+		mes "[Pumpkin Hat Researcher]";
+		mes "Go reach a level that can fight with stronger monsters and come back.";
+		close;
+	}
+	mes "[Pumpkin Hat Researcher]";
+	mes "Say do you like Pumpkin Pies?";
+	next;
+	mes "[Pumpkin Hat Researcher]";
+	mes "I'm a Pumpkin Hat researcher, Why don't you listen to my story?";
+	next;
+	while(1) {
+		switch(select("Listen to the story.:Ask about Pumpkin Hat.:Get a Pumpkin Hat.:Stop the conversation.")) {
+			case 1:
+				mes "[Pumpkin Hat Researcher]";
+				mes "I've been studying about an upgraded Pumpkin Hat.";
+				mes "I have discovered that it is a very simple process.";
+				next;
+				mes "[Pumpkin Hat Researcher]";
+				mes "The process is quite simple.";
+				mes "If you bring me ^4a4aff20 Jack o' Pumpkin^000000 I can show you.";
+				mes "Isn't that a tempting proposal?";
+				next;
+				break;
+			case 2:
+				mes "[Pumpkin Hat Researcher]";
+				mes "This upgraded pumpkin hat is powerful stuff!";
+				next;
+				mes "[Pumpkin Hat Researcher]";
+				mes "It can make a Pumpkin Pie that restores a large percentage of HP & SP using condensed energy to the person who wears it.";
+				next;
+				mes "[Pumpkin Hat Researcher]";
+				mes "All you need is ^4a4aff20 Jack o' Pumpkin^000000s.";
+				next;
+				break;
+			case 3:
+				mes "[Pumpkin Hat Researcher]";
+				mes "Do you want to get Pumpkin Pies? Okay, let me count the Jack o' Pumpkins you've brought.";
+				next;
+				if(countitem(1062) < 20) {
+					mes "[Pumpkin Hat Researcher]";
+					mes "I need ^4a4aff20 Jack o' Pumpkin^000000.";
+					mes "I'm not an alchemist or a wizard to create something from nothing.";
+					next;
+					mes "[Pumpkin Hat Researcher]";
+					mes "Okay, go hunting monsters and come back.";
+					mes "I'm going to stay here for a while so take your time.";
+					next;
+					break;
+				}else{
+					mes "[Pumpkin Hat Researcher]";
+					mes "I hope this will be useful to you. Don't forget to wear it while fighting to get your Pumpkin Pies.";
+					delitem 1062,20;	// Jack o' Pumpkin
+					getitem 5668,1;		// Weird Pumpkin Hat
+					next;
+					mes "[Pumpkin Hat Researcher]";
+					mes "I guess that I should get back to my research.";
+					close;
+				}
+			case 4:
+				mes "[Pumpkin Hat Researcher]";
+				mes "Bye, until we'll see each other again.";
+				mes "I wish you well...";
+				close;
+		}
+	}
+}
+
+// Buffs - Trick or Treaters
+// =========================
+-	script	Trick or Treater::09Treats	706,2,2,{	
+OnTouch:
+	hideoffnpc ""+strnpcinfo(0)+"";
+	initnpctimer;
+	mes "[Trick or Treater]";
+	mes "Hooray! hooray! Hooray!";
+	mes "Trick or Treat?";
+	next;
+	if(select("Trick.:Treat.") == 1) {
+		mes "[Trick or Treater]";
+		mes "!!!!";
+		mes "Fine. I have no choice but to trick you back!";
+		sc_start SC_Stun,5000,0;
+		close;
+	}
+	mes "[Trick or Treater]";
+	mes "Oh yay! What kind of treat do you have?";
+	next;
+	switch(select("Candy:Candy Cane:Well-baked Cookie:Nothing")) {
+		case 1:
+			if(countitem(529) > 0) {
+				mes "[Trick or Treater]";
+				mes "Yay thank you!";
+				mes "Here, take this for being so nice!";
+				sc_start SC_STRFood, 1800000, 5;
+				sc_start SC_INTFood, 1800000, 5;
+				sc_start SC_VITFood, 1800000, 5;
+				sc_start SC_AGIFood, 1800000, 5;
+				sc_start SC_DEXFood, 1800000, 5;
+				sc_start SC_LUKFood, 1800000, 5;
+				sc_start SC_FLEEFOOD, 1800000, 15;
+				delitem 529,1;	// Candy
+				close;
+			}else{
+				mes "[Trick or Treater]";
+				mes "At least a Candy, a Candy Cane or a Well-baked Cookie is all I ask for a treat.";
+				mes "Fine. I have no choice but to trick you!";
+				sc_start SC_Stun,5000,0;
+				close;
+			}
+		case 2:
+			if(countitem(530) > 0) {
+				mes "[Trick or Treater]";
+				mes "Yay thank you!";
+				mes "Here, take this for being so nice!";
+				sc_start SC_STRFood, 1800000, 5;
+				sc_start SC_INTFood, 1800000, 5;
+				sc_start SC_VITFood, 1800000, 5;
+				sc_start SC_AGIFood, 1800000, 5;
+				sc_start SC_DEXFood, 1800000, 5;
+				sc_start SC_LUKFood, 1800000, 5;
+				sc_start SC_FLEEFOOD, 1800000, 15;
+				delitem 530,1;	// Candy Cane
+				close;
+			}else{
+				mes "[Trick or Treater]";
+				mes "At least a Candy, a Candy Cane or a Well-baked Cookie is all I ask for a treat.";
+				mes "Fine. I have no choice but to trick you!";
+				sc_start SC_Stun,5000,0;
+				close;
+			}	
+		case 3:
+			if(countitem(538) > 0) {
+				mes "[Trick or Treater]";
+				mes "Yay thank you!";
+				mes "Here, take this for being so nice!";
+				sc_start SC_STRFood, 1800000, 5;
+				sc_start SC_INTFood, 1800000, 5;
+				sc_start SC_VITFood, 1800000, 5;
+				sc_start SC_AGIFood, 1800000, 5;
+				sc_start SC_DEXFood, 1800000, 5;
+				sc_start SC_LUKFood, 1800000, 5;
+				sc_start SC_FLEEFOOD, 1800000, 15;
+				delitem 528,1;	// Well-baked Cookie
+				close;
+			}else{
+				mes "[Trick or Treater]";
+				mes "At least a Candy, a Candy Cane or a Well-baked Cookie is all I ask for a treat.";
+				mes "Fine. I have no choice but to trick you!";
+				sc_start SC_Stun,5000,0;
+				close;
+			}	
+		case 4:
+			mes "[Trick or Treater]";
+			mes "At least a Candy, a Candy Cane or a Well-baked Cookie is all I ask for a treat.";
+			mes "Fine. I have no choice but to trick you!";
+			sc_start SC_Stun,5000,0;
+			close;
+	}
+OnInit:
+	hideonnpc "Trick or Treater#iRO1";
+	hideonnpc "Trick or Treater#iRO2";
+	hideonnpc "Trick or Treater#iRO3";
+	hideonnpc "Trick or Treater#iRO4";
+	hideonnpc "Trick or Treater#iRO5";
+	hideonnpc "Trick or Treater#iRO6";
+	hideonnpc "Trick or Treater#iRO7";
+	hideonnpc "Trick or Treater#iRO8";
+	end;
+	
+OnEnableTreat:
+	enablenpc ""+strnpcinfo(0)+"";
+	hideonnpc ""+strnpcinfo(0)+"";
+	end;
+	
+OnTimer15000:
+	hideonnpc ""+strnpcinfo(0)+"";
+	disablenpc ""+strnpcinfo(0)+"";
+	end;
+		
+OnTimer300000:
+	donpcevent ""+strnpcinfo(0)+"::OnEnableTreat";
+	stopnpctimer;
+	end;
+}
+prontera,151,173,5	duplicate(09Treats)	Trick or Treater#iRO1	706,2,2
+prontera,270,350,5	duplicate(09Treats)	Trick or Treater#iRO2	706,2,2
+prontera,234,310,5	duplicate(09Treats)	Trick or Treater#iRO3	706,2,2
+prontera,156,321,5	duplicate(09Treats)	Trick or Treater#iRO4	706,2,2
+prontera,156,283,5	duplicate(09Treats)	Trick or Treater#iRO5	706,2,2
+prontera,142,214,5	duplicate(09Treats)	Trick or Treater#iRO6	706,2,2
+prontera,134,125,5	duplicate(09Treats)	Trick or Treater#iRO7	706,2,2
+prontera,220,72,5	duplicate(09Treats)	Trick or Treater#iRO8	706,2,2
+
+// Monster Summoning - Halloween Wizard
+// ====================================
+-	script	Halloween Wizard#iRO09::09HallowWiz	737,{
+	mes "[Halloween Wizard]";
+	mes "...";
+	mes "Do you want to play a trick on someone?";
+	next;
+	while(1) {
+		switch(select("What trick?:Sure:No.")) {
+			case 1:
+				mes "[Halloween Wizard]";
+				mes "I can summon monsters in other parts of the world with just a few materials.";
+				next;
+				mes "[Halloween Wizard]";
+				mes "Sounds interesting huh?";
+				next;
+				mes "[Halloween Wizard]";
+				mes "If you bring me Fabric, Jack o' Pumpkins, Worn Fabric, or Crushed Pumpkins I can summon the monsters.";
+				next;
+				break;
+			case 2:
+				mes "[Halloween Wizard]";
+				mes "Which town do you want to play a trick on?";
+				next;
+				getmapxy(.@mapname$,.@mapx,.@mapy,0,""+strcharinfo(0)+"");
+				if (.@mapname$ == "prontera") {
+					switch(select("Geffen:Payon:Alberta:Aldebaran")) {
+						case 1:
+							set .@HallowTown,3;
+							break;
+						case 2:
+							set .@HallowTown,2;
+							break;
+						case 3:
+							set .@HallowTown,4;
+							break;
+						case 4:
+							set .@HallowTown,5;
+							break;
+					}
+				}
+				else if (.@mapname$ == "payon") {
+					switch(select("Prontera:Geffen:Alberta:Aldebaran")) {
+						case 1:
+							set .@HallowTown,1;
+							break;
+						case 2:
+							set .@HallowTown,3;
+							break;
+						case 3:
+							set .@HallowTown,4;
+							break;
+						case 4:
+							set .@HallowTown,5;
+							break;
+					}
+				}
+				else if (.@mapname$ == "geffen") {
+					switch(select("Prontera:Payon:Alberta:Aldebaran")) {
+						case 1:
+							set .@HallowTown,1;
+							break;
+						case 2:
+							set .@HallowTown,2;
+							break;
+						case 3:
+							set .@HallowTown,4;
+							break;
+						case 4:
+							set .@HallowTown,5;
+							break;
+					}
+				}
+				else if (.@mapname$ == "alberta") {
+					switch(select("Prontera:Geffen:Payon:Aldebaran")) {
+						case 1:
+							set .@HallowTown,1;
+							break;
+						case 2:
+							set .@HallowTown,3;
+							break;
+						case 3:
+							set .@HallowTown,2;
+							break;
+						case 4:
+							set .@HallowTown,5;
+							break;
+					}
+				}
+				else if (.@mapname$ == "aldebaran") {
+					switch(select("Prontera:Geffen:Payon:Alberta")) {
+						case 1:
+							set .@HallowTown,1;
+							break;
+						case 2:
+							set .@HallowTown,3;
+							break;
+						case 3:
+							set .@HallowTown,2;
+							break;
+						case 4:
+							set .@HallowTown,4;
+							break;
+					}
+				}
+				setarray .@HallowTowns$[1],"prontera","payon","geffen","alberta","aldebaran";
+				mes "[Halloween Wizard]";
+				mes "Ok then let's go to the next step.";
+				next;
+				mes "[Halloween Wizard]";
+				mes "How many Fabrics or Jack o' Pumpkins do you want to use? Don't go over 100 because that is the max amount that I can use.";
+				next;
+				input .@input;
+				if (.@input == 0) {
+					mes "[Halloween Wizard]";
+					mes "You have no definite idea.";
+					mes "It's not a big deal.";
+					mes "Let me know.";
+					next;
+					break;
+				}
+				else if (.@input > 100) {
+					mes "[Halloween Wizard]";
+					mes "I told you that it must be between 1 to 100!";
+					mes "You didn't pay attention!";
+					next;
+					break;
+				}
+				else {
+					set .@fabric,countitem(1059);
+					set .@jack,countitem(1062);
+					set .@worn,countitem(6299);
+					set .@crushed,countitem(6298);
+					set .@whispers,0;
+					set .@darklords,0;
+
+					set .@total,.@fabric + .@jack + .@worn + .@crushed;
+
+					if(.@total < .@input) {
+						mes "[Halloween Wizard]";
+						mes "Recount the number of items you have and tell me the total.";
+						mes "Huhuhuhuhuhu...";
+						next;
+						break;
+					}
+
+					if(.@fabric > 0) {
+						if(.@fabric >= .@input) {
+							delitem 1059,.@input;
+							set .@whispers,.@whispers+.@input;
+							set .@input,0;
+						}
+						else{
+							delitem 1059,.@fabric;
+							set .@input,.@input - .@fabric;
+							set .@whispers,.@whispers+.@fabric;
+						}
+					}
+					if(.@worn > 0 && .@input != 0) {
+						if(.@worn >= .@input) {
+							delitem 6299,.@fabric;
+							set .@whispers,.@whispers+.@input;
+							set .@input,0;
+						}
+						else{
+							delitem 6299,.@worn;
+							set .@input,.@input - .@worn;
+							set .@whispers,.@whispers+.@worn;
+						}
+					}
+					if(.@jack > 0 && .@input != 0) {
+						if(.@jack >= .@input) {
+							delitem 1062,.@input;
+							set .@darklords,.@darklords+.@input;
+							set .@input,0;
+						}
+						else{
+							delitem 1062,.@jack;
+							set .@input,.@input - .@jack;
+							set .@darklords,.@darklords+.@jack;
+						}
+					}
+					if(.@crushed > 0 && .@input != 0) {
+						if(.@crushed >= .@input) {
+							delitem 6298,.@input;
+							set .@darklords,.@darklords+.@input;
+							set .@input,0;
+						}
+						else{
+							delitem 6298,.@crushed;
+							set .@input,.@input - .@crushed;
+							set .@darklords,.@darklords+.@crushed;
+						}
+					}
+					if (.@input > 0) {
+						mes "Theres a problem.";
+						close;
+					}
+					monster ""+.@HallowTowns$[.@HallowTown]+"",0,0,"Halloween Whisper",3014,.@whispers;
+					monster ""+.@HallowTowns$[.@HallowTown]+"",0,0,"Halloween Dark Lord",3015,.@darklords;
+					mes "[Halloween Wizard]";
+					mes "Here's what you wanted.";
+					mes "Imagine what the people must be thinking in the other villages?";
+					mes "Muahahaha";
+					close;
+				}
+			case 3:
+				mes "[Halloween Wizard]";
+				mes "If you change your mind, come back here...";
+				mes "I'll stay here for a while...";
+				mes "Kkkk...";
+				close;
+		}
+	}
+}
+prontera,156,195,5	duplicate(09HallowWiz)	Halloween Wizard#1	737
+geffen,133,122,5	duplicate(09HallowWiz)	Halloween Wizard#2	737
+payon,156,196,5	duplicate(09HallowWiz)	Halloween Wizard#3	737
+alberta,96,57,5	duplicate(09HallowWiz)	Halloween Wizard#4	737
+aldebaran,146,122,5	duplicate(09HallowWiz)	Halloween Wizard#5	737

+ 4 - 0
npc/scripts_athena.conf

@@ -225,6 +225,10 @@ npc: npc/kafras/dts_warper.txt
 //npc: npc/events/christmas_2008.txt
 //Official Memorial Day (2009) event (iRO)
 //npc: npc/events/MemorialDay_2008.txt
+//Official Halloween (2008) event (iRO)
+//npc: npc/events/halloween_2008.txt
+//Official Halloween (2009) event (iRO)
+//npc: npc/events/halloween_2009.txt
 npc: npc/events/god_se_festival.txt
 
 //Novice WoE is a kRO Event, after the event, the scripts were disabled.