// TMW2 Scripts // Evol functions. // Author: // 4144 // Jesusalva // Description: // Function checking the client version and reports if it is too old. // This also handles all updates, and usually have priority. function script clientupdater { // Bugfix if (!TUT_VAR && UPDATE) TUT_VAR=UPDATE; // Skip any update for newcomers if (compare(getmap(), "000-0") || $@NOUPDATES) { UPDATE=gettimetick(2); } // If you're in Jail, show a minor message if (getmap() == "sec_pri") { dispbottom l("You seem to be jailed. We cannot unjail offline players, so please don't logout."); dispbottom l("You have the right to defend yourself if you believe we were wrong. If we find out it's true, you'll receive an apology gift."); dispbottom l("Note: Unless you were doing something REALLY bad which is harmful to player community (eg. scamming, hacking, DDoS'ing, etc.)"); dispbottom l("Please contact a GM as soon as possible so we can make out a compromise. You should be liberated even if found guilty."); } .@dg=0; // Infinite Char Point Bugfix // Mon Jul 3 18:14:30 UTC 2023 if (UPDATE < 1688408070) { UPDATE=1688408070; // Be through resetlvl(2); resetlvl(3); resetlvl(4); resetstatus(); resetskill(); // Update fields as necessary adddefaultskills(); #MYEXP=0; sleep2(10); } /* // Magic v3 regression // ter jul 7 18:42:22 BRT 2020 if (UPDATE < 1594158142) { UPDATE=1594158142; for (.@i=0; .@i < getarraysize($@MSK_MAGIC) ; .@i++) { /* debugmes "Debug skill %s - Lv %d", getskillname($@MSK_MAGIC[.@i]), getskilllv($@MSK_MAGIC[.@i]); * / if (getskilllv($@MSK_MAGIC[.@i]) > 1) { .@msp=(getskilllv($@MSK_MAGIC[.@i])-1); MAGIC_PTS-=.@msp; skill $@MSK_MAGIC[.@i], 1, 0; dispbottom l("%s refunded to level 1 for %d MSP", getskillname($@MSK_MAGIC[.@i]), .@msp); } } } // AFKing bugfix // qua jul 29 06:52:00 BRT 2020 if (UPDATE < 1596016320) { UPDATE=1596016320; .@x=(AFKING >= 2592000 ? 4 : ( AFKING >= 864000 ? 3 : ( AFKING >= 201600 ? 2 : ( AFKING >= 28800 ? 1 : 0 )))); skill(TMW2_SPEECH, .@x, 0); dispbottom l("AFK skill levels fixed."); } // Magic RP bugfix // sáb ago 1 05:45:00 BRT 2020 if (UPDATE < 1596271500) { UPDATE=1596271500; .@x=(AFKING >= 2592000 ? 4 : ( AFKING >= 864000 ? 3 : ( AFKING >= 201600 ? 2 : ( AFKING >= 28800 ? 1 : 0 )))); skill(TMW2_SPEECH, .@x, 0); dispbottom l("AFK skill levels fixed."); for (.@i=0; .@i < getarraysize($@MSK_MAGIC) ; .@i++) { if (getskilllv($@MSK_MAGIC[.@i]) > 1) { .@msp=max(0, getskilllv(@menuret)-5); MAGIC_PTS-=.@msp; skill $@MSK_MAGIC[.@i], 1, 0; dispbottom l("%s removed - YOU NOOB STOP CHEATING %%e%%Q", getskillname($@MSK_MAGIC[.@i]), .@msp); } } } // Christmas Warp bug // seg dez 28 20:45:55 BRT 2020 if (UPDATE < 1609199155) { UPDATE=1609199155; if (BaseLevel < 20) { if (getsavepoint(0) != "000-1" && getsavepoint(0) != "003-1" && getsavepoint(0) != "005-1" && getsavepoint(0) != "009-1") { // Resave at Candor EnterTown("Candor"); ReturnTown(); } } // Gallery Contest .@dg=1; showavatar NPC_LOF_RICH; mesn ("TMW2 Staff"); mesc l("Hello, @@! We are proud to announce the @@ RESULTS!", strcharinfo(0) , b(l("2° Screenshooting Contest"))), 3; mesc l("Participants: Povo * Manatauro * Woody"), 3; next; mesc ("Povo Entries: What to do with Presents?"), 3; mesc ("Woody Entries: Lava Dungeon"), 3; mesc ("Manatauro Entries: Yuck Noob =) ; Povo :) ; Lurking GM and Me"), 3; next; mesc l("1st Place - Povo (6 likes)"); mesc l("2nd Place - Manatauro (5 likes)"); mesc l("3rd Place - Woody (4 likes)"); mes ""; next; if (strcharinfo(0) == "Povo") getitem StrangeCoin, 80; else if (strcharinfo(0) == "Manatauro") getitem StrangeCoin, 40; else if (strcharinfo(0) == "Woody") getitem StrangeCoin, 20; } // Easter Eggs // qua jul 29 06:52:00 BRT 2020 if (UPDATE < 1610083840) { UPDATE=1610083840; .@q=getq(General_EasterEggs); if (.@q) { setq General_EasterEggs, 1, .@q, bitmask_count(.@q); dispbottom l("Easter Egg quest updated. Total found: %02d/06", bitmask_count(.@q)); } } // Change variable scope // sáb jan 16 19:21:15 BRT 2021 if (UPDATE < 1610835675) { UPDATE=1610835675; #GUILDSHOP=GUILDSHOP; GUILDSHOP=0; } // Realm of Drops // sab set 24 15:37:15 BRT 2022 if (UPDATE < 1664044635) { UPDATE=1664044635; skill TMW2_DROPS, REBIRTH+1, 0; if (getskilllv(TMW2_SKILLPERMIT) >= 1) getitem ScholarshipBadge, 1; if (getskilllv(TMW2_SKILLPERMIT) >= 2) getexp 20000, 1000; if (getskilllv(TMW2_SKILLPERMIT) >= 3) getexp 80000, 0; // Actual value has changed, you'll be refunded in EXP if (getskilllv(TMW2_SKILLPERMIT) >= 1) #ADD_LVL+=80000; } */ // :// End of Regular Update System //////////////////////////////////// // Permanent Gold Boost // #ADD_GP means the user have to right to get some gp if (#ADD_GP) { Zeny+=#ADD_GP; #ADD_GP=0; } // Permanent Level Boost // This is the Cross Worlds. Level is overriden. if (#ADD_LVL) { .@diff = #ADD_LVL - #MYEXP; if (.@diff > 0) { getexp .@diff, 0; #MYEXP += .@diff; } //resetlvl(2); // Not really a good idea... //adddefaultskills(); // Because resetlvl(2) is destructive... //logmes "[Merger] EXP +"+#ADD_LVL, LOGMES_ATCOMMAND; /* if ((readparam(BaseExp)+#ADD_LVL > readparam(NextBaseExp))) { freeloop(true); do { .@v=readparam(NextBaseExp)-readparam(BaseExp); getexp .@v, 0; #ADD_LVL-=.@v; } while (readparam(BaseExp)+#ADD_LVL > readparam(NextBaseExp)); freeloop(false); } */ // Left overs //getexp #ADD_LVL, 0; #ADD_LVL=0; } if (.@dg) { next; closeclientdialog; } return; } // Just be sure your client version is OK // NOTE: Current master client version is 26, but M+ 1.9.3.23 is still at 25 function script checkclientversion { // Destroy Karma, regardless of version and perpetually Karma=0; // Minimum version if (ClientVersion >= 25) return; mesn "Narrator"; mesc l("Warning."), 1; mesc l("Warning."), 1; mesc l("Warning: You are using an old client."), 1; next; mesc l("This should not happen on the default Mirror Lake Installation. Perhaps you changed something in an incompatible way?"); next; if (ClientVersion >= 24) mesc l("Compatibility Support mode enabled. Client may crash AT RANDOM, beware."); if (ClientVersion >= 24) mesc l("Crazy stuff can happen in overall. YOU HAVE BEEN WARNED TO UPDATE YOUR CLIENT."); if (ClientVersion >= 24) closeclientdialog; if (ClientVersion >= 24) return; mesc l("You won't be allowed to play this game until you have an updated client."); next; // Force user to disconnect atcommand "@kick "+strcharinfo(0); return; }