diff options
Diffstat (limited to 'npc/custom/events')
-rw-r--r-- | npc/custom/events/cluckers.txt | 115 | ||||
-rw-r--r-- | npc/custom/events/disguise.txt | 245 | ||||
-rw-r--r-- | npc/custom/events/hallow06.txt | 124 | ||||
-rw-r--r-- | npc/custom/events/mushroom_event.txt | 62 | ||||
-rw-r--r-- | npc/custom/events/uneasy_cemetery.txt | 133 | ||||
-rw-r--r-- | npc/custom/events/valentinesdayexp.txt | 285 | ||||
-rw-r--r-- | npc/custom/events/xmas_rings_event.txt | 193 |
7 files changed, 1157 insertions, 0 deletions
diff --git a/npc/custom/events/cluckers.txt b/npc/custom/events/cluckers.txt new file mode 100644 index 000000000..bc9899488 --- /dev/null +++ b/npc/custom/events/cluckers.txt @@ -0,0 +1,115 @@ +//===== rAthena Script ======================================= +//= Cluck! Cluck! Boom! +//===== By: ================================================== +//= Keale +//===== Current Version: ===================================== +//= 1.2a +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Click the chicken and try retrieve the item at a low +//= chance. If you fail he will nuke, freeze, stone, +//= stun, or make you fall asleep. +//= The prize is configurable and triggered by the NPC. +//===== Additional Comments: ================================= +//= 1.0 First release. +//= 1.1 Using 'switch rand' instead. +//= 1.2 Cleaned and standardized. [Euphy] +//= 1.2a Switched 'atcommand' to 'unitskilluseid'. +//============================================================ + +prontera,156,219,4 script Cluckers 800,{ + + set .@GMAccess,80; // GM level required to access NPC + + if (.startcluck) { + specialeffect2 2; + switch(rand(15)) { + case 0: npctalk "CLUUUUUUCK!!!"; unitskilluseid getcharid(3),"NPC_SELFDESTRUCTION",1; emotion 23; break; + case 1: npctalk "Cluuuuuck!~"; break; + case 2: unitskilluseid getcharid(3),"NPC_SELFDESTRUCTION",1; break; + case 3: sc_start SC_Freeze,10000,0; break; + case 4: npctalk "CLUUUUUUUUUCK!!!"; unitskilluseid getcharid(3),"NPC_SELFDESTRUCTION",1; emotion 23; break; + case 5: sc_start SC_Sleep,10000,0; break; + case 6: sc_start SC_Stone,10000,0; emotion 29; break; + case 7: npctalk "CLUUUUUUCK!!!"; unitskilluseid getcharid(3),"NPC_SELFDESTRUCTION",1; emotion 23; break; + case 8: npctalk "Cluck! CLUUUCK!!"; unitskilluseid getcharid(3),"NPC_SELFDESTRUCTION",1; emotion 23; break; + case 9: sc_start SC_Stun,10000,0; break; + case 10: sc_start SC_Sleep,10000,0; emotion 29; break; + case 11: npctalk "Cluck! Cluck!"; break; + case 12: sc_start SC_Stun,10000,0; break; + case 13: unitskilluseid getcharid(3),"NPC_SELFDESTRUCTION",1; break; + default: + if (rand(50) < 4) { + npctalk "WOOF!..........."; + specialeffect2 72; + announce "[Cluck! Cluck! Boom!] " + strcharinfo(0) + " squeezed out the prize! Well done!",0; + getitem $cluck_item_id,$cluck_item_amount; + set .startcluck,0; + } else { + npctalk "Cluck! CLUUUCK!!"; + unitskilluseid getcharid(3),"NPC_SELFDESTRUCTION",1; + } + break; + } + end; + } + mes "[Cluckers]"; + if (getgmlevel() >= .@GMAccess) { + mes "Cluck cluck! Cluuuuuck? ^FF0000~Hi GM " + strcharinfo(0) + ", Wanna play today?~^000000"; + mes "Cluck cluck... CLUCK! ^FF0000~Just tell me what to do!~^000000"; + next; + while(1) switch(select("Start Event:Check Prize:Set Prize:Not today Cluckers")) { + case 1: + mes "[Cluckers]"; + mes "CLUCK! ^FF0000~Sure thing!~^000000"; + emotion 33; + close2; + announce "[Cluck! Cluck! Boom!] is about to start in Prontera!",bc_blue; + initnpctimer; + end; + case 2: + mes "[Cluckers]"; + mes "Cluck, cluck cluck... Cluck! ^FF0000~The current prize is^000000 ^008000"+ $cluck_item_amount +" "+ getitemname($cluck_item_id) +".^000000"; + next; + break; + case 3: + mes "[Cluckers]"; + mes "Cluck cluck? Cluck??? ^FF0000~What should the prize for winning be? Please input the ID.~^000000"; + input $cluck_item_id; + next; + mes "[Cluckers]"; + mes "Cluck? cluuuck? ^FF0000~How many if this item should I give away?~^000000"; + input $cluck_item_amount; + next; + mes "[Cluckers]"; + mes "Cluck cluck..? Cluck. ^FF0000~So, the prize is^000000 ^008000"+ $cluck_item_amount +" "+ getitemname($cluck_item_id) +"^000000? ^FF0000Great.~^000000"; + emotion 33; + next; + break; + case 4: + mes "[Cluckers]"; + mes "Cluck cluck cluck..."; + close; + } + } + mes "Cluck cluck! Cluuuuuck?"; + mes "Cluck...."; + close; + +OnTimer10000: + announce "Please hurry behind the fountain if you want to play with the crazy chicken!",bc_blue; + end; +OnTimer20000: + announce "Cluckers has eaten one of my items! I'm too scared to retrieve it!",bc_blue; + end; +OnTimer30000: + announce "Click the insane chicken and try squeeze out the item, if you're lucky you'll win! Are you ready?",bc_blue; + end; +OnTimer40000: + announce "GO! Click the chicken to get the prize!",bc_blue; + if (!$cluck_item_id) set $cluck_item_id,512; + if (!$cluck_item_amount) set $cluck_item_amount,1; + set .startcluck,1; + end; +} 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; +} diff --git a/npc/custom/events/hallow06.txt b/npc/custom/events/hallow06.txt new file mode 100644 index 000000000..57c4ebdf6 --- /dev/null +++ b/npc/custom/events/hallow06.txt @@ -0,0 +1,124 @@ +//===== rAthena Script ======================================= +//= Custom Halloween Event 2006 +//===== By: ================================================== +//= Stryker +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Halloween Event Script +//===== Additional Comments: ================================= +//= 1.1 - Added trick to script +//= 1.2 fixed bugs, optimized. Now uses 1 var instead of 3 [Lupus] +//============================================================ + +prontera,151,190,5 script Hallows' Eve Event 807,{ + mes "[Hallows' Eve Event]"; + if(Class == Job_Novice){ + mes "I am sorry but you have to got a job to complete the event."; + emotion e_swt,1; + close; + } + if(EVENT_HALWN06&1 && EVENT_HALWN06&2){ + mes "I am sorry but you have already completed the event."; + emotion e_sry; + close; + } + mes "Greetings fellow lively human."; + next; + mes "[Hallows' Eve Event]"; + mes "Halloween is upon us and it is almost time to adventure out into places few dare go."; + next; + mes "[Hallows' Eve Event]"; + mes "Trick or treat, which do you prefer?"; + next; + menu "Trick",-, "Treat",L_Treat; + + mes "[Hallows' Eve Event]"; + if(EVENT_HALWN06&2){ + mes "I'm sorry but you have already had a trick. Why don't you go pick a treat now."; + emotion e_sry; + close; + } + mes "Give me a min..."; + next; + set BaseExp,BaseExp+BaseLevel*1000; + set EVENT_HALWN06,EVENT_HALWN06|2; + + mes "[Hallows' Eve Event]"; + mes "Here is your treat. Your Base EXP has been slightly increased."; + next; + mes "[Hallows' Eve Event]"; + mes "I hope you enjoy your trick and Happy Halloween!"; + close; + +L_Treat: + mes "[Hallows' Eve Event]"; + if(EVENT_HALWN06&1){ + mes "I'm sorry but you have already had a treat. Why don't you go pick a trick now."; + emotion e_sry; + close; + } + if(!(EVENT_HALWN06&4)){ + mes "Great! This shall be so much fun."; + next; + mes "[Hallows' Eve Event]"; + mes "I will be sending you on a scavenger hunt for items."; + next; + mes "[Hallows' Eve Event]"; + mes "Bring back all the necessary items, and I will create you a treat."; + next; + mes "[Hallows' Eve Event]"; + mes "Not just any normal treat either that you can eat, but it is something you can wear on your head."; + next; + mes "[Hallows' Eve Event]"; + mes "But with all things made, some items are required first."; + mes "The list:"; + mes "1 Hat,"; + mes "30 Pumpkin, and"; + mes "20 Black Piece of Cloth"; + next; + mes "[Hallows' Eve Event]"; + mes "Hurry along now."; + set EVENT_HALWN06,EVENT_HALWN06|4; + close; + } + mes "Did you get the items I requested or do you need to see the list again?"; + next; + menu "Got'em",-, "Don't Have",L_Dont_Have, "See List",L_List; + + mes "[Hallows' Eve Event]"; + if((countitem(2220) < 1) || (countitem(535) < 30) || (countitem(7205) < 20)){ + mes "You don't have enough items. Come back when you do."; + emotion e_sry; + close; + } + delitem 2220,1; + delitem 535,30; + delitem 7205,20; + getitem 5134,1; + set EVENT_HALWN06,EVENT_HALWN06|1; + mes "Good job! I hope you are happy with your item."; + emotion e_grat; + next; + mes "[Hallows' Eve Event]"; + mes "Enjoy the rest of your halloween."; + emotion e_scissors,1; + close; + +L_Dont_Have: + mes "[Hallows' Eve Event]"; + mes "Go back out and search for them. Would you like to view the list?"; + next; + menu "No",-, "Yes",L_List; + close; + +L_List: + mes "[Hallows' Eve Event]"; + mes "I require the following items:"; + mes "1 Hat,"; + mes "30 Pumpkin, and"; + mes "20 Black Piece of Cloth."; + close; +} diff --git a/npc/custom/events/mushroom_event.txt b/npc/custom/events/mushroom_event.txt new file mode 100644 index 000000000..9ebd3211a --- /dev/null +++ b/npc/custom/events/mushroom_event.txt @@ -0,0 +1,62 @@ +//===== rAthena Script ======================================= +//= Find the Mushroom +//===== By: ================================================== +//= Mysterious +//===== Current Version: ===================================== +//= 3.6a +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Find the Mushroom - random amount of Mushrooms spawns in random maps. +//= Players need to find these mushrooms and kill them to gain prizes! +//===== Additional Comments: ================================= +//= 3.0 Fully Functional with Rewritten script. [Mysterious] +//= 3.6a Slightly edited. [Euphy] +//============================================================ + +prontera,142,228,6 script Find the Mushroom 1084,{ + mes "[ Find The Mushroom ]"; + if (!.Status) + mes "There is no event at the moment!"; + else { + mes "There are "+.Spawn+" Mushrooms left in "+.Map$+"!"; + mes "Find and kill the mushrooms to gain "+getitemname(.Prize)+"!"; + } + if (.Status || getgmlevel() < .GM) close; + mes "Start the event?"; + next; + if(select("- No:- Yes") == 1) close; + donpcevent strnpcinfo(0)+"::OnMinute10"; + mes "[ Find The Mushroom ]"; + mes "Event started!"; + close; + +OnInit: + set .Prize,512; // Reward item ID + set .Amount,10; // Reward item amount + set .GM,60; // GM level required to access NPC + setarray .Maps$[0],"izlude","geffen","morocc","prontera"; // Possible maps + end; + +OnMinute10: // Start time (every hour) + if (.Status) end; + set .Status,1; + set .Spawn,rand(1,10); // How many Mushrooms should spawn? + set .Map$,.Maps$[rand(getarraysize(.Maps$))]; + killmonster .Map$,"All"; + monster .Map$,0,0,"Please don't kill me!",1084,.Spawn,strnpcinfo(0)+"::OnMobKilled"; + announce "Find the Mushroom : Total of "+.Spawn+" Mushrooms have been spawned in "+.Map$+"!",0; + sleep 2500; + announce "Find the Mushroom : Every Mushroom you kill will give you "+getitemname(.Prize)+"!",0; + end; + +OnMobKilled: + set .Spawn, .Spawn - 1; + getitem .Prize, .Amount; + if (.Spawn) announce "[ "+strcharinfo(0)+" ] has killed a Mushroom. There are now "+.Spawn+" Mushroom(s) left.",bc_map; + else { + announce "The Find the Mushroom Event has ended. All the Mushrooms have been killed.",0; + set .Status,0; + } + end; +} diff --git a/npc/custom/events/uneasy_cemetery.txt b/npc/custom/events/uneasy_cemetery.txt new file mode 100644 index 000000000..60d569483 --- /dev/null +++ b/npc/custom/events/uneasy_cemetery.txt @@ -0,0 +1,133 @@ +//===== rAthena Script ======================================= +//= Uneasy Prontera Cemetery Quest +//===== By: ================================================== +//= Lupus +//===== Current Version: ===================================== +//= 1.2a (Tested and fully working!) +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= A periodical quest of the Uneasy Cemetery (Kill undead / Prevent their appearance) +//= Every day, at the midnight Prontera receive a wave of Undeads. +//= They come from Uneasy Cemetery of Prontera. To protect the players +//= from the undeads terror you may either kill the enemy. Or supply Mother Mathana +//= with needed amount of Holy Water. Every citizen can take his part in the +//= saving of Prontera city. After some days of quiet life... the Cemetery strikes back. +//===== Additional Comments: ================================= +//= 1.1 More advanced ver. Added some bonus the the one who'd kill the last walking undead +//= 1.2 Added coords to the script to make label OmMobDead working +//= 1.2a Changed item names to item IDs. [Samuray22] +//============================================================ + +prontera,3,3,3 script Uneasy_Check -1,{ + end; + +OnHour00: + set $UNEASY_DL,$UNEASY_DL-1; + set $UNEASY_BL,$UNEASY_BL+30; //add need of HW for 30 bottles per day + if ($UNEASY_BL>666) set $UNEASY_BL,666; //keep needed bottles not <=666 + if ($UNEASY_DL < 0) goto L_Start_Undead; +//The Cemetery is OK yet. + disablenpc "Mother Mathana"; + end; +OnInit: + if ($UNEASY_DL >= 0) disablenpc "Mother Mathana"; + end; + +OnHour06: + killmonsterall "prontera"; //The Sun kills undead in the morning + end; + +OnHour01: + if ($@UNEASY_MOB > 0) mapannounce "prontera","[Mother Mathana]: In the name of Odin, please finish these roaming undead leftovers!",0; + end; + +OnZombieDead: + set $@UNEASY_MOB,$@UNEASY_MOB-1; + if ($@UNEASY_MOB>0) end; + set $UNEASY_DL,0; + set $UNEASY_H$,strcharinfo(0); + if (Sex==1) mapannounce "prontera","[Mother Mathana]: Brave "+$UNEASY_H$+" has just killed the last undead in Prontera!",0; + if (Sex==0) mapannounce "prontera","[Mother Mathana]: Lady "+$UNEASY_H$+" has just killed the last undead in Prontera!",0; + set JobExp,JobExp+100; + set BaseExp,BaseExp+50; + end; + +L_Start_Undead: + killmonsterall "prontera"; //kills any left monsters + enablenpc "Mother Mathana"; +//call some monsters in the city + set $@UNEASY_MOB, 65; + areamonster "prontera",0,0,0,0,"Zombie",1015,30,"Uneasy_Check::OnZombieDead"; +//in the Cemetery + monster "prontera",268,349,"Zombie",1015,30,"Uneasy_Check::OnZombieDead"; + monster "prontera",269,350,"Ghoul",1036,5,"Uneasy_Check::OnZombieDead"; +//announce + mapannounce "prontera","[Mother Mathana]: The cememtery has become restless! In the name of Odin, hurry to the Sanctuary! Save the city of Prontera!",0; +} + +prontera,257,313,5 script Mother Mathana 79,{ + mes "[Mother Mathana]"; + if ($UNEASY_DL <= 0) goto L_Undead_Walk; + mes "I'm afraid there's something wrong with our old cemetery..."; + if ($UNEASY_H$==strcharinfo(0)) mes "But thanks to you, "+$UNEASY_H$+", we'll be able to sleep " + $UNEASY_DL + " nights!"; + if ($UNEASY_H$!=strcharinfo(0)) mes "But thanks to "+$UNEASY_H$+"'s support, we've got " + $UNEASY_DL + " easy nights!"; + emotion 0; + close; + +L_Undead_Walk: + if ($UNEASY_DL == 0) mes "THEY could return tomorrow's night again!"; + if ($UNEASY_DL == 0 && $UNEASY_H$==strcharinfo(0)) mes "Thank you, "+$UNEASY_H$+"! Now we'll manage to rest till the next midnight!"; + if ($UNEASY_DL == 0 && $UNEASY_H$!=strcharinfo(0)) mes "But due to "+$UNEASY_H$+"'s help we'll manage to rest till the next midnight!"; + mes "To calm down the restless cemetery, we should pour all these graves with the Holy Water. But our sisters and broters have run out of it."; + mes "Could you supply us with Holy Water?"; + next; + menu "Yes, have all my Holy Water!",-, "Nope, I need it.",M_NO, "I don't have any.",M_DONT_HAVE; + + if ( countitem(523)<1 ) goto M_DONT_HAVE; + set $UNEASY_BL,$UNEASY_BL-countitem(523); + delitem 523,countitem(523); + + if ( $UNEASY_BL > 0 ) goto L_NEED_MORE; +//set quiet days!!! no more undead for this period! + set $UNEASY_DL,5+((0-$UNEASY_BL)/30); + set $UNEASY_H$,strcharinfo(0); + mes "[Mother Mathana]"; + mes "Thank you, "+$UNEASY_H$+"! Now we've got enough Holy Water!"; + next; + mes "[Mother Mathana]"; + mes "Upon pouring the cemetery with that water we'll get " + $UNEASY_DL + " safe nights!"; + next; + killmonsterall "prontera"; //kills any left monsters + mes "[Mother Mathana]"; + mes "See, "+ $UNEASY_H$ +"? They all are gone now!"; + next; + mes "[Mother Mathana]"; + mes "Our Church is going to thank you personally..."; + next; + if (Sex==1) mapannounce "prontera","[Mother Mathana]: In the name of Odin we declare handsom "+$UNEASY_H$+" as a Prontera savior!",0; + if (Sex==0) mapannounce "prontera","[Mother Mathana]: In the name of Odin we declare beautiful "+$UNEASY_H$+" as a Prontera savior!",0; + mes "[Mother Mathana]"; + mes "In the name of Odin we bless you and decently present a modest gift just from Mareusis' wine-cellar."; + getitem 505,1; //Blue_Potion + set JobExp,JobExp+100; + set BaseExp,BaseExp+50; + close; + +L_NEED_MORE: + mes "[Mother Mathana]"; + mes "Thank you, good "+strcharinfo(0)+", but we still need " + $UNEASY_BL + " more Holy Water bottles."; + close; + +M_NO: + mes "[Mother Mathana]"; + mes "I'm afraid the old cemetery is going out of control soon... Please, get us all the Holy Water you can get."; + close; + +M_DONT_HAVE: + mes "[Mother Mathana]"; + mes "Alas! We still need " + $UNEASY_BL + " more bottles of Holy Water... Why don't you go and ask other people for some extra Holy Water?"; + mes "The old cemetery is going out of control soon..."; + mes "Please, in the name of Odin, help Prontera city."; + close; +} diff --git a/npc/custom/events/valentinesdayexp.txt b/npc/custom/events/valentinesdayexp.txt new file mode 100644 index 000000000..509b25f71 --- /dev/null +++ b/npc/custom/events/valentinesdayexp.txt @@ -0,0 +1,285 @@ +//===== rAthena Script ======================================= +//= Valentine Event Script + EXP bonus +//===== By: ================================================== +//= Lupus (based on Muad_Dib's work) +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN; 4500+ +//===== Description: ========================================= +// Close to other official stValentine event (added white chocolate) +// Custom: Handmade choco gives some EXP bonuses to married people +//===== Additional Comments: ================================= +//= WARNING!! To use this event, disable original valentinesday.txt +//= You can use this event from 12 till 16 February 8) [Lupus] +//= 1.1 Removed Duplicates [Silent] +//============================================================ + +// Tine - Valentine Event Chocolate Even Guide ------------------ +prontera,156,172,4 script Tine 58,{ +// Debug info for item effects and tricky conditions 8) +// mes "@dsv: "+@dsv; +// mes "ispartneron()=="+ispartneron(); +// mes "sex == "+sex; +// if(@dsv == gettime(3)+1) mes "@dsv == gettime(3)+1"; + + mes "[Tine]"; + mes "The legend says that on 14th February... on the Day of Saint Valentine..."; + mes "Only in Run-Midgard kingdom..."; + next; + specialeffect 417; + mes "[Tine]"; + mes "Some married chocolate lovers almost double their experience at trainings!"; + mes "But everything isn't so simply..."; + next; + menu "Wow! Tell me more!",M_INFO,"Marri... what?",-; + + mes "[Tine]"; + mes "Are you a single?"; + mes "Today is a great date to ask your beloved half for marriage!"; + next; + mes "[Tine]"; + mes "The Marriage fee is ridiculous low these days!"; + close; + +M_INFO: + mes "[Tine]"; + mes "The magic effect posesses only handmade chocolate from grand-grand-grand-whoever recipes!"; + next; + mes "[Tine]"; + mes "It being known that Black Handmade Chocolate works on married guys... And the White one on the married girls!"; + mes "If you lose your wedding ring... then alas, it won't work on you."; + next; + mes "[Tine]"; + mes "On having a Chocolate, you should put off your ring then... put it back... And if your partner is online, then magc would last till the next hour!"; + next; + mes "[Tine]"; + mes "Rumors bark that guys and gals have +50% EXP bonuses on FIVE different races of the monsters... Exluding bloody bosses, of course."; + next; + mes "[Tine]"; + mes "There's a fameous confectioner in the Castle of Prontera! He's the one you need."; + close; + +OnInit: + //559,Hand-made_Chocolate + setitemscript 559,"{ itemheal 50,50; if(sex==0 || @dsv == gettime(3)+1 || ispartneron()==0)end; set @dsv,gettime(3)+1; misceffect 113; }"; + //560,Hand-made_White_Chocolate + setitemscript 560,"{ itemheal 50,50; if(sex || @dsv == gettime(3)+1 || ispartneron()==0)end; set @dsv,gettime(3)+1; misceffect 113; }"; + + //2634,Wedding_Ring_M,Wedding Ring,5,,10,0,,0,,0,127918079,7,1,136,,0,0,0,{ skill 334,1; skill 335,1; skill 336,1; } + setitemscript 2634,"{ skill 334,1; skill 335,1; skill 336,1; if(@dsv == gettime(3)+1 && ispartneron()){ bonus2 bExpAddRace,5,50; bonus2 bExpAddRace,6,50; bonus2 bExpAddRace,7,50; bonus2 bExpAddRace,8,50; bonus2 bExpAddRace,1,50; } }"; + //2635,Wedding_Ring_F,Wedding Ring,5,,10,0,,0,,0,127918079,7,0,136,,0,0,0,{ skill 334,1; skill 335,1; skill 336,1; } + setitemscript 2635,"{ skill 334,1; skill 335,1; skill 336,1; if(@dsv == gettime(3)+1 && ispartneron()){ bonus2 bExpAddRace,0,50; bonus2 bExpAddRace,9,50; bonus2 bExpAddRace,2,50; bonus2 bExpAddRace,3,50; bonus2 bExpAddRace,4,50; } }"; + end; +} + +// Stephen - Valentine Event Chocolate seller ------------------ +alberta,26,243,4 script Stephen#val1 58,{ + mes "[Stephen]"; + mes "Guess what I've got?"; + mes "A tasty treat not easily found in Rune-Midgard...."; + next; + mes "[Stephen]"; + mes "Chocolate!"; + mes "That's right, don't you love chocolate.... I do."; + mes "And you are in luck, because I'm selling them for only 5,000 zeny a piece!"; + next; + menu "I want some chocolate!",M_CHOCO,"No thanks.",-; + + mes "[Stephen]"; + mes "You don't want any chocolate?"; + mes "I'm telling you! You'll regret it!"; + mes "You better get some now... you won't come across Chocolate like this ever again!"; + mes "Think it over and visit me again sometime."; + close; + +M_CHOCO: + mes "[Stephen]"; + mes "Hah!"; + mes "I knew it!"; + mes "But I can't sell you more then 5 at once....but, if you really need more...."; + mes "you can come back again."; + mes "So how many do you want?"; + next; + set @needmon,0; + input @flag_num; + if (@flag_num <= 0) goto L_NONE; + if (@flag_num > 5) goto L_ERR; + set @needmon,@flag_num*5000; + if (Zeny < @needmon) goto L_NOTENO; + set Zeny,Zeny - @needmon; + getitem 558,@flag_num; + mes "[Stephen]"; + mes "There you go!"; + mes "You can give that to someone as a gift, or enjoy it yourself!"; + mes "Mmm....sweet chocolate..."; + mes "Visit me anytime...!"; + close; + +L_ERR: + mes "[Stephen]"; + mes "I'm sorry but I can't give you that many."; +L_NONE: + close; + +L_NOTENO: + mes "[Stephen]"; + mes "I'm sorry but it seems you can't afford to buy these of me."; + close; +} + +// Jainie -- Gives information about Valentine Event ------------------------ +alberta,29,243,4 script Jainie#val1 53,{ + mes "[Jainie]"; + mes "You know what? The chocolate that my boyfriend sells are from me!"; + mes "I made them by myself. Now I need some Milk for my special White Chocolate."; + next; + mes "[Jainie]"; + mes "You know ... In cetain countries, there's a tradition of presenting chocolates to a person that you love..."; + mes "They call it ^3355FFValentine's Day^000000."; + next; + mes "[Jainie]"; + mes "So I gave him my delicious chocolate..."; + mes "And then he made me cook a lot more..."; + mes "And now he is selling them to everyone."; + mes "I guess he really enjoyed it."; + mes "But, I do feel good when people buy something I have made."; + next; + mes "[Jainie]"; + mes "It would be great if you bought some too..."; + mes "I will be making white chocolates for a while so..."; + next; + menu "I want some white chocolate!",M_CHOCO,"No thanks.",-; + + mes "[Jainie]"; + mes "You don't like white chocolate?"; + mes "Then buy some Stephen's black one!"; + close; + +M_CHOCO: + mes "[Jainie]"; + mes "I can't sell you more then 5 at once....but, if you really need more...."; + mes "you can come back again."; + mes "So how many do you want? 1 portion is 4500z + 1 Milk."; + next; + set @needmon,0; + input @flag_num; + if (@flag_num == 0) goto L_NONE; + if (@flag_num > 5) goto L_ERR; + set @needmon,@flag_num*4500; + if (Zeny < @needmon) goto L_NOTENO; + if (countitem(519) < @flag_num) goto L_NOMILK; + set Zeny,Zeny - @needmon; + delitem 519,@flag_num; + getitem 561,@flag_num; + mes "[Jainie]"; + mes "There you go!"; + mes "You can give that to someone as a gift, or enjoy it yourself!"; + mes "Mmm... sweet chocolate..."; + mes "Visit me anytime...!"; + close; + +L_ERR: + mes "[Jainie]"; + mes "I'm sorry but I can't give you that many."; +L_NONE: + close; + +L_NOTENO: + mes "[Jainie]"; + mes "I'm sorry but it seems you can't afford to buy these of me."; + close; + +L_NOMILK: + mes "[Jainie]"; + mes "You need "+@flag_num+" Milk for "+@flag_num+" portions of my special White Chocolate..."; + close; +} + +// Carl Orleans -- Valentine Event Chocolate maker ------------------ +prt_castle,54,34,4 script Carl Orleans#val1 47,{ + mes "[Carl Orleans]"; + mes "Yes? What can I cook for you?"; + next; + menu "Black handmade Chocolate, please",-,"I want a White handmade Chocolate...",M_WHITE,"I'm lost, sorry to bother you.",M_END; + + mes "[Carl Orleans]"; + mes "Well, I just might be able to fulfill your needs..."; + next; + if (countitem(558)<3) { + mes "[Carl Orleans]"; + mes "I'm sorry you do not have enough Chocolate Bars to do this."; + if(rand(2))mes "They say Stephen from Alberta used to sell good Chocolate."; + close; + } + delitem 558,3; + mes "[Carl Orleans]"; + mes "You got 3 pieces of pure chocolate I see."; + mes "Give them to me..."; + next; + mes "[Carl Orleans]"; + mes "Ok, now I will only create my special handmade chocolates if you promise to use it wisely."; + next; + mes "[Carl Orleans]"; + mes "....Hmmmmmm....."; + mes "Well..."; + next; + getitem 559,1; + mes "[Carl Orleans]"; + mes "Here."; + if(rand(2))close; + mes "I hope you give it to someone special, because its a special chocolate."; + mes "As you know... only I can create this."; + next; + mes "[Carl Orleans]"; + mes "Enjoy."; + close; + +M_WHITE: + mes "[Carl Orleans]"; + mes "Well, I just might be able to fulfill your needs..."; + next; + if (countitem(561)<3) { + mes "[Carl Orleans]"; + mes "I'm sorry you do not have enough White Chocolate Bars to do this."; + if(rand(2))mes "They say Jainie from Alberta used to sell good White Chocolate."; + close; + } + delitem 561,3; + mes "[Carl Orleans]"; + mes "You got 3 pieces of pure white chocolate I see."; + mes "Give them to me..."; + next; + mes "[Carl Orleans]"; + mes "Ok, now I will only create my special handmade chocolates if you promise to use it wisely."; + next; + mes "[Carl Orleans]"; + mes "....Hmmmmmm....."; + mes "Well..."; + next; + getitem 560,1; + mes "[Carl Orleans]"; + mes "Here."; + if(rand(2))close; + mes "I hope you give it to someone special, because its a special chocolate."; + mes "As you know... only I can create this."; + next; + mes "[Carl Orleans]"; + mes "Enjoy."; + close; + +M_END: + mes "[Carl Orleans]"; + mes "Oh.. well, if you want me to make some of my special handmade Chocolate...."; + mes "You will need to give me at least ^0000FF 3 Chocolates^000000 or ^0000FF 3 White Chocolates^000000."; + if(rand(2))close; + next; + mes "[Carl Orleans]"; + mes "That's right, only ^0000FF 3 Chocolates^000000 or ^0000FF 3 White Chocolates^000000."; + mes "Bring them to me and you'll get what you came for."; + if(rand(2))close; + next; + mes "[Carl Orleans]"; + mes "See You."; + close; +} diff --git a/npc/custom/events/xmas_rings_event.txt b/npc/custom/events/xmas_rings_event.txt new file mode 100644 index 000000000..1a52fd43a --- /dev/null +++ b/npc/custom/events/xmas_rings_event.txt @@ -0,0 +1,193 @@ +//===== rAthena Script ======================================= +//= Karachun Event (Xmas Rings Quest) +//===== By: ================================================== +//= Lupus (1.0) +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= rAthena SVN; 4880+ (with 'setItemScript' command) +//===== Description: ========================================= +//= Custom event: Karachun (from 8 Dec till 8 Jan), X-Mas, HNY +//===== Additional Comments: ================================= +//= 1.0 Tested, fully working. 1.0a a few typos fix +//= 1.1 Readded Mdef +1 and Luk +1 to Santa's Hat [Lupus] +//= 1.2 Fixed double quotes not being escaped [brianluau] +//============================================================ + +prontera,156,174,4 script Snower 713,{ + mes "[Snower]"; + if(Q_XMSRINGS==2){ + mes "Oh.. is it true? You've helped my sis Sneewy? Thank you."; + }else if(Q_XMSRINGS==3){ + mes "Snoowy's sent me a bird with a message. She told me about your help..."; + mes "I'll tell you a secret of the magic rings."; + emotion e_no1; + next; + mes "[Snower]"; + mes "They have magic power only from 8 December till 8 January."; + next; + mes "[Snower]"; + mes "By the way, just put on Santa's Hat to discover their true power."; + next; + mes "[Snower]"; + mes "If you put on both rings their power would be doubled."; + mes "Have a nice day!"; + close; + }else{ + mes "Hi! Two my sisters and I are preparing gifts for the whole 3 holidays!"; + } + emotion e_sob; + next; + menu "Where are your sisters?",-, "What holidays?",M_PR,"What gifts?",M_WRAP,"May I help you?",M_QUEST; + + mes "[Snower]"; + mes "My younger sis Sneewy's left to some faraway land to prepare gifts for their poor children... I don't know where. You should ask my elder sis and her birdies."; + next; + mes "[Snower]"; + mes "My elder sis? Her name's Snoowy. She's sailed to some green island... She's talking about some gifts for dolphins or something..."; + close; + +M_PR: + mes "[Snower]"; + mes "The whole three holidays? Well they come one after another!"; + mes "^000080The Christmas^000000, ^FF0000Karachun^000000 and ^008000New Year Eve^000000!"; + next; + mes "[Snower]"; + mes "^FF0000Karachun^000000? Heh... This is an old pagans festival. They used to celebrate it before the appearance of HNY and XMas, you know."; + next; + goto M_QUEST; + +M_WRAP: + mes "[Snower]"; + mes "My sisters say that all the gifts should look the same way. Or else some children might fight for fancy ones!"; + next; + mes "[Snower]"; + mes "Would you like me to wrap your fancy gift boxes with a gray paper?"; + next; + menu "Wrap them, please!",-, "No, thanks.",M_QUEST; + + set @prizes, countitem(664)+countitem(665)+countitem(666)+countitem(667); + if( @prizes == 0){ + mes "[Snower]"; + mes "I don't see any gifts in fancy boxes on you..."; + if(countitem(644))mes "You've got only gray boxes."; + close; + } + delitem 664,countitem(664); + delitem 665,countitem(665); + delitem 666,countitem(666); + delitem 667,countitem(667); + getitem 644,@prizes; + + mes "[Snower]"; + mes "*shuffle* Here you go."; + next; + +M_QUEST: + mes "[Snower]"; + mes "I wish you find my sisters ASAP... They need help."; + if(Q_XMSRINGS==0) set Q_XMSRINGS,1; + close; + +OnInit: +//Santa's Hat + setitemscript 2236,"{ bonus bMdef,1; bonus bLuk,1; if(isequipped(2636,2637)){if(@xmr == gettime(2))end; set @xmr,gettime(2); misceffect 410; end;} if(isequipped(2636)){if(@xmr == gettime(2))end; set @xmr,gettime(2); misceffect 72;} if(isequipped(2637)){if(@xmr == gettime(2))end; set @xmr,gettime(2); misceffect 338;}}"; +//Gold Xmas Ring + setitemscript 2636,"{ bonus bLoseSPWhenUnequip,30; if(isequipped(2236)==0)end; if(getskilllv(\"AL_HEAL\")){skill \"TF_HIDING\",4+isequipped(2637);}else{skill \"AL_HEAL\",1+4*isequipped(2637);} }"; +//Silver Xmas Ring + setitemscript 2637,"{ bonus bDamageWhenUnequip,40; if(isequipped(2236)==0)end; if(getskilllv(\"AL_TELEPORT\")){skill \"MC_IDENTIFY\",1;}else{skill \"AL_TELEPORT\",1+isequipped(2636);} }"; + end; +} + +louyang,224,249,4 script Sneewy 717,{ + mes "[Sneewy]"; + if(Q_XMSRINGS==0){ + mes "Hi! I'm waithing for my sister's birdy with mail..."; + emotion e_sob; + close; + } + if(Q_XMSRINGS==1){ + mes "I wish I had 4 more gray Gift Boxes for native children..."; + emotion e_sob; + next; + mes "[Sneewy]"; + mes "Oh, hello. Has my brother Snower told you everything?"; + next; + menu "Here are your 4 Gift Boxes",-, "I don't know any Snowhatevers...",M_END; + + mes "[Sneewy]"; + if(countitem(644)<4){ + mes "Gimme 4 gifts for poor kids... Wait, you haven't got 4 of them!"; + emotion e_sry; + close; + } + set Q_XMSRINGS,2; + delitem 644,4; + getnameditem 2637,strcharinfo(0); + emotion e_kis2; + mes "Thank you! Here's my li'l something for you!"; + next; + mes "[Sneewy]"; + mes "By the way, if you put on 2 different rings then your holidays leveling would be easier!"; + close; + } + emotion e_thx; + mes "Thanks again! No children will meet the holidays without the gifts!"; + close; + +M_END: + mes "[Sneewy]"; + mes "Pity... I've got a magic Santa's ring... I'd exchange it for 4 Gift Boxes..."; + emotion e_swt; + close; +} + +izlu2dun,133,160,2 script Snoowy 714,{ + mes "[Snoowy]"; + if(Q_XMSRINGS==0){ + mes "Helloooou! Do you know my bro and sis? How so? My brother Snower's well known in Prontera!! Just ask any child there."; + emotion e_hmm; + close; + } + if(Q_XMSRINGS==1){ + mes "Darn... How could poor children be more important than the marine folks.. Am I wrong?"; + next; + mes "[Snoowy]"; + mes "Errr. Helloou there. My sister Sneewy's sent me a birdie message. The letter was wet and I couldn't read anything but some ending letters of her address..."; + next; + mes "[Snoowy]"; + mes "Look, it's something like 'yang' in the very end... Hmm... She must be misspelled 'Al Doo Boryang'..."; + close; + } + if(Q_XMSRINGS==2){ + mes "You've helped my sis? It's just great!"; + next; + mes "[Snoowy]"; + mes "But I too need 3 more gifts for my marine folk friends..."; + next; + menu "Have these gifts!",-, "I need a li'l something in return",M_END; + + mes "[Snoowy]"; + if(countitem(644)<3){ + mes "Oops!! You haven't got 3 gray gift boxes on you."; + emotion e_sry; + close; + } + set Q_XMSRINGS,3; + delitem 644,3; + getnameditem 2636,strcharinfo(0); + emotion e_kis; + mes "Thaank yoouu! Have this magic ring!"; + close; + } + emotion e_thx; + mes "Oh... the whole marine folk send you their thanks! They love presents so much!!!"; + if(rand(2))mes "Didn't you know that Santa's Hat reveals the real power of the rings?"; + close; + +M_END: + mes "[Snoowy]"; + mes "I'd exchange a GOLD magic ring for 3 gift boxes..."; + emotion e_swt; + close; +} |