////////////////////////////////////////////////// ////////////////////////////////////////////////// ////--- Player Max Level Difficulty Script ---//// //////////-------------v2.0-------------////////// ///- Written by Kutan for Anyone who wants it -/// ////////////////////////////////////////////////// ////////////////////////////////////////////////// // //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-// \\ // \\ -Main Variables included in level modification NPC- \\ \\ // //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-// \\ // \\k_lvldiff = Level Difficulty (Easy = 0; Hard = 1; Insane = 2) \\ \\ // //k_lvldiffcheck = Base Level Checkpoint (Increments of k_lvldiffnum)// \\ // \\k_lvldiffcheckj = Job Level Checkpoint (Changed per increment ^^^^)\\ \\ // //k_lvldiffnum = Level Difficulty (Easy = 0; Hard = 5; Insane = 10) // \\ // \\k_lvldiffstr$ = String for level difficulty (Easy; Hard; Insane) \\ \\ // //k_BRPOINTS = Status points to be removed from Checkpoint Reset // \\ // \\k_JRPOINTS = Skill points to be removed from Checkpoint Reset \\ \\ // //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-// \\ // ^ - Created out of boredom - ^ \\ - script checkpointmod -1,{ OnPCBaseLvUpEvent: if (( k_lvldiff > 0 ) && ( k_lvldiffcheck == 99 ) && ( BaseLevel < 99 )) { set k_lvldiffcheck, 1; set k_lvldiffcheckj, 1; } if (( k_lvldiff > 0 ) && (( BaseLevel % k_lvldiffnum ) == 0 )) { set k_lvldiffcheck, BaseLevel; set k_lvldiffcheckj, JobLevel; message strcharinfo(0),"Checkpoint Reached!"; } if (( k_lvldiff > 0 ) && ( BaseLevel == 99 ) && ( !Upper )) { set k_lvldiffcheck, 99; set k_lvldiffcheckj, JobLevel; } if (( k_lvldiff > 0 ) && ( BaseLevel == 120 ) && ( Upper )) { set k_lvldiffcheck, 120; set k_lvldiffcheckj, 120; message strcharinfo(0),"Max level reached! Congratulations! Please return to General Slickbeard for information."; } end; OnPCJobLvUpEvent: if (( k_lvldiffcheckj == 120 ) && ( JobLevel == 120 )) end; if (( k_lvldiffcheckj < 120 ) && ( JobLevel == 120 )) set k_lvldiffcheckj, 120; if (( BaseLevel == 120 ) && ( JobLevel < 120 )) set k_lvldiffcheckj, JobLevel; end; OnPCDieEvent: if ( !k_lvldiff ) end; if ( k_endgame ) end; if ( !k_lvldiffcheck ) { set k_lvldiffcheck, BaseLevel - ( BaseLevel % k_lvldiffnum ); set k_lvldiffcheckj, JobLevel - ( JobLevel % k_lvldiffnum ); } if ( BaseLevel > k_lvldiffcheck ) { set k_BRPOINTS, $k_STATPOINTS[BaseLevel] - $k_STATPOINTS[k_lvldiffcheck]; while (( StatusPoint >= 1 ) && ( k_BRPOINTS >= 1 )) { set StatusPoint, StatusPoint - 1; set k_BRPOINTS, k_BRPOINTS - 1; } } set BaseLevel, k_lvldiffcheck; set JobLevel, k_lvldiffcheckj; message strcharinfo(0),"So sorry, it's back to base level "+ k_lvldiffcheck +" and job level "+ k_lvldiffcheckj +". :("; end; OnInit: setmapflag "new_zone01",mf_nogo; end; OnInterIfInitOnce: set .@a, 1; while ( .@a <= 120 ) { while ( .@b <= .@a ) { set $k_STATPOINTS[.@c], $k_STATPOINTS[.@c] + ( .@a + 14 ) / 5; set .@b, .@b + 1; } set $k_STATPOINTS[.@c], $k_STATPOINTS[.@c] + 45; set .@c, .@c + 1; set .@a, .@a + 1; } set .@i, 1; while ( .@i <= 120 ) { while ( .@j <= .@i ) { set $k_STATPOINTSUP[.@k], $k_STATPOINTSUP[.@k] + ( .@i + 14 ) / 5; set .@j, .@j + 1; } set $k_STATPOINTSUP[.@k], $k_STATPOINTSUP[.@k] + 100; set .@k, .@k + 1; set .@i, .@i + 1; } end; } - script levelcurvemod -1,{ OnPCBaseLvUpEvent: if ( k_endgame ) end; if ( k_BRPOINTS >= 1 ) { while (( StatusPoint >= 1 ) && ( k_BRPOINTS >= 1 )) { set StatusPoint, StatusPoint - 1; set k_BRPOINTS, k_BRPOINTS - 1; } } if ( k_lvldiff == 2 ) set NextBaseExp, NextBaseExp * 5; end; OnPCJobLvUpEvent: if ( k_endgame ) end; if ( k_JRPOINTS >= 1 ) { while (( SkillPoint >= 1 ) && ( k_JRPOINTS >= 1 )) { set SkillPoint, SkillPoint - 1; set k_JRPOINTS, k_JRPOINTS - 1; } } if ( k_lvldiff == 2 ) set NextJobExp, NextJobExp * 5; end; } new_zone01,54,111,2 script Colonel Moose 873,{ mes "[^C06600Colonel Moose^000000]"; if ( k_notnewplayer ) { mes "Oh, hi, what're you doing here?"; mes "...Go level or something."; close; } mes "Hello there, Novice "+ strcharinfo(0) +" and welcome to ^00FF00TiRO^000000!"; mes "I'm here to tell you about the certain paths"; mes "that you may follow during your time here at TiRO"; mes "so that we may better your experience!"; next; if ( #k_notnewplayer ) { mes "[^C06600Colonel Moose^000000]"; mes "Oh.. Ehem, it says here that you've been here before."; mes "In that case, do you want to hear about the difficulties again?"; next; menu "Yeah, I forgot.",diffexplain,"No, I remember.",diffdecide; } mes "[^C06600Colonel Moose^000000]"; mes "It says here that this is your first time"; mes "playing on ^00FF00TiRO^000000. Would you like to"; mes "hear about the ^0000FFLevel Difficulties^000000?"; next; menu "Yes, please.",-,"No, get on with it.",diffdecide; diffexplain: next; mes "[^C06600Colonel Moose^000000]"; mes "There are 3 leveling difficulties:"; mes "^00FF001^000000) ^FFCCFFEasy^000000"; mes "This level is just the regular leveling curve"; mes "that a normal character would follow."; mes "There are no max level bonuses nor are there"; mes "any checkpoint penalties."; mes "This difficulty is recommended for first time players"; mes "that would like to take it easy."; next; mes "[^C06600Colonel Moose^000000]"; mes "^00FF002^000000) ^FF3333Hard^000000"; mes "This level uses the regular leveling curve,"; mes "but it adds a ^0000FFCheckpoint Penalty^000000."; mes "This penalty marks every ^0000FF5 ^00FF00Base^000000 levels."; mes "If you ^FF0000die^000000 before a checkpoint, your level"; mes "will be reset back to the previous checkpoint."; mes "With this penalty, a bonus of ^00FF0050 ^00FF00Valor Points^000000 are added"; mes "to your character to use at certain shops for high-level items."; mes "This difficulty is recommended for experienced players"; mes "that are looking for a challenge."; next; mes "[^C06600Colonel Moose^000000]"; mes "^00FF003^000000) ^CC0000Insane^000000"; mes "This level is... Well, it's ^CC0000INSANE^000000!!"; mes "I don't even want to talk about it, I'm just"; mes "going to let you know.. If you value your"; mes "sanity and your life, don't pick this one."; mes "This difficulty is recommended for nutjobs"; mes "that are looking to spend their life killing."; mes "^666666*On a literal note, players that follow this difficult will gain"; mes "a very high max level bonus as well as a high exp and checkpoint penalty."; mes "Use this difficulty at your own risk.*^000000"; diffdecide: next; mes "[^C06600Colonel Moose^000000]"; mes "Okay, so what's it going to be?"; mes "^FFCCFFEasy^000000, ^FF3333Hard^000000, or ^CC0000Insane^000000?"; next; set k_safetyfirst, 1; switch( select( "I'm a wimp, Easy it is.:I'm up for a challenge, Hard it is.:^CC0000AHAHAH KILL, KILL, DIE!^000000" )) { case 1: mes "[^C06600Colonel Moose^000000]"; mes "I was a newbie once, too."; mes "Alright, I'll send you to my associate."; mes "Have fun!"; close2; set k_lvldiff, 0; set k_lvldiffstr$, "Easy"; warp "prontera",157,192; end; case 2: mes "[^C06600Colonel Moose^000000]"; mes "Good for you."; mes "Trust me, you'll have fun, and you'll"; mes "be rewarded nicely in the end."; mes "I'm going to send you to my associate."; mes "Have fun!"; close2; set k_lvldiff, 1; set k_lvldiffnum, 5; set k_lvldiffstr$, "Hard"; warp "prontera",157,192; end; case 3: mes "[^C06600Colonel Moose^000000]"; mes "OH, GOD! DON'T KILL ME!"; mes "GUARDS! GET THE BASTARD THE HELL OUT OF HERE!"; mes "^0000CC*^CC0000You feel a sharp pain in the back of your head, then darkness^0000CC*^000000"; close2; set k_lvldiff, 2; set k_lvldiffnum, 10; set k_lvldiffstr$, "Insane"; set HP, ( HP % ( HP / 7 )) + 1; warp "prontera",157,192; end; } } prontera,157,193,4 script General Slickbeard 752,{ if ( !k_safetyfirst ) goto safetylabel; if ( !k_notnewplayer ) goto safetylabel; set .roflcontestwut1, .roflcontestwut1 + 1; if ( .roflcontestwut1 == .roflcontestwut2 ) goto randtestwinner; //if (( BaseLevel == 120 ) && ( !k_endgame )) goto endgamestart; //if ( k_endgame ) goto endgameQ; mes "[^CDAD00General Slickbeard^000000]"; mes "Ah, welcome back, "+ strcharinfo(0) +","; if (( BaseLevel - 15 ) > k_boredlvlthing ) { mes "wow, "+ ( BaseLevel - k_boredlvlthing ) +" new levels since your last visit!"; mes "Congratulations on being stronger."; mes "Ehem, anyway,"; } set boredlvlthing, BaseLevel; multireturn: mes "what would you like?"; next; menu "Please, change my level difficulty!",-,"Explain everything again, please..",slicksplain,"Nevermind, talk to you later.",end; lvldiffchange: mes "[^CDAD00General Slickbeard^000000]"; mes "Ah, so you don't like your current setting, do you?"; mes "Well then, all I need is a nominal fee of"; mes "^0000FF5,000,000^000000 zeny and we can get this over with."; mes "..."; if ( Zeny < 5000000 ) { mes "Oh, wait, isn't that so sad?"; mes "you're a poor, poor newbie."; mes "This isn't a charity, go get some money!"; close; } if ( Upper ) { mes "Oh, wait, I'm sorry but I told you,"; mes "you can't be reborn and change difficulty!"; mes "There would be no challenge!"; close; } mes "Well?"; next; menu "Here's your money, change me!",-,"Hrm.. Maybe later.",end; mes "[^CDAD00General Slickbeard^000000]"; mes "Alrighty then, your current difficulty is ^0000FF"+ k_lvldiffstr$ +"^000000."; mes "What would you like to change it to?"; next; if ( k_lvldiff == 0 ) menu "Make it Hard.",hardchange,"Make it Insane!",insanechange; if ( k_lvldiff == 1 ) menu "Make it Easy..",easychange,"Make it Insane!",insanechange; if ( k_lvldiff == 2 ) menu "Make it Easy..",easychange,"Make it Hard.",hardchange; end; easychange: set @k_lvldiff, 0; set @k_lvldiffnum, 0; set @k_lvldiffstr$, "Easy"; goto changechange; hardchange: set @k_lvldiff, 1; set @k_lvldiffnum, 5; set @k_lvldiffstr$, "Hard"; goto changechange; insanechange: set @k_lvldiff, 2; set @k_lvldiffnum, 10; set @k_lvldiffstr$, "Insane"; goto changechange; changechange: mes "[^CDAD00General Slickbeard^000000]"; mes "Alright, I'll just deduct that"; mes "fee right there.. Yeah, okay."; mes "Now let's do a little switcheroo!"; next; set zeny, zeny - 5000000; set k_lvldiff, @k_lvldiff; set k_lvldiffcheck, 0; set k_lvldiffcheckj, 0; set k_lvldiffnum, @k_lvldiffnum; set k_lvldiffstr$, @k_lvldiffstr$; mes "[^CDAD00General Slickbeard^000000]"; mes "Voila! You are now of "+ k_lvldiffstr$ +" difficulty!"; mes "Go out and give it a try!"; mes "Have fun, too!"; close; safetylabel: mes "[^CDAD00General Slickbeard^000000]"; mes "Ah, welcome, Newbie "+ strcharinfo(0) +"!"; mes "This here is your new home, and you will be"; mes "seeing more of me than you'd probably like to."; next; if ( #k_notnewplayer ) { mes "[^CDAD00General Slickbeard^000000]"; mes "First off, I've been told you're"; mes "not a complete newbie on this server."; mes "Would you still like to hear my lecture?"; next; if ( select( "Please do.:No thanks." ) == 1 ) goto slicksplain; else { mes "[^CDAD00General Slickbeard^000000]"; goto slicksplainskip; } } slicksplain: mes "[^CDAD00General Slickbeard^000000]"; mes "I'll begin by explaining a few specific things"; mes "that you would probably like to know more about:"; mes "First off, you should know that at any point"; mes "you would like to change your ^0000FFlevel difficulty^000000,"; mes "you may come to me and I will modify it."; mes "There is of course a ^FF0000HEFTY^000000 fee for doing so,"; mes "so make sure you've chosen very wisely!"; mes "Oh, and you can't be over base level ^0000FF50^000000"; mes "or have been reborn already, that'd be too easy!"; next; mes "[^CDAD00General Slickbeard^000000]"; mes "Secondly: you may have heard about something"; mes "that is called a ^0000FFValor Point^000000. These points are"; mes "an essential part of your max level experience."; mes "These points allow max level players to buy much"; mes "more equipment and even stat and skill points."; mes "These can be acquired through quests only accepted"; mes "after reaching advanced class and level 255."; next; if ( k_lvldiff == 0 ) { mes "[^CDAD00General Slickbeard^000000]"; mes "Lastly: As explained earlier, you will not receive"; mes "any penalties to your experience gain or level consistency."; mes "In addition to this, you will also not receive any"; mes "bonus ^0000FFValor Points^000000 when you reach max level."; mes "So you're going to have to work hard for your points."; } if ( k_lvldiff == 1 ) { mes "[^CDAD00General Slickbeard^000000]"; mes "Lastly: As explained earlier, you will receive some"; mes "penalties regarding ^0000FFcheckpoints^000000. After every ^0000FF5 ^00FF00Base^000000 levels,"; mes "your ^0000FFcheckpoint^000000 will be updated. If you are to die"; mes "between any of these checkpoints, your level will be reset"; mes "all the way back to the previous checkpoint.. Be careful!"; mes "Although, with penalties there must come an eventual reward;"; mes "once you've been reborn and reached maximum level,"; mes "your character will receive a large bonus of ^0000FFValor Points^000000!"; } if ( k_lvldiff == 2 ) { mes "[^CDAD00General Slickbeard^000000]"; mes "Lastly: As explained earlier, you will receive"; mes "a hefty penalty regarding ^0000FFcheckpoints^000000 as well as"; mes "modifications to your leveling curve. Your ^0000FFcheckpoint^000000 is set for every"; mes "^0000FF10 ^00FF00Base levels, so if you make it to 89 and die, it's back to 80!"; mes "Be extra careful!"; mes "This may seem harsh, but with a great penalty comes a great reward;"; mes "if this is really your first time here, it may seem like nothing,"; mes "but once you reach your final level after rebirth,"; mes "you will receive a ^FF0000ludicrous^000000 bonus of ^0000FFValor Points^000000!"; mes "Not to mention, ^0000FFValor Points^000000 received from quests will"; mes "be multiplied to give you an advantage for working so hard!"; } next; mes "[^CDAD00General Slickbeard^000000]"; mes "Phew, good thing that's out of the way."; if ( notnewplayer ) goto multireturn; slicksplainskip: mes "So! Are you ready to start leveling?!"; next; set k_notnewplayer, 1; set #k_notnewplayer, 1; if ( select( "Yes!:Nope.." ) == 1 ) { mes "[^CDAD00General Slickbeard^000000]"; mes "Great!"; mes "I like your ambition, kid."; mes "Off ye' go into the wilderness!"; } else { mes "[^CDAD00General Slickbeard^000000]"; mes "Uh.. What?"; mes "Well isn't that a crying shame."; mes "..."; next; mes "[^CDAD00General Slickbeard^000000]"; mes "^FF0000I DON'T GIVE A FLIPPIN' FLIPPITY FLAP"; mes "IF YOU DON'T WANT TO GO!!^000000"; next; mes "[^CDAD00General Slickbeard^000000]"; mes "Ehem, now that I've regained my composure,"; mes "get out there and have some fun!"; } close; //endgamestart: // mes "[^CDAD00General Slickbeard^000000]"; // mes "Ah! Congratulations on level ^FF00001^00FF002^0000FF0^000000!"; // mes "You've passed your test!"; // mes "We need a skilled person like you to help us in our follies."; // mes "We need you t- Wait,"; // mes "I'm getting ahead of myself."; // next; // set k_VPV, k_VPV + k_lvldiffnum * 10; // message strcharinfo(0)," // mes "[^CDAD00General Slickbeard^000000]"; //endgameQ: randtestwinner: mes "[^CDAD00General Slickbeard^000000]"; mes "Wow, congratulations!"; mes "You're lucky number "+ .roflcontestwut1 +"!"; mes "You're also probably pretty confused right now."; mes "I'll explain..."; next; mes "[^CDAD00General Slickbeard^000000]"; mes "My shitty creator, Kutan was bored while"; mes "he was in the process of writing me."; mes "So he decided to put a random test into my being."; mes "Now here we are."; next; mes "[^CDAD00General Slickbeard^000000]"; mes "Anywho, I'm sure you're asking yourself,"; mes "\"What could my reward possibly be?\""; mes "Right?"; mes "Well, for being visitor number "+ .roflcontestwut1 +","; mes "you will receive a bonus of "+ .roflcontestwut1 +" ^0000FFValor Points^000000!"; next; mes "[^CDAD00General Slickbeard^000000]"; mes "You must be so excited right now,"; if (( BaseLevel < 120 ) || ( !Upper )) { mes "I mean, you're not at max level yet,"; mes "but this'll make it much sweeter when you are!"; goto randtestclosure; } mes "I'm sure you're gonna' go and buy something"; mes "very nice with these points once I let you go!"; mes "..."; randtestclosure: mes "On that note, go and have some fun!"; close2; set k_VPV, k_VPV + .roflcontestwut1; set .roflcontestwut1, 0; set .roflcontestwut2, rand(500,1000); end; OnInit: set .roflcontestwut2, rand(100,200); set .roflcontestwut1, 0; end; }