/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * _______ _______ _____ _ _ _______ _ _ __ __ ______ * * |______ | | | | | |____/ |______ \___/ \_/ ____/ * * ______| | | | |_____| | \_ |______ _/ \_ | /_____ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Super Leveling Dungeon * * Script Version 1.0 * * Credits : Smokexyz [sagunxp@gmail.com] * * Skype - smokekho * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ prontera,141,179,3 script Super Trainer 4_M_DST_TOUGH,{ set .@npc_name$,"[^999900Super Trainer^000000]"; set .@sl_name$,"[Super Training]"; mes .@npc_name$; if (BaseLevel < 50){ mes "Hello, "+strcharinfo(0)+"..."; mes "here you can access a memorial dungeon training service."; next; mes "I'm sorry, but you will need to have a base level of at least ^FF0000Level 50^000000 to use the Super Training services."; close; } mes "Howdy, "+strcharinfo(0)+"..."; if( has_instance("1@mir") == "" ){ mes "The Super Training program is a crash course of experience for players."; mes "Monsters from all over the world are collected to spawn based on the dungeon's level."; next; mes .@npc_name$; mes "Once you enter, an Assistant will be available to provide dungeon controls."; next; mes .@npc_name$; mes "What say, would you like to give it a shot?"; if( select("Enter the dungeon","Cancel") != 1) close; goto Lcreateinstance; } else { mes "It seems that there already is a dungeon reserved by your party."; goto L_DirectInstance; end; } Lcreateinstance: set .@party_id, getcharid(1); next; // ----------------------------- mes .@npc_name$; if( .@party_id == 0 ) { mes "You need to be in a group even if you enter alone."; close; } if( getpartyleader(.@party_id,2) != getcharid(0) ) { mes "Only the party leader can register for " + .@sl_name$ + "."; close; } if( Zeny < .TrainingZenyReq ) // to check for zeny requirement { mes "...I'm sorry, you do not have enough Zeny."; mes "To enter this dungeon you require "+.TrainingZenyReq+" Zeny."; close; } mes "For my services you will be charged "+.TrainingZenyReq+" Zeny."; mes "Do you wish to continue?"; next; if(select("- Proceed","- Cancel") == 2) close; set Zeny,Zeny-.TrainingZenyReq; set .@sl_instance, instance_create(.@sl_name$, .@party_id); if( .@sl_instance == -1 ) { mes .@npc_name$; mes "There is already a memorial dungeon registered for your group."; close; } else if( .@sl_instance < 0 ) { mes .@npc_name$; mes "Instance creation failed: " + .@sl_instance; mes "Please report this to a Game Master."; close; } if( instance_attachmap(.TrainingMap$, .@sl_instance,1) == "" ) { instance_destroy(.@sl_instance); mes .@npc_name$; mes "Instance creation failed. No more free maps."; mes "Please report this to a Game Master."; close; } mes .@npc_name$; mes "The dungeon is well prepared."; mes "You and your party will now be teleported to the Super dungeon."; instance_attach(.@sl_instance); instance_set_timeout 14400,300,.@sl_instance; // One hour instance_init(.@sl_instance); donpcevent instance_npcname("Assistant#slinstance", instance_id())+"::OnEnable"; next; if( has_instance(.TrainingMap$) == "") { mes .@npc_name$; mes "You must register a dungeon with your party."; mes "And only then can you enter it."; close; } set .@sl_instance, instance_id(); // Store IDs instance_attach(.@sl_instance); mes .@npc_name$; mes "You will now be warped."; close2; warp has_instance("1@mir"),99,93; end; L_DirectInstance: switch( select("Lets go!:Cancel") ) { case 1: if( has_instance("1@mir") == "" ) { mes .@npc_name$; mes "You must register a dungeon with your party."; mes "Only then can you enter it."; close; } close2; instance_attach(instance_id()); if (has_instance("1@mir") != "") warp has_instance("1@mir"),99,93; end; default: mes .@npc_name$; mes "Okay, come back when you're ready then."; break; } close; OnInit: /* Configuration */ set .TrainingZenyReq,25000; // Amount of zeny required to create an instance. set .TrainingMap$,"1@mir"; set .HappyHourBonusRate,150; // 150% of actual EXP end; OnWhisperGlobal: if(getgmlevel() < 99) end; else if ( compare ( @whispervar0$, "hhourstart" ) ) goto OnHappyHour; else if ( compare ( @whispervar0$, "hhourend" ) ) goto OnHappyHourEnd; end; OnHappyHour: OnHour06: OnHour12: OnHour18: OnHour00: announce "Super Training : Out of generosity I'm teaching my greatest techniques for the next two hours, level with me the fast way!",bc_blue; setmapflag .TrainingMap$,mf_bexp,.HappyHourBonusRate; setmapflag .TrainingMap$,mf_jexp,.HappyHourBonusRate; end; OnHappyHourEnd: OnHour08: OnHour14: OnHour20: OnHour02: announce "Super Training : I'll be back soon with more great techniques for those who are trying to levelup!",bc_blue; setmapflag .TrainingMap$,mf_bexp,100; setmapflag .TrainingMap$,mf_jexp,100; end; OnPCLoadMapEvent: if(strcharinfo(3) != "prontera") end; if (BaseLevel >=50 && BaseLevel < 99 && getmapflag(.TrainingMap$,mf_bexp) > 0) showevent 4,1; end; } 1@mir,101,95,4 script Assistant#slinstance 4_M_1STPRIN1,{ OnTouch: if(!'leaderid) set 'leaderid, getpartyleader(getcharid(1),2); set .@name$,"[^999900Training Assistant^000000]"; mes .@name$; mes "Welcome to the ^FF3333Training Dungeons^000000."; mes " "; mes "Dungeon difficulty : "+'dungeondiff$; mes "Dungeon level : ^FF0000"+'dungeonlevel$+"^000000"; mes " "; mes "Would you like to toggle the dungeon controls ?"; next; switch(select("Adjust Difficulty","Adjust Level Range","Warp me out!","Finish Training","Cancel")){ case 1: if('leaderid != getcharid(0)){ mes .@name$; mes "I'm sorry, but only the party leader can moderate the difficulty of training."; close; } mes .@name$; mes "Here you can adjust the level of difficulty."; mes "Please select from the menu below."; next; switch(select("Easy","Moderate","Hard","^FF0000Extreme^000000","^FF2266Super Extreme^000000","Cancel")){ case 1: mes .@name$; mes "The difficulty level has been changed."; set 'dungeondiff$,"Easy"; set 'mobspawn,.MinimumMobSpawn; break; case 2: mes .@name$; mes "The difficulty level has been changed."; set 'dungeondiff$,"Moderate"; set 'mobspawn,15; break; case 3: mes .@name$; mes "The difficulty level has been changed."; set 'dungeondiff$,"Hard"; set 'mobspawn,25; break; case 4: mes .@name$; mes "The difficulty level has been changed."; set 'dungeondiff$,"Extreme"; set 'mobspawn,40; break; case 5: mes .@name$; mes "The difficulty level has been changed."; set 'dungeondiff$,"Super Extreme"; set 'mobspawn,55; break; default: break; } close2; instance_announce 0, "Trainer : The Party Leader has set the dungeon's difficulty to "+'dungeondiff$+"!",bc_map,"0xffcc00"; message strcharinfo(0),"Dungeon difficulty set to "+'dungeondiff$; end; case 2: if('leaderid != getcharid(0)){ mes .@name$; mes "I'm sorry, but only the party leader can moderate the difficulty of training."; close; } switch(select("Level ^FF3333 50 ~ 60 ^000000", "Level ^FF3333 61 ~ 70 ^000000", "Level ^FF3333 71 ~ 80 ^000000", "Level ^FF3333 81 ~ 99 ^000000", "Cancel")) { case 1: mes .@name$; mes "Leveling mode is now set for players between levels ^FF000050 ~ 60^000000."; set 'dungeonlevel$,"50 ~ 60"; deletearray 'mobid[0],getarraysize('mobid); copyarray 'mobid[0],.mobid5060[0],getarraysize(.mobid5060); next; mes .@name$; mes "Monsters that will spawn randomly :"; for (set .@i,0; .@i < (getarraysize('mobid) -1); set .@i,.@i+1) mes "^FF4444"+strmobinfo(1,'mobid[.@i])+"^000000 Exp:"+strmobinfo(6,'mobid[.@i])+"/"+strmobinfo(7,'mobid[.@i]); break; case 2: mes .@name$; mes "Leveling mode is now set for players between levels ^FF000061 ~ 70^000000."; set 'dungeonlevel$,"61 ~ 70"; deletearray 'mobid[0],getarraysize('mobid); copyarray 'mobid[0],.mobid6170[0],getarraysize(.mobid6170); next; mes .@name$; mes "Monsters that will spawn randomly :"; for (set .@i,0; .@i < (getarraysize('mobid) -1); set .@i,.@i+1) mes "^FF4444"+strmobinfo(1,'mobid[.@i])+"^000000 Exp:"+strmobinfo(6,'mobid[.@i])+"/"+strmobinfo(7,'mobid[.@i]); break; case 3: mes .@name$; mes "Leveling mode is now set for players between levels ^FF000071 ~ 80^000000."; set 'dungeonlevel$,"71 ~ 80"; deletearray 'mobid[0],getarraysize('mobid); copyarray 'mobid[0],.mobid7180[0],getarraysize(.mobid7180); next; mes .@name$; mes "Monsters that will spawn randomly :"; for (set .@i,0; .@i < (getarraysize('mobid) -1); set .@i,.@i+3) mes "^FF4444"+strmobinfo(1,'mobid[.@i])+"^000000 Exp:"+strmobinfo(6,'mobid[.@i])+"/"+strmobinfo(7,'mobid[.@i]); break; case 4: mes .@name$; mes "Leveling mode is now set for players between levels ^FF000081 ~ 99^000000."; set 'dungeonlevel$,"81 ~ 99"; deletearray 'mobid[0],getarraysize('mobid); copyarray 'mobid[0],.mobid8199[0],getarraysize(.mobid8199); next; mes .@name$; mes "Monsters that will spawn randomly :"; for (set .@i,0; .@i < (getarraysize('mobid) -1); set .@i,.@i+3) mes "^FF4444"+strmobinfo(1,'mobid[.@i])+"^000000 Exp:"+strmobinfo(6,'mobid[.@i])+"/"+strmobinfo(7,'mobid[.@i]); break; default: next; mes .@name$; mes "Take it easy there... you should carry a few potions to heal while in combat."; break; } instance_announce 0, "Trainer : The Party Leader has set the dungeon's level to "+'dungeonlevel$+"!",bc_map,"0xffcc00"; message strcharinfo(0),"Dungeon level set to "+'dungeonlevel$; close; case 3: mes .@name$; mes "You will now be warped out!"; close2; warp "SavePoint",0,0; end; case 4: mes .@name$; if('leaderid != getcharid(0)){ mes "Only the party leader can decide this... please consult with him."; close; } mes "Very well then, you will now be warped out!"; close2; donpcevent instance_npcname("Assistant#slinstance", instance_id())+"::OnDestroyInstance"; warp "SavePoint",0,0; end; default: break; } close; OnDisable: killmonster "1@mir",instance_npcname("Assistant#slinstance", instance_id())+"::OnSLDead"; end; OnEnable: sleep 10000; instance_announce 0, "Trainer : Welcome to the Super training dungeon.",bc_map,"0xffcc00"; sleep 3000; instance_announce 0, "Trainer : You can moderate your dungeon's difficulty levels by speaking with the room supervisor.",bc_map,"0xffcc00"; sleep 3000; instance_announce 0, "Trainer : Lets begin training, don't forget to use potions while in battle or you might faint!",bc_map,"0xffcc00"; sleep 3000; instance_announce 0, "Trainer : Training begins in 5 seconds!",bc_map,"0xffcc00"; sleep 1000; instance_announce 0, "Trainer : 4 seconds!",bc_map,"0xffcc00"; sleep 1000; instance_announce 0, "Trainer : 3 seconds!",bc_map,"0xffcc00"; sleep 1000; instance_announce 0, "Trainer : Get Ready!",bc_map,"0xffcc00"; sleep 1000; instance_announce 0, "Trainer : GO!",bc_map,"0xffcc00"; sleep 1000; set .@mobnumber,0; if (!'mobid[0] || !'mobspawn) { deletearray 'mobid[0],getarraysize('mobid); copyarray 'mobid[0],.mobid5060[0],getarraysize(.mobid5060); set 'dungeonlevel$,"50 ~ 60"; set 'mobspawn,.MinimumMobSpawn; set 'dungeondiff$,"Easy"; } donpcevent instance_npcname("Assistant#slinstance", instance_id())+"::OnInstanceRound"; OnInstanceRound: for (set .@i,0; .@i < 'mobspawn; set .@i,.@i+1) { set .@mobid,'mobid[rand(0,getarraysize('mobid))]; set .@randname,rand(1,5); switch(.@randname) { case 1: set .@mobname$,"Tamed "+strmobinfo(1,.@mobid); break; case 2: set .@mobname$,"Superb "+strmobinfo(1,.@mobid); break; case 3: set .@mobname$,"Sedated "+strmobinfo(1,.@mobid); break; case 4: set .@mobname$,"Retired "+strmobinfo(1,.@mobid); break; case 5: set .@mobname$,"Training "+strmobinfo(1,.@mobid); break; default: set .@mobname$,"Training "+strmobinfo(1,.@mobid); break; } areamonster "1@mir",74,90,118,65,.@mobname$,.@mobid,1,instance_npcname("Assistant#slinstance", instance_id())+"::OnMobDead"; } end; OnMobDead: set .@mobnumber,mobcount("1@mir",instance_npcname("Assistant#slinstance", instance_id())+"::OnMobDead"); if (.@mobnumber == 0){ set .@rand,rand(1,5); switch(.@rand) { case 1: instance_announce 0, "Trainer : Awesome! ^^ You have cleared this round, lets do another!",bc_map,"0xFFCC00"; break; case 2: instance_announce 0, "Trainer : Brilliant ^^... You lads will be the finest in all of Rune Midgard! Let's train you some more!",bc_map,"0xFFCC00"; break; case 3: instance_announce 0, "Trainer : Outstanding ^^... Maintain this attitude and you'll be going places you've never dreamt of! But, try this round...",bc_map,"0xFFCC00"; break; case 4: instance_announce 0, "Trainer : Okay platoon let's do this again... ! ^^ 1... 2... 3...",bc_map,"0x00CCFF"; break; case 5: instance_announce 0, "Trainer : Looks like one of you there is hurt, rub some dirt on it and get back up! ^^",bc_map,"0x00CCFF"; break; default: break; } sleep2 5000; donpcevent instance_npcname("Assistant#slinstance", instance_id())+"::OnInstanceRound"; set .@mobnumber,0; } end; OnDestroyInstance: initnpctimer; end; OnTimer5000: instance_warpall "prontera", 143,166; end; OnTimer10000: stopnpctimer; instance_destroy(instance_id()); end; OnInit: /* * * * * * * * * * * * * * * * * * * Static Configuration * * * * * * * * * * * * * * * * * * */ set .MinimumMobSpawn,10; // Minimum Amount of monsters to spawn per round /* * * * * * * * * * * * * * * * * * * Dynamic Configuration * * * * * * * * * * * * * * * * * * */ setarray .mobid5060[0],1193 // Alarm ,1818 //Event Alarm ,1699 // Ancient Mimic ,1593 // Ancient Mummy ,1684 // Archdam ,1194 // Arclouse ,1364 // Assaulter ,1882 // Baba Yaga ,1101 // Bapho Jr. ,1633 // Beholder ,1408 // Blood Butterfly ,1692 // Breeze ,1267 // Carat ,1519 // Chung E ,1269 // Clock ,1738 // Constant ,1209 // Cramp ,1514 // Dancing Dragon ,1260 // Dark Frame ,1378 // Demon Pungus ,1506 // Disguise ,1380 // Driller ,1493 // Dryad ,1655 // Erend ,1412 // Cloud Hermit ,1117 // Evil Druid ,1869 // Flame Skull ,1778 // Gazeti ,1368 // Geographer ,1303 // Giant Hornet ,1304 // Giant Spider ,1513 // Gibbet ,1387 // Gig ,1369 // Grand Peco ,1687 // Green Iguana ,1632 // Gremlin ,1213 // High Orc ,1512 // Hyegun ,1510 // Hylozoist ,1777 // Ice Titan ,1516 // Mi Gao ,1257 // Injustice ,1131 // Joker ,1072 // Kaho ,1656 // Kavach ,1294 // Killer Mantis ,1838 // Knocker ,1587 // Kraben ,1306 // Leib Olmai ,1410 // Enchanted Peach Tree ,1265 // Merman ,1191 // Mimic ,1614 // Mineral ,1149 // Minorous ,1780 // Muscipular ,1061 // Nightmare ,1471 // Nine Tail ,1651 // Obsidian ,1189 // Orc Archer ,1308 // Panzer Goblin ,1500 // Parasite ,1216 // Penomena ,1693 // Plasma ,1894 // Pouring ,1163 // Raydric ,1276 // Raydric Archer ,1682 // Remover ,1195 // Rideword ,1323 // Sea Otter ,1196 // Skel Prisoner ,1775 // Snowier ,1322 // Spring Rabbit ,1278 // Stalatic Golem ,1584 // Tamruan ,1375 // The Paper ,1771 // Vanberk ,1263 // Wind Ghost ,1497 // Wooden Golem ,1192 // Wraith ,1197; // Zombie Prizoner setarray .mobid6170[0],1257 // Alice ,1737 // Aliza ,1301 // Am Mut ,1297 // Ancient Mummy ,1305 // Ancient Worm ,1206 // Anolian ,1365 // Apocalypse ,1654 // Armaia ,1796 // Aunoe ,1975 // Beholder Master ,1300 // Caterpillar ,1283 // Chimera ,1513 // Civil Servant ,1270 // Clock Tower Manager ,1293 // Creamy Fear ,2074 // Curupira ,1698 // Deathword ,1394 // Deleter Air ,1385 // Deleter Ground ,1382 // Diabolic ,2014 // Draco Egg ,1321 // Dragon Tail ,1504 // Dullahan ,1770 // Echio ,1377 // Elder ,1205 // Executioner ,1371 // Fake Angel ,1797 // Fanat ,1717 // Ferus Green ,1714 // Ferus Red ,1753 // Frus ,1317 // Fur Seal ,1309 // Gajomart ,1391 // Galapago ,1515 // Garm Baby ,1372 // Goat ,1299 // Goblin Leader ,1381 // Grizzly ,1311 // Gullinbursti ,1376 // Harpy ,1318 // Heater ,1872 // Hell Fly ,1773 // Hodremlin ,1772 // Isilla ,1132 // Khalitzburg ,1296 // Kobold Leader ,1691 // Kraben ,1310 // Majoruros ,1884 // Mavka ,1292 // Mini Demon ,1313 // Mobster ,1262 // Mutant Dragonoid ,1154 // Pasana ,1314 // Permeter ,1664 // Photon Cannon ,1666 // Photon Cannon 2 ,1657 // Laurell Weinder ,1774 // Seeker ,1401 // Shinobi ,1752 // Skogul ,1386 // Sleeper ,1316 // Solider ,1207 // Sting ,1405 // Tengu ,2073 // Toucan ,1618 // Ungoliant ,1883 // Uzhas ,1617 // Waste Stove ,1653 // Whikebain ,1416 // Wicked Nymph ,1200 // Zealotus ,1298; // Zombie Master setarray .mobid7180[0],1713 // Acidus Gold ,1716 // Acidus Blue ,1769 // Agav ,1735 // Alicel ,1736 // Aliot ,1098 // Anubis ,1668 // Archdam ,1315 // Assaulter ,1518 // Bacsojin ,1507 // Bloody Murderer ,1307 // Cat O' Nine Tails ,1999 // Centipede ,1976 // Cobalt Mineral ,2031 // Dandelion ,1302 // Dark Illusion ,1198 // Dark Priest ,1670 // Dimik 1 ,1672 // Dimik 2 ,1669 // Dimik ,1319 // Freezer ,1932 // Garden Keeper ,1681 // Gemini S58 ,1259 // Gryphon ,2071 // Headless Mule ,1977 // Heavy Metaling ,1866 // Hell Poodle ,2069 // Iara ,1837 // Fire Imp ,1374 // Incubus ,2072 // Jaguar ,1219 // Abysmal Knight ,1366 // Lava Golem ,1505 // Loli Ruri ,1148 // Medusa ,1203 // Mysteltainn ,1988 // Nepenthes ,1295 // Owl Baron ,1320 // Owl Duke ,1202 // Phendark ,1995 // Pinguicula ,2070 // Pirhana ,1865 // Ragged Zombie ,1702 // Retribution ,1201 // Rybio ,1701 // Shelter ,1290 // Skeleton General ,1703 // Solace ,1622 // Teddy Bear ,1204 // Tirfing ,1875 // Tristan III ,1678 // Venatu ,1676 // Venatu ,1679 // Venatu ,1677 // Venatu ,1390 // Violy ,1208 // Wanderer ,1291 // Wraith Dead ,1864; // Zombie Slaughterer setarray .mobid8199[0],2016 // Aqua Elemental ,1867 // Banshee ,1974 // Banshee Master ,1268 // Bloody Knight ,2049 // Bradium Golem ,2155 // Butoijo ,2015 // Dark Pinguicula ,1983 // Depraved Orc Spirit ,1671 // Dimik 2 ,1673 // Dimik 4 ,2013 // Draco ,1635 // Eremes Guile ,1933 // Garden Watcher ,1636 // Howard Alt-Eisen ,1978 // Hell Apocalypse ,1923 // Incarnation of Morroc ,1924 // Incarnation of Morroc ,1922 // Incarnation of Morroc ,1639 // Katrinn ,1637 // Margaretha Sorin ,1674 // Monemus ,2047 // Naga ,1982 // Orc Sniper ,2021 // Phylla ,2020 // Ryncho ,1981 // Safeguard ,1370 // Succubus ,1979; // Zakudam end; } 1@mir mapflag src4instance 1@mir mapflag nowarp 1@mir mapflag nowarpto 1@mir mapflag nosave 1@mir mapflag noteleport 1@mir mapflag noreturn prontera mapflag loadevent