/*========================================================= Monster Quest Original concept by ToiletMaster Arrays and switch concepts by Emistry Annotation and organization by Via =========================================================== Description: A daily monster quest that tailours targets in accordnace with the interacting player's base level and the server's current day. A little configuration is available under the OnInit label. Changes to monsters must be made in the actual switches. =========================================================== Changelog: 1.0 - Original concept [ToiletMaster] 2.0 - Used arrays and switches; reduced file size [Emistry] 2.1 - Removed useless reiteration and added config [Via] 2.2 - Added comments and re-organized file layout [Via] =========================================================*/ prontera,160,187,4 script Monster Quest#prt 900,{ mes .npc_name$; mes "Hello there! I provide various monster hunting quests that needs to be done daily!."; next; mes .npc_name$; mes "If you finish my quests, you'll get a good reward!"; next; // Determine if player meets minimum BaseLevel requirements if (BaseLevel < .min_level) { mes .npc_name$; mes "Unfortunately, you're too weak to start the quest. ^FF0000Please come back on you're at level "+ .min_level +"!^000000"; next; mes .npc_name$; mes "Good luck, "+ strcharinfo(0) +"!"; close; } mes .npc_name$; mes "What would you like to do today?"; next; // Choose menu option switch (select("Start Monster Quest:Complete Quest:Remove Quest:Information")) { case 1: mes .npc_name$; // Check if player has active quest for (@i = 82000; @i < 82267; @i++) { if (checkquest(@i)) { mes "You're currently still performing a quest!"; mes "Please finish the quest or abandon the quest!"; close; } } // Determine which quest array to assign based on player's base level and what day it is (0 = Sunday, 1 = Monday, etc.) if (BaseLevel >= 50 && BaseLevel <= 69) { switch (gettime(4)) { case 0: setarray .@monster$,"Marc","Bongun","Dustiness","Driller","Wootan Fighter"; setarray .@questid,82006,82013,82020,82027,82034; break; case 1: setarray .@monster$,"Beetle King","Alligator","Rice Cake Boy","Jakk","Mantis","Dryad"; setarray .@questid,82000,82007,82014,82021,82028,82035; break; case 2: setarray .@monster$,"Goblin Archer","Swordfish","Merman","Hunter Fly","Tri-Joint","Dokebi"; setarray .@questid,82001,82008,82015,82022,82029,82036; break; case 3: setarray .@monster$,"Greatest General","Minorous","Strouf","Hode","Steam Goblin","Curupira"; setarray .@questid,82009,82016,82023,82030,82037; break; case 4: setarray .@monster$,"Mummy","Munak","Golems","Leaf Cat","Horong","Baby Leopard"; setarray .@questid,82003,82010,82017,82024,82031,82038; break; case 5: setarray .@monster$,"Metaller","Isis","Sandman","Stone Shooter","Grizzly"; setarray .@questid,82004,82011,82018,82025,82032; break; case 6: setarray .@monster$,"Green Iguana","Flora","Ghoul","Sohee","Wootan Shooter"; setarray .@questid,82005,82012,82019,82026,82033; } } else if ( BaseLevel >= 70 && BaseLevel <= 99 ) { switch (gettime(4)) { case 0: setarray .@monster$,"Karakasa","Grand Peco","Pasana","Metaling","Dancing Dragon","Mavka","Uzhas","Poison Toad","Zombie Prisoner","Clock Tower Manager","Breeze","Bloody Injustice","Wicked Nymph"; setarray .@questid,82045,82052,82258,82065,82071,82079,82086,82093,82100,82107,82114,82121,82128; break; case 1: setarray .@monster$,"Sidewinder","Nine Tails","Argiope","Iara","Comodo","Punk","Raydric Archer","Penomena","Venomous","Permeter","Teddy Bear","Waste Stove","Stapo","The Paper"; setarray .@questid,82039,82046,82266,82059,82066,82073,82080,82087,82094,82101,82108,82115,82122,82129; break; case 2: setarray .@monster$,"Toucan","Marduk","Dark Frame","Evil Druid","Clock","Les","Novus","Miyabi Doll","Siorova","Marionette","Demon Pungus","Enchanted Peach Tree","Roween","Obsidian"; setarray .@questid,82040,82047,82253,82060,82067,82074,82081,82088,82095,82102,82109,82116,82123,82130; break; case 3: setarray .@monster$,"Zerom","Tamruan","Parasite","Goat","Wood Goblin","Mi Gao","Stem Worm","Rafflesia","Noxious","Pitman","Skeleton Prisoner","Solider","Anopheles","Tengu"; setarray .@questid,82041,82048,82254,82061,82068,82075,82082,82089,82096,82103,82110,82117,82124,82131; break; case 4: setarray .@monster$,"Jaguar","Geographer","Wraith","Headless Mule","Sleeper","Kapha","Cendrawasih","Witch","Spring Rabbit","Novus","Red Eruma","Deviruchi","Shinobi"; setarray .@questid,82042,82049,82255,82062,82068,82076,82083,82090,82097,82104,82111,82118,82125,82132; break; case 5: setarray .@monster$,"Requiem","Rideword","Orc Archer","Alnoldi","Raydric Archer","Ancient Worm","Mole","Dragon Tail","Firelock Soldier","Wild Ginseng","Elder","Freezer","Evil Cloud Hermit"; setarray .@questid,82043,82050,82256,82063,82069,82077,82084,82091,82098,82105,82112,82119,82126; break; case 6: setarray .@monster$,"Wooden Golem","Piranha","Petite","Jing Guai","Cramp","Harpy","Porcellio","Hyegun","Alarm","Zipper Bear","Owl Duke","Bloody Butterfly","Evil Cloud Hermit"; setarray .@questid,82044,82051,82257,82064,82070,82078,82085,82092,82099,82106,82113,82120,82127; } } else if (BaseLevel >= 100 && BaseLevel <= 125) { switch (gettime(4)) { case 0: setarray .@monster$,"Assaulter","Hill Wind","Kobold (Shield & Hammer)","Diabolic","Muscipular","Dullahan","Aunoe","Venatu (Blue)","Hell Poodle","Dimik (Orange)","Plasma (Red)","Cornus","Remover"; setarray .@questid,82138,82145,82151,82159,82166,82171,82180,82187,82194,82201,82208,82215,82222; break; case 1: setarray .@monster$,"Neraid","Quve","Drosera","Phendark","Sting","Deleter (Flying)","Kobold Archer","Ice Titan","Dark Pinguicula","Plasma(Blue)","Plasma (Green)","Gremlin","Owl Baron","Knight of Abyss"; setarray .@questid,82132,82139,82146,82153,82160,82167,82174,82181,82188,82195,82202,82209,82216,82223; break; case 2: setarray .@monster$,"Siroma","Gargoyle","Blazer","Desert Wolf","Fake Angel","Gazeti","Anolian","Aliza","Draco","Raydric","Plasma (Purple)","Centipede Larva","Beholder","Hodremlin"; setarray .@questid,82133,82140,82147,82154,82161,82168,82175,82182,82189,82196,82203,82210,82217,82224; break; case 3: setarray .@monster$,"Dark Priest","Explosion","Kobold (With Mace)","Lava Golem","Anubis","Nightmare Terror","Loli Ruri","Ancient Mimic","Ancient Mummy","Pot Dofle","King Dramoh","Plasma (Yellow)","Flame Skull","Hillslion"; setarray .@questid,82134,82141,82147,82155,82162,82167,82176,82183,82190,82197,82204,82211,82218,82225; break; case 4: setarray .@monster$,"Heater","Anacondaq","Lude","Disguise","Deleter (Not Flying)","Kobold (With Axe)","Luciola Vespa","Sropho","Nepenthes","Dimik (Grey)","Naga","Succubus","Aqua Elemental"; setarray .@questid,82135,82142,82148,82156,82163,82168,82177,82184,82191,82198,82205,82212,82219; break; case 5: setarray .@monster$,"Rybio","Alice","Medusa","Carat","Pinguicula","Majoruros","Magmaring","Venatu (Red)","Ancient Mummy","Dimik (Red)","Mini Demon","Wanderer","Retribution"; setarray .@questid,82136,82143,82149,82157,82164,82169,82178,82185,82192,82199,82206,82213,82220; break; case 6: setarray .@monster$,"Kaho","Galion","Heirozoist","Snowier","Gibbet","Arclouse","Sedora","Venatu (Grey)","Deathword","Dimik (Blue)","Violy","Incubus","Apocalypse"; setarray .@questid,82137,82144,82150,82158,82165,82170,82179,82186,82193,82200,82207,82214,82221; } } else { switch (gettime(4)) { case 0: setarray .@monster$,"Shelter","Observation","Banshee","Erend","Antler Scaraba"; setarray .@questid,82232,82239,82246,82254,82261; break; case 1: setarray .@monster$,"Vanberk","Centipede","Frus","Acidus","Necromancer","Salamander"; setarray .@questid,82226,82233,82240,82248,82255,82262; break; case 2: setarray .@monster$,"Lady Solace","Echio","Agav","Incantation of Morrocc (Ground)","Rawrel","Rake Scaraba"; setarray .@questid,82227,82234,82241,82249,82256,82263; break; case 3: setarray .@monster$,"Ragged Zombie","Ferus (Green)","Tatacho","Whikebain","Armania","Miming"; setarray .@questid,82228,82235,82242,82250,82257,82264; break; case 4: setarray .@monster$,"Seeker","Skogul","Imp","Incantation of Morrocc","Kavac","Little Fatum"; setarray .@questid,82229,82236,82243,82251,82258,82265; break; case 5: setarray .@monster$,"Zombie Slaughter","Knocker","Acidus (Gold)","Dolomedes","Kasa"; setarray .@questid,82230,82237,82244,82252,82259; break; case 6: setarray .@monster$,"Isilla","Ferus (Red)","One Horned Scaraba","Bradium Golem","Ygnizem"; setarray .@questid,82231,82238,82245,82253,82260; } } // Build list of monsters to choose from .@size = getarraysize(.@monster$); for(.@i = 0; .@i < .@size; .@i++ ) .@menu$ = .@menu$ + .@monster$[.@i] +":"; // Display which monster was selected .@i = select( .@menu$ ) - 1; mes "You are required to hunt^FF0000 "+ .@monster$[.@i] +". ^000000 Once you're done, return to me."; // Set quest for selected monster monster_quest = .@questid[.@i]; setquest .@questid[.@i]; break; case 2: mes .npc_name$; // Check if quest is completed if(checkquest(monster_quest, HUNTING) == 2) { mes "You've done it! Here's your reward!"; // Award EXP for completed if(monster_quest < 82012) getexp 315000, 354888; else if(monster_quest < 82019) getexp 463750, 446250; else if(monster_quest < 82039) getexp 525000, 600000; else if(monster_quest < 82069) getexp 463750, 446250; else if(monster_quest < 82099) getexp 2129400, 2010320; else if(monster_quest < 82132) getexp 2679075, 2245410; else if(monster_quest < 82154) getexp 2756250, 2455000; else if(monster_quest < 82183) getexp 3150000, 2555000; else if(monster_quest < 82207) getexp 4284000, 3555000; else if(monster_quest < 82226) getexp 5005000, 3655000; else if(monster_quest < 82247) getexp 5705000, 4055000; else getexp 7705000,555000; erasequest monster_quest; monster_quest = 0; } // Quest is incomplete else { mes "Your current quest has not yet been completed."; close; } break; case 3: mes .npc_name$; mes "Would you like to remove your current quest?"; next; // Check if choice was to remove quest if (select("No, thanks!:Yes, remove my current quest.") == 2) { // Check for active monster quest if (monster_quest) { erasequest monster_quest; mes .npc_name$; mes "Quest has been removed!"; mes "All progress towards the quest have been deleted"; next; mes .npc_name$; mes "If you'd like a new quest, please come and look for me!"; close; } // No active monster quest was found mes .npc_name$; mes "You have no active quest! Please check your requirements once again!"; close; } // No removal was requested mes .npc_name$; mes "Sure! let me know if you require anything else!"; mes "Happy Hunting Riser!"; close; case 4: mes .npc_name$; mes "My job is to supply quest depending on your level."; next; mes .npc_name$; mes "However, this would only apply to players level 50 and above."; next; mes .npc_name$; mes "You may party up to kill the monsters, however the kill counts only if you're within the same screen; EXP still applies for the entire map."; next; mes .npc_name$; mes "Oh, and I almost forgot to mention! You are only able to accept one quest at a time. You can remove quests by selecting the 'Remove quest' option. Cheers!"; close; } OnInit: // Configuration .npc_name$ = "[^990000Monster Quest^000000]"; // NPC name .min_quest = 82000; // Minimum quest ID .max_quest = 82267; // Maximum quest ID .min_level = 50; // Minimum level to quest end; }