/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* _______ _______ _____ _ _ _______ _ _ __ __ ______ *
* |______ | | | | | |____/ |______ \___/ \_/ ____/ *
* ______| | | | |_____| | \_ |______ _/ \_ | /_____ *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* Super Leveling Dungeon *
* Script Version 1.0 *
* Credits : Smokexyz [[email protected]] *
* 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