summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-10-24 00:04:25 -0300
committerJesusaves <cpntb1@ymail.com>2022-10-24 00:04:25 -0300
commite1805840714811977c67877b8fa07d02c03c2e04 (patch)
tree41c8a861fa2e3bb8254e483129ec8dac8a44500a
parentc72bff04727cc001b6162f2886ad1952097d5ac1 (diff)
downloadserverdata-e1805840714811977c67877b8fa07d02c03c2e04.tar.gz
serverdata-e1805840714811977c67877b8fa07d02c03c2e04.tar.bz2
serverdata-e1805840714811977c67877b8fa07d02c03c2e04.tar.xz
serverdata-e1805840714811977c67877b8fa07d02c03c2e04.zip
Some core stuff from clientversion.txt which are must-have to merely login.
This is Cross World. The current priority is database, not avoiding world from blowing up in a fire storm as soon as you login, but still.
-rw-r--r--npc/functions/clientversion.txt987
1 files changed, 7 insertions, 980 deletions
diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt
index 55ccc3f..92ac34f 100644
--- a/npc/functions/clientversion.txt
+++ b/npc/functions/clientversion.txt
@@ -25,693 +25,6 @@ function script clientupdater {
.@dg=0;
/*
- // New skills introduced
- if (UPDATE < 1531786864) {
- UPDATE=1531786864;
- skill TMW2_FAKESKILL, 1, 0;
- skill TMW2_FAKESKILL2, 1, 0;
- }
- // Gallery Contest and 2019-12-29 no-drop incident
- // ter jan 8 03:52:20 -02 2019
- if (UPDATE < 1546926740) {
- UPDATE=1546926740;
- .@u$=strtolower(strcharinfo(0));
- setarray .@apology$, "jesusalva", "mrhedx", "ziah", "soren xd", "warblade", "yuxin", "xtreem", "monking", "demure gm", "se francisc";
- setarray .@gallery$, "jesusalva", "mishana", "bobr", "demure", "lawncable";
-
- // Users connected during nodrop incident (2018-12-29)
- // Jesusalva Mrhedx Ziah "Soren xd" WarBlade
- // yuxin Xtreem monking "demure GM" "Se Francisc"
- if (array_exists(.@apology$, .@u$)) {
- getitembound GoldenGift, 1, 1;
- Zeny=Zeny+570;
- .@dg=1;
- showavatar NPC_LOF_RICH;
- mesn ("TMW2 Staff");
- mesc l("Hello, @@! We just looked up and found out you were active during 2018-12-29!", strcharinfo(0)), 3;
- mesc l("And during that time, item dropped was bugged! We wanted to deliver you a token of apology!"), 3;
- mesc l("Sorry, and enjoy the game! Your TMW2 Staff Team."), 3;
- mesc l("Token Of Apology: 1x @@, 570 GP", getitemlink(GoldenGift));
- next;
- }
-
- // 1st Gallery Contest Participants
- // Mishana LawnCable bObr Jesusalva demure
- if (array_exists(.@gallery$, .@u$)) {
- getitem StrangeCoin, 30;
- .@dg=1;
- showavatar NPC_LOF_RICH;
- mesn ("TMW2 Staff");
- mesc l("Hello, @@! We are proud to announce the @@ RESULTS!", strcharinfo(0) , b(l("1° Screenshooting Contest"))), 3;
- mesc l("Participants: Jesusalva * mishana * bObr * demure * LawnCable"), 3;
- next;
- mesc ("Mishana Entries: Happy"), 3;
- mesc ("LawnCable Entries: Login Screen, TMW2 Field"), 3;
- mesc ("Demure Entries: Buggy Map"), 3;
- mesc ("Jesusalva Entries: LoF Secret Island, GM Plotting Evil Scheme For Next Event, Crazyfefe Cave"), 3;
- mesc ("bObr Entries: My Very Own Tiny Orchard"), 3;
- next;
- mesc l("1st Place - Mishana, LawnCable, Jesusalva, bObr");
- mesc l("5th Place - Demure");
- mes "";
- mesc l("Hey, look, a tie happened!");
- mesc l("How's that even possible? Well, 30 @@ for all contestants!", getitemlink(StrangeCoin));
- next;
- }
- }
- // Valentine Day Event Bug
- // sex fev 15 18:04:00 -02 2019
- if (UPDATE < 1550261040) {
- UPDATE=1550261040;
- if (#VALENTINE_POINTS) {
- .@dg=1;
- showavatar NPC_LOF_RICH;
- mesn ("TMW2 Staff");
- mesc l("Hello, @@! We just looked up and found out you that you were affected on a Valentine Event bug!", strcharinfo(0)), 3;
- mesc l("Due this bug, you didn't got a proper amount of points per sent. We wanted to deliver you a token of apology!"), 3;
- mesc l("Sorry, and enjoy the game! Your TMW2 Staff Team."), 3;
- mesc l("Token Of Apology: 1x @@, 1x @@", getitemlink(SilverGift), getitemlink(MercBoxB));
- getitem SilverGift, 1;
- getitem MercBoxB, 1;
- #VALENTINE_POINTS=0;
- next;
- }
- }
- // Limited bots
- // sex fev 15 23:22:21 -02 2019
- if (UPDATE < 1550280141) {
- UPDATE=1550280141;
-
- .@dg=1;
- mesc l("Game Rules were updated!"), 1;
- mesc l("Use @@ to read the new version.", "@rules"), 1;
- mes "";
- //GameRules S_NO_NPC_NAME | S_LAST_NEXT;
- }
- // Msawis bug
- // ter fev 19 12:15:00 -03 2019
- if (UPDATE < 1550589300) {
- UPDATE=1550589300;
- // Unclaimed Rewards
- // 2000283 Msawis 10 points
- // 2000552 Mrhedx 4 points
- // 2000299 vilbou 1 point
- setarray .@apology, 2000552, 2000283, 2000299;
- if (array_exists(.@apology, getcharid(3)) && (#VALENTINE_SENT+#VALENTINE_OPENED) > 0) {
- if (getcharid(3) == 2000552) {
- getitem BronzeGift, 1;
- } else if (getcharid(3) == 2000283) {
- getitem GoldenGift, 1;
- } else if (getcharid(3) == 2000299) {
- getitem StrangeCoin, 1;
- }
- dispbottom l("Valentine Day Event Reward automatically claimed");
- #VALENTINE_SENT=0;
- #VALENTINE_OPENED=0;
- #VALENTINE_RECEIVED=0;
- }
- }
- // Update Tycoon quest exp
- // dom mar 3 12:22:04 -03 2019
- if (UPDATE < 1551626524) {
- UPDATE=1551626524;
- if (getq(MineQuest_Tycoon) >= 15)
- getexp 43000, 0;
- }
- // Shovel Auto-dig option
- // seg mai 27 21:22:55 -03 2019
- if (UPDATE < 1559002975) {
- UPDATE=1559002975;
- if (countitem(IronShovel) + countitem(SteelShovel))
- dispbottom l("Shovel have been changed, right-click it to bury items.");
- }
- // General Updates
- // sex jun 21 13:20:21 -03 2019
- if (UPDATE < 1561134021) {
- UPDATE=1561134021;
- if (getq(General_Narrator) >= 3)
- getitem MercBoxAA, 1;
- // Well, you don't need this crap I hope...
- if (BaseLevel < 40)
- getitem TulimMap, 1;
- if (getq(TulimsharQuest_Sailors) == 4)
- getexp 1508, 15;
- .@cr=countitem(CroconutBox);
- if (.@cr) {
- getitem CroconutBox, .@cr;
- dispbottom l("Croconut Box magically became two in inventory. Storage unaffected."); // Too much hassle affecting storage/cart/etc.
- }
- }
- // General Updates
- // seg jul 15 16:41:35 -03 2019
- if (UPDATE < 1565039378) {
- UPDATE=1565039378;
- .@dg=true;
- mesc l(".:: This is Release 9.5 Academy ::."), 0;
- //mesc l(".:: This is Release 10.0 Infinity ::."), 0;
- // Fix mounts
- unequip(EQI_SHADOW_SHOES);
- setmount 0;
- // You got recipe book by BSS Quest - mark as complete and get Blueprint
- if (getq(NivalisQuest_BlueSageSlimes) == 2) {
- getitem any(AncientBlueprint, AlchemyBlueprintA, EquipmentBlueprintA), 1;
- CRAFTQUEST=1;
- mesc l("You got a blueprint as reward for Blue Sage Slimes Quest completion."), 3;
- }
- // If you have TMW2_CRAFT skill, you need the bonus recipe
- if (getskilllv(TMW2_CRAFT)) {
- RECIPES_EQUIPMENT[CraftDagger]=true;
- mesc l("Dagger Crafting recipe learnt."), 2;
- }
- // Bounty Hunter Helmet
- if (MERCENARY_DAILYQUEST > 100) {
- getitem BountyHunterHelmet, 1;
- mesc l("You got a @@ for completing 100+ daily bountyhunter quests!", getitemlink(BountyHunterHelmet)), 2;
- }
- // Cindy quest new rewards
- if (getq(NivalisQuest_Cindy) >= 3) {
- getexp 120000, 0;
- mesc l("You got 120,000 XP for completing Mercury's quest."), 2;
- }
- // Mercenary Rank removed
- if (MERC_RANK) {
- THIEF_RANK=MERC_RANK;
- THIEF_EXP=MERC_EXP;
- MERC_RANK=0;
- MERC_EXP=0;
- mesc l("Your class has been changed from %s to %s.", b(l("Merchant Police")), b(l("Thief"))), 1;
- }
- if (getskilllv(ALL_INCCARRY)) {
- skill TF_STEAL, getskilllv(ALL_INCCARRY);
- skill ALL_INCCARRY, 0, 0;
- mesc l("Increase Weight skill replaced with Stealing.");
- }
- // NEW MAGIC SYSTEM
- if (getskilllv(SN_SHARPSHOOTING)) {
- skill AC_CHARGEARROW, getskilllv(SN_SHARPSHOOTING);
- skill AC_CHARGEARROW, 0, 0;
- getexp 2000, 150;
- mesc l("Sharpshooting skill replaced with Charged Arrow."), 1;
- mesc l("You've got 2000 xp and 150 job xp in apology tokens.");
- }
- getskilllist();
- for (.@i=0; .@i < @skilllist_count; .@i++) {
- // skip temporary skills
- if (@skilllist_flag[.@i] != 0)
- continue;
- // Only “paid” skills will result in a Scholarship Badge
- .@id=@skilllist_id[.@i];
- .@am=0;
- switch (.@id) {
- case SM_BASH:
- case TMW2_DEMURE:
- case MG_FIREBALL:
- case MG_SRECOVERY:
- case AL_DP:
- .@am=1;
- case SM_ENDURE:
- case KN_AUTOCOUNTER:
- case KN_TWOHANDQUICKEN:
- case AL_ANGELUS:
- case CR_TRUST:
- case CR_DEFENDER:
- case AL_HOLYLIGHT:
- case TF_DETOXIFY:
- case ALL_RESURRECTION:
- case SM_RECOVERY:
- case PR_ASPERSIO:
- case AB_HIGHNESSHEAL:
- case SA_FREECAST:
- case SA_DRAGONOLOGY:
- case TMW2_SAGE:
- case SA_FLAMELAUNCHER:
- case SA_FROSTWEAPON:
- case SA_LIGHTNINGLOADER:
- case SA_SEISMICWEAPON:
- case MG_ENERGYCOAT:
- case MG_NAPALMBEAT:
- case MG_FIREBOLT:
- case MG_COLDBOLT:
- case MG_LIGHTNINGBOLT:
- case WZ_EARTHSPIKE:
- mesc l("A skill has been replaced with an @@.", getitemlink(ScholarshipBadge));
- if (!.@am)
- .@am=min(5, @skilllist_lv[.@i]);
-
- getitem ScholarshipBadge, .@am;
- skill @skilllist_id[.@i], 0, 0;
- getexp 5, (@skilllist_lv[.@i]-1)*1000;
- break;
- // Free skills (AL_HEAL and mass provoke) will result in XP
- // Only Jakod's skills with level 3+ will result in a badge
- case AL_HEAL:
- case EVOL_MASS_PROVOKE:
- if (@skilllist_lv[.@i] >= 3)
- getitem ScholarshipBadge, 1;
- case SM_PROVOKE:
- case NV_TRICKDEAD:
- .@delval=@skilllist_lv[.@i];
- mesc l("A skill has been removed, you got @@ job exp and @@ Strange Coin as an apology token.", .@delval*100, .@delval);
- skill @skilllist_id[.@i], 0, 0;
- getexp .@delval, .@delval*100;
- getitem StrangeCoin, .@delval;
- break;
- }
- }
- // Grant you AL_DP based on magic level
- if (MAGIC_LVL) {
- skill AL_DP, MAGIC_LVL, 0;
- mesc l("You have learnt \"Divine Protection\" level @@.", MAGIC_LVL), 3;
- }
- // Grant you Thief Skill Tier 3
- if (THIEF_RANK >= 3) {
- skill(ALL_INCCARRY,1,0);
- mesc l("You have learnt \"Increase Weight\" in Thief Skills."), 2;
- }
- // If you got a Scholarship Badge, you need to travel to Tulimshar.
- // Give you a Warp Crystal to do so.
- if (countitem(ScholarshipBadge)) {
- getitem TulimWarpCrystal, 1;
- mesc l("You've obtained a @@ to visit Magic Academy.", getitemlink(TulimWarpCrystal)), 1;
- }
- // Cleanup
- deletearray RNGTREASURE_DATE;
-
- // Open Beta 2019 Main Event Rewards
- .@u$=strtolower(strcharinfo(0));
- setarray .@officialnick$, "jesusalva", "kolchak", "xanthem", "seeds", "dangerduck", "test123", "sertrop", "lawncable", "pookie", "saulc",
- "apane", "omatt";
- setarray .@expval, 211625, 1955041, 938439, 59663, 73899, 10338, 7494, 7857, 1992, 360, 443, 193, 5180;
- setarray .@gpval, 150321, 863215, 3263, 973137, 5650, 18343, 45227, 42002, 37381, 50000, 50450, 50275, 49988;
- setarray .@summer, 19, 30, 55, 0, 4, 2, 3, 4, 0, 0, 0, 0, 2;
- /* Data for python
- # import exp from exptable
- i=0
- THEARRAY=[]
- while i < len(names):
- raw=overflow[i]
- c=0
- while c < level[i]:
- raw+=exp[c]
- c+=1
- print("%s: %d exp" % (names[i], raw))
- THEARRAY.append(int(raw*0.3))
- i+=1
-
- setarray .@levelval, 48, 66, 60, 39, 40, 28, 25, 26, 17, 10, 10, 8, 23;
- setarray .@overflow, 25762, 338713, 55746, 1275, 14516, 504, 2855, 640, 360, 0, 277, 18, 598;
- * /
-
- // Open Beta 2019
- .@ranking=array_find(.@officialnick$, .@u$);
- // Mishana LawnCable bObr Jesusalva demure
- showavatar NPC_LOF_RICH;
- mes "";
- mes "*************************************";
- mes "";
- mesn ("TMW2 Staff");
- mesc l("Hello, @@! We are proud to announce the @@ RESULTS!", strcharinfo(0) , b(l("Open Beta 2019"))), 3;
- mes "";
- mesc l("1st Place - Jesusalva (65)");
- mesc l("2nd Place - Kolchak (63)");
- mesc l("3rd Place - Xanthem (56)");
- mesc l("4th Place - seeds (43)");
- mesc l("5th Place - dangerDuck (23)");
- mesc l("6th Place - test123 (20)");
- mesc l("7th Place - Sertrop (17)");
- mesc l("8th Place - Pookie (13)");
- mesc l("9th Place - LawnCable (13)");
- mesc l("10th Place - Saulc (8)");
- mes "";
- mesc l("It was a reeeeeealy close dispute for the podium, but Jesusalva crafted an item at the last minute and took the first place!");
- mesc l("Although KOLCHAK managed to rank first in almost every ranking, Jesusalva was too close, and the Crafting gave him the edge he needed to take first place.");
- mesc l("Congratulations to everyone who participated on the event, even those who didn't made to the top 10!");
- if (.@ranking >= 0) {
- #ADD_LVL=.@expval[.@ranking];
-
- // Force Ched quest start if you haven't done so already
- .@year=getq(SQuest_Ched);
- if (.@year != (gettime(GETTIME_YEAR)-2000))
- setq SQuest_Ched, (gettime(GETTIME_YEAR)-2000), 0, 0;
-
-
- @ched=getq2(SQuest_Ched);
- .@pts=.@summer[.@ranking];
- if (.@pts) {
- getexp rand2(.@pts-1, .@pts*11/10), rand2(0,.@pts/25);
- setq2 SQuest_Ched, @ched+.@pts;
- }
-
- switch (.@ranking+1) {
- case 1:
- getitembound Tyranny, 1, 1;
- getitem MercBoxEE, 1;
- getitem EquipmentBlueprintE, 1;
- getitem HousingLetterI, 1;
- getitem StrangeCoin, 150;
- break;
- case 2:
- getitem MercBoxEE, 1;
- getitem EquipmentBlueprintE, 1;
- getitem HousingLetterI, 1;
- getitem StrangeCoin, 100;
- break;
- case 3:
- getitem MercBoxDD, 1;
- getitem EquipmentBlueprintD, 1;
- getitem HousingLetterI, 1;
- getitem StrangeCoin, 100;
- break;
- case 4:
- case 5:
- getitem MercBoxCC, 1;
- getitem EquipmentBlueprintC, 1;
- getitem HousingLetterI, 1;
- getitem StrangeCoin, 50;
- break;
- case 6:
- case 7:
- getitem MercBoxBB, 1;
- getitem StrangeCoin, 30;
- break;
- case 8:
- case 9:
- getitem MercBoxAA, 1;
- getitem StrangeCoin, 10;
- break;
- case 10:
- getitem MercBoxAA, 1;
- break;
- } // switch(ranking)
-
- // GP conversion rules
- // if you have less than 50k, we'll return you to initial amount
- // Because it is a thankyou for participating on the event ;-)
- .@trugp=max(50000, .@gpval[.@ranking]);
-
- // You get to carry over 1 GP for each 1000 GP too (max 1000 GP bonus)
- Zeny+=min(1000, .@trugp/1000);
-
- // You'll get 1 Rare Point for every 1k GP obtained
- // Top was 1,000,000 → 1000 rare points
- //#RARE_POINTS+=.@trugp/1000;
-
- } // if ranking
- }
- // Negative Karma = good. And positive karma allows PvP. So...
- // sex ago 9 18:10:20 -03 2019
- if (UPDATE < 1565385020) {
- UPDATE=1565385020;
- // PVP bugfix
- Karma=0;
- // Allow to skip quest if you already have the Grimorium
- if (countitem(JesusalvaGrimorium) && getskilllv(TMW2_SKILLPERMIT) == 2) {
- skill TMW2_SKILLPERMIT, 3, 0;
- }
- // This can't happen but anyway, just in case...
- if (getskilllv(TMW2_TRANSMIGRATION) > 10) {
- skill TMW2_TRANSMIGRATION, 10, 0;
- }
- // Magic Skill Points for this skill went from 3 to 2
- if (getskilllv(ASC_METEORASSAULT))
- MAGIC_PTS-=1;
- // Treasure Key from Lua
- if (getq(General_Narrator) >= 3)
- getitem TreasureKey, 1;
-
- // Post-poned Referral Rewards
- if (#REFERRAL_PROG && BaseLevel >= 25 && #REFERRAL_CTRL < 1) {
- #REFERRAL_CTRL=1;
- rodex_sendmail(gf_charid(#REFERRAL_PROG), "TMW2 Team", "Recruited Player got Lv 25!", strcharinfo(0)+" just got level 25!\nAs they get stronger, more rewards will be sent to you!", 0, SilverGift, 1);
- }
- if (#REFERRAL_PROG && BaseLevel >= 50 && #REFERRAL_CTRL < 2) {
- #REFERRAL_CTRL=2;
- rodex_sendmail(gf_charid(#REFERRAL_PROG), "TMW2 Team", "Recruited Player got Lv 50!", strcharinfo(0)+" just got level 50!\nAs they get stronger, more rewards will be sent to you!", 0, ArcmageBoxset, 1);
- }
- #REFERRAL_CTRL=3;
- if (#REFERRAL_PROG && BaseLevel >= 75 && #REFERRAL_CTRL < 3) {
- rodex_sendmail(gf_charid(#REFERRAL_PROG), "TMW2 Team", "Recruited Player got Lv 75!", strcharinfo(0)+" just got level 75!\nAs they get stronger, more rewards will be sent to you!", 0, PrismGift, 1);
- }
- // Eisten Rewards
- if (BaseLevel >= 50 && getq(TulimsharQuest_Eistein) == 2)
- getitem SilverGift, 1;
- if (BaseLevel >= 75 && getq(TulimsharQuest_Eistein) == 3)
- getitem GoldenGift, 1;
- if (BaseLevel >= 75 && getq(TulimsharQuest_Eistein) >= 3)
- getitem GraduationRobe, 1;
- // Grant you Thief Skill Tier 4
- if (THIEF_RANK >= 4) {
- skill(MC_OVERCHARGE,1,0);
- dispbottom l("You have learnt \"Barter\" in Thief Skills.");
- }
- // Update Crafting Score
- CRAFTING_SCORE_COMPLETE=CRAFTING_SCORE*39;
- // Water bug
- if (strcharinfo(0) == "JulieWarhawk") {
- .@dg=true;
-
- // Sell Bottles
- if (countitem(BottleOfWoodlandWater) > 1) {
- delitem BottleOfWoodlandWater, (countitem(BottleOfWoodlandWater)/2)+1;
- }
- if (countitem(EmptyBottle)) {
- delitem EmptyBottle, countitem(EmptyBottle);
- }
- if (countitem(IcedBottle)) {
- delitem IcedBottle, countitem(IcedBottle);
- }
- getitem ArcmageBoxset, 1;
-
- // Unjail player
- atcommand "@unjail "+strcharinfo(0);
- mesn "Jesusalva";
- mesq l("You're right, you never sold any Water Bottle ever. I'm unjailing you.");
- mesc l("As an Apology Token, you're also receiving one @@.", getitemlink(ArcmageBoxset));
- next;
- }
-
- // Bug reward (FF)
- if (strcharinfo(0) == "seeds") {
- getitembound LegendaryMouboo, 1, 1;
- }
- }
- // Old regex messed things up
- // All updates in August are invalid
- // inv ali d --:--:-- +-- ----
- if (UPDATE > 1564617600 && UPDATE < 1567295999 && UPDATE != 1565385020) {
- UPDATE=1565039378;
- mesn "Narrator";
- mesc l("Warning."), 1;
- mesc l("Warning."), 1;
- mesc l("Warning: Invalid UNIX EPOCH time detected."), 1;
- next;
- mesc l("We'll be correcting this bug automatically now.");
- mesc l("YOU WILL BE DISCONNECTED BY FORCE."), 1;
- mesc l("Please login right after, and this error should not happen again.");
- next;
- // Force user to disconnect
- atcommand "@kick "+strcharinfo(0);
- }
- // Leather Quiver price update
- // qua set 4 11:07:12 -03 2019
- if (UPDATE < 1567606032) {
- UPDATE=1567606032;
- // Leather Quiver update
- if (countitem(LeatherQuiver)) {
- getitem TitaniumOre, countitem(LeatherQuiver)*3;
- getitem Coal, countitem(LeatherQuiver)*2;
- dispbottom l("Titanium Ore and Coal refunded on Leather Quiver update.");
- }
- // Braknar shield recipe
- if (getq(NivalisQuest_Baktar) >= 3) {
- RECIPES_EQUIPMENT[CraftBraknarShield]=true;
- dispbottom l("Braknar Shield Recipe unlocked!");
- }
- // Orby's fix
- if (strcharinfo(0) == "Orby") {
- delinventorylist(); // Needed, because we'll rely on rfind()
- getinventorylist();
- .@index=array_rfind(@inventorylist_id, IronQuiver);
- setitemoptionbyindex(.@index, 0, VAR_VITAMOUNT, 1);
- setitemoptionbyindex(.@index, 1, IOPT_RICHNESS, 1);
- dispbottom l("Iron Quiver stats restored");
- // As Orby is Hurnscald Mayor for this term, fix Hurnscald
- .@df=$HURNS_TAX-100;
- $HURNS_MONEY+=.@df;
- $HURNS_TAX=100;
- }
- // Crazyfefe's fix
- if (strcharinfo(0) == "Crazyfefe") {
- CRAFTING_SCORE_COMPLETE+=30*39;
- CRAFTING_SCORE=CRAFTING_SCORE_COMPLETE/40;
- }
- // Karma fix (double check
- Karma=0;
- }
- // Baktar changes
- // seg out 21 19:32:55 -03 2019
- if (UPDATE < 1571697175) {
- UPDATE=1571697175;
- .@q2=getq2(NivalisQuest_Baktar);
- if (.@q2 & 4)
- setq2 NivalisQuest_Baktar, .@q2^4;
- if (.@q2 & 2)
- Zeny+=1000;
- if (.@q2 & 1)
- Zeny+=1350;
- }
- // Ryan reward remaster + Monthly Reward rewrite
- // qua nov 6 21:15:41 -03 2019
- if (UPDATE < 1573085741) {
- UPDATE=1573085741;
- // Login reward fix
- if (#LOGIN_ALLTIME >= 6 && #UPDATE < 1573085741) {
- dispbottom l("CONGRATULATIONS! For a semester worth of logins, you're getting a pet!");
- makepet Piou;
- }
- #UPDATE=1573085741;
-
- // Ryan Quest
- if (getq(HalinarzoQuest_LifeDelight) >= 3)
- getitem MylarinDust, 1;
-
- // Impossible...
- if (getq(HalinarzoQuest_LifeDelight) >= 4)
- getitem SunnyCrystal, 1;
- }
- // Registration Date
- // sáb jan 25 18:30:00 BRT 2020
- if (UPDATE < 1579987800) {
- UPDATE=1579987800;
- if (!#REG_DATE) {
- #REG_DATE=gettimetick(2); // 1520046000 : sáb mar 3 00:00:00 BRT 2018
- // A thank-you for being with us for almost 2 years
- getitem StrangeCoin, 1;
- dispbottom l("Thank you for being with us for so long. You gained a %s as a random good-hearted action from the team!", getitemlink(StrangeCoin));
- }
- }
- // Language over simplification
- // dom fev 16 14:54:30 BRT 2020
- if (UPDATE < 1581875670) {
- UPDATE=1581875670;
- switch (Lang) {
- case 0:
- break;
- case 1: // Old French
- Lang=LANG_FR; break;
- case 3: // Old Spanish
- Lang=LANG_ES; break;
- case 4: // Old Portuguese
- Lang=LANG_PTBR; break;
- case 5: // Old German
- Lang=LANG_DE; break;
- default:
- Lang=99; break;
- }
-
- if (Lang > MAX_LANG) {
- .@dg=1;
- Lang=0;
- asklanguage();
- mes l("Ok, done.");
- }
- }
- // AFK Time fix
- // dom mar 1 22:05:00 BRT 2020
- if (UPDATE < 1583111100) {
- UPDATE=1583111100;
- unequipbyid(Slippers);
- unequipbyid(AFKCap);
- unequipbyid(Blanket);
- unequipbyid(Bathrobe);
- skill TMW2_SPEECH, 0, 0;
- // PS. All values are ÷ 3
- if (AFKING >= 28800)
- sk_lvup(TMW2_SPEECH); // 24 hours mark
- if (AFKING >= 201600)
- sk_lvup(TMW2_SPEECH); // 7 days mark
- if (AFKING >= 864000)
- sk_lvup(TMW2_SPEECH); // 30 days mark
- if (AFKING >= 2592000)
- sk_lvup(TMW2_SPEECH); // 90 days mark
- }
- // Deprecate event points
- // dom abr 26 12:41:55 BRT 2020
- if (UPDATE < 1587915715) {
- UPDATE=1587915715;
-
- if (EVENT_POINTS) {
- getitem StrangeCoin, EVENT_POINTS/2;
- EVENT_POINTS=0;
- }
-
- }
- // Magic v3
- // dom jun 21 05:55:00 BRT 2020
- if (UPDATE < 1592729700) {
- UPDATE=1592729700;
- #FIRST_TIME=true;
-
- if (getskilllv(TMW2_CRAFT) > 5) {
- // Refund part of the money spent
- Zeny+=35000+(getskilllv(TMW2_CRAFT) > 6 ? 40000 : 0);
- // Update crafting
- skill TMW2_CRAFT, 5, 0;
- dispbottom l("Crafting rules changed! Your crafting skill was lowered to Level 5, talk to Craftmaster to recover it!");
- }
-
- // Rebirth Heroics
- if (strcharinfo(0) == "Crazyfefe") {
- getitem SupremeGift, 1;
- channelmes("#world", $REBIRTH_WINNER$+" is the first player to REBIRTH!! They are so OP! %%N");
- announce "All hail ##B"+$REBIRTH_WINNER$+"##b, first player to REBIRTH and become OP!", bc_all|bc_npc;
- }
-
- // Mass Provoke replacement
- if (getskilllv(EVOL_AREA_PROVOKE)) {
- getitembound ScholarshipBadge, getskilllv(EVOL_AREA_PROVOKE), 4;
- MAGIC_PTS-=getskilllv(EVOL_AREA_PROVOKE)+1;
- skill EVOL_AREA_PROVOKE, 0, 0;
- dispbottom col(l("MSP for Area Provoke was refunded."), 1);
- }
- if (getskilllv(EVOL_MASS_PROVOKE)) {
- skill EVOL_AREA_PROVOKE, getskilllv(EVOL_MASS_PROVOKE), 0;
- skill EVOL_MASS_PROVOKE, 0, 0;
- dispbottom col(l("Mass Provoke replaced with Area Provoke."), 1);
- }
-
- // MG_LIGHTNINGBOLT and TMW2_LIGHTNINGBOLT MSP cost differ, refund
- if (getskilllv(MG_LIGHTNINGBOLT)) {
- getitembound ScholarshipBadge, getskilllv(MG_LIGHTNINGBOLT), 4;
- MAGIC_PTS-=getskilllv(MG_LIGHTNINGBOLT);
- skill MG_LIGHTNINGBOLT, 0, 0;
- dispbottom col(l("MSP for Lightning Strike was refunded."), 1);
- }
-
- // SN_WINDWALK MSP cost differ, refund
- if (getskilllv(SN_WINDWALK)) {
- getitembound ScholarshipBadge, getskilllv(SN_WINDWALK), 4;
- MAGIC_PTS-=getskilllv(SN_WINDWALK)+2;
- skill CR_TRUST, 0, 0;
- dispbottom col(l("MSP for Wind Walker was refunded."), 1);
- }
-
- // CR_TRUST MSP cost differ, refund
- if (getskilllv(CR_TRUST)) {
- getitembound ScholarshipBadge, getskilllv(CR_TRUST), 4;
- MAGIC_PTS-=getskilllv(CR_TRUST)+2;
- skill CR_TRUST, 0, 0;
- dispbottom col(l("MSP for Last Man Standing was refunded."), 1);
- }
-
-
- // Eisten Update
- if (getq(TulimsharQuest_Eistein) > 3) {
- getitem GraduationAlbum, 1;
- dispbottom l("You've got a Graduation Album for Eistein levels!");
- }
-
- }
// Magic v3 regression
// ter jul 7 18:42:22 BRT 2020
if (UPDATE < 1594158142) {
@@ -765,61 +78,6 @@ function script clientupdater {
}
}
}
- // Skill RP Patch [Magic v3 delayed]
- // ter ago 25 20:20:20 BRT 2020
- if (UPDATE < 1598397620) {
- UPDATE=1598397620;
-
- // Skills deleted or with poor equivalence
- skillInvoke[EVOL_AREA_PROVOKE]+=skillInvoke[EVOL_MASS_PROVOKE];
- skillInvoke[EVOL_MASS_PROVOKE]=0;
-
- skillInvoke[TMW2_LIGHTNINGBOLT]+=skillInvoke[MG_LIGHTNINGBOLT];
- skillInvoke[MG_LIGHTNINGBOLT]=0;
-
- // Skills replaced
- skillInvoke[TMW2_FIREARROW]+=skillInvoke[MG_FIREBALL];
- skillInvoke[MG_FIREBALL]=0;
-
- skillInvoke[TMW2_NAPALMBEAT]+=skillInvoke[AL_HOLYLIGHT];
- skillInvoke[AL_HOLYLIGHT]=0;
-
- skillInvoke[TMW2_HOLYLIGHT]+=skillInvoke[MG_NAPALMBEAT];
- skillInvoke[MG_NAPALMBEAT]=0;
-
- skillInvoke[TMW2_MAGICSTRIKE]+=skillInvoke[MG_SOULSTRIKE];
- skillInvoke[MG_SOULSTRIKE]=0;
-
- skillInvoke[TMW2_METEORSTRIKE]+=skillInvoke[WZ_EARTHSPIKE];
- skillInvoke[WZ_EARTHSPIKE]=0;
-
- skillInvoke[TMW2_FROSTDIVER]+=skillInvoke[MG_COLDBOLT];
- skillInvoke[MG_COLDBOLT]=0;
-
- skillInvoke[TMW2_FROSTNOVA]+=skillInvoke[MG_FROSTDIVER];
- skillInvoke[MG_FROSTDIVER]=0;
-
- skillInvoke[TMW2_NILFHEIM]+=skillInvoke[WZ_FROSTNOVA];
- skillInvoke[WZ_FROSTNOVA]=0;
-
- skillInvoke[TMW2_FIRSTAID]+=skillInvoke[AL_HEAL];
- skillInvoke[AL_HEAL]=0;
-
- skillInvoke[TMW2_HEALING]+=skillInvoke[AB_HIGHNESSHEAL];
- skillInvoke[AB_HIGHNESSHEAL]=0;
- }
- // Misc bugfixes
- // dom nov 22 15:27:47 BRT 2020
- if (UPDATE < 1606069667) {
- UPDATE=1606069667;
- if (RECIPES_EQUIPMENT[0]) {
- Zeny += 15000;
- getitem PrismGift, 1;
- RECIPES_EQUIPMENT[0] = false;
- dispbottom l("Invalid recipe from Nahrec partly reimbursed.");
- }
- }
- */
// Christmas Warp bug
// seg dez 28 20:45:55 BRT 2020
if (UPDATE < 1609199155) {
@@ -834,52 +92,6 @@ function script clientupdater {
ReturnTown();
}
}
- // Assign the initial academic titles
- if (strcharinfo(0) == "Jesus Saves")
- ACADEMIC_RANK=ACADEMIC_GM;
- else if (strcharinfo(0) == "Saulc GM")
- ACADEMIC_RANK=ACADEMIC_GM;
- else if (strcharinfo(0) == "jak2")
- ACADEMIC_RANK=ACADEMIC_GM;
- else if (strcharinfo(0) == "LawnCable")
- ACADEMIC_RANK=ACADEMIC_BACHELOR;
- else if (strcharinfo(0) == "Kolchak")
- ACADEMIC_RANK=ACADEMIC_TECHNIC;
- else if (strcharinfo(0) == "dangerDuck")
- ACADEMIC_RANK=ACADEMIC_TECHNIC;
- else if (strcharinfo(0) == "Livio")
- ACADEMIC_RANK=ACADEMIC_TECHNIC;
- else if (strcharinfo(0) == "Arthur")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Mathias Cronqvist")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Manatauro")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "GoNzO")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "YuckFou")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Xanthem")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Povo")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Esteria")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
-
- if (ACADEMIC_RANK != ACADEMIC_LAYMAN) {
- // Select a benefactor
- .@benefactor$=rand_sponsor();
- // Inform yourself
- dispbottom l("You received the %s title from %s.",
- academicrank(), .@benefactor$);
- // Inform everyone
- kamibroadcast(sprintf("%s has been granted the title of %s. Thank %s!",
- strcharinfo(0), academicrank(), .@benefactor$));
- // Log in a special log file as well
- logmes(sprintf("%s has been granted the title of %s.",
- strcharinfo(0), academicrank()));
- }
-
// Gallery Contest
.@dg=1;
showavatar NPC_LOF_RICH;
@@ -921,125 +133,12 @@ function script clientupdater {
#GUILDSHOP=GUILDSHOP;
GUILDSHOP=0;
}
- // Post-Fire Titulations
- // ter ago 17 20:02:40 BRT 2021
- if (UPDATE < 1629241360) {
- UPDATE=1629241360;
- // Assign the initial academic titles
- if (strcharinfo(0) == "Jesus Saves")
- ACADEMIC_RANK=ACADEMIC_GM;
- else if (strcharinfo(0) == "Saulc GM")
- ACADEMIC_RANK=ACADEMIC_GM;
- else if (strcharinfo(0) == "jak1")
- ACADEMIC_RANK=ACADEMIC_GM;
- else if (strcharinfo(0) == "dangerDuck")
- ACADEMIC_RANK=ACADEMIC_TECHNIC;
- else if (strcharinfo(0) == "Livio")
- ACADEMIC_RANK=ACADEMIC_TECHNIC;
- else if (strcharinfo(0) == "Xanofire")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Arthur the King")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Mathias Cronqvist")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Mana")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Povo")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
- else if (strcharinfo(0) == "Esteria")
- ACADEMIC_RANK=ACADEMIC_STUDENT;
-
- //else if (strcharinfo(0) == "LawnCable")
- // ACADEMIC_RANK=ACADEMIC_BACHELOR;
- //else if (strcharinfo(0) == "Kolchak")
- // ACADEMIC_RANK=ACADEMIC_TECHNIC;
- //else if (strcharinfo(0) == "GoNzO")
- // ACADEMIC_RANK=ACADEMIC_STUDENT;
- //else if (strcharinfo(0) == "YuckFou")
- // ACADEMIC_RANK=ACADEMIC_STUDENT;
-
- if (ACADEMIC_RANK != ACADEMIC_LAYMAN) {
- // Select a benefactor
- .@benefactor$=rand_sponsor();
- // Inform yourself
- dispbottom l("You received the %s title from %s.",
- academicrank(), .@benefactor$);
- // Inform everyone
- kamibroadcast(sprintf("%s has been granted the title of %s. Thank %s!",
- strcharinfo(0), academicrank(), .@benefactor$));
- // Log in a special log file as well
- logmes(sprintf("%s has been granted the title of %s.",
- strcharinfo(0), academicrank()));
- }
- }
// Change some quest inner workings
// qua set 22 12:30:40 BRT 2021
if (UPDATE < 1632324640) {
UPDATE=1632324640;
setq1 HalinarzoQuest_Alvasus, getq(HalinarzoQuest_Alvasus)+1;
}
- // Christmas 2021
- // ter dez 28 11:57:17 BRT 2021
- if (UPDATE < 1640703437) {
- .@u$ = strtolower(strcharinfo(0));
- setarray .@xmas21$, "jesusalva", "poppet", "jak1", "horak", "hocus pocus fidibus", "statue";
- setarray .@xmas20$, "andulkat", "kolchak", "Pacman_I_I";
- if (array_exists(.@xmas21$, .@u$)) {
- .@dg=1;
- showavatar NPC_LOF_RICH;
- mesn ("TMW2 Staff");
- mesc l("Hello, %s! Congratulations for finishing the %s!", strcharinfo(0), b(l("Christmas 2021 Joint Event"))), 3;
- mesc l("You need to pick your prizes!"), 3;
- inventoryplace NPCEyes, 6, Iten, 5;
- next;
- mesc l("Select one:"), 3;
- menuint
- l("Elixir of Life"), ElixirOfLife,
- l("Sacred Immortality Potion"), SacredImmortalityPotion;
- mes "";
- .@it1 = @menuret;
- mesc l("Select one:"), 3;
- menuint
- l("Short Gunstaff"), PynRevolver,
- l("Rapid Gunstaff"), PynGatling,
- l("Explosive Gunstaff"), PynShotgun,
- l("Powerful Gunstaff"), PynRifle;
- mes "";
- .@it2 = @menuret;
- getitem .@it1, 5;
- getitembound .@it2, 1, 1;
- getitem GoldenBossGift, 1;
- getitem SupremeGift, 1;
- getitem MagicApple, 1;
- getitem Arcanum, 1;
- getitem StrangeCoin, 30;
- } else if (array_exists(.@xmas20$, .@u$)) {
- getitem Arcanum, 1;
- getitem StrangeCoin, 30;
- }
- UPDATE=1640703437;
- // misc fixes
- if (getq(LoFQuest_George) >= 3)
- getexp 45000, 0;
- if (getq(LoFQuest_George) >= 5)
- getexp 135000, 0;
- if (getq2(HalinarzoQuest_LifeDelight) >= 20)
- getitem Coffee, 1;
- if (getq2(HalinarzoQuest_LifeDelight) >= 30)
- getitem Manapple, 1;
- if (getq2(HalinarzoQuest_LifeDelight) >= 40)
- getitem LoFWarpCrystal, 1;
- if (getq2(HalinarzoQuest_LifeDelight) >= 60)
- getitem SacredLifePotion, 1;
- if (getq2(HalinarzoQuest_LifeDelight) >= 70)
- getitem MercBoxDD, 1;
- if (getq2(HalinarzoQuest_LifeDelight) >= 80)
- getitem DivineApple, 1;
- if (getq2(HalinarzoQuest_LifeDelight) >= 90)
- getitem MysteriousFruit, 1;
- if (getq2(HalinarzoQuest_LifeDelight) >= 21)
- Mobpt+=((getq2(HalinarzoQuest_LifeDelight) - 1) * (getq2(HalinarzoQuest_LifeDelight) - 20)); // Will work... Sort of
- }
// Realm of Drops
// sab set 24 15:37:15 BRT 2022
if (UPDATE < 1664044635) {
@@ -1068,21 +167,10 @@ function script clientupdater {
if (getq(TulimsharQuest_MobTutorial) >= 8)
Zeny+=2200;
}
+ */
// :// End of Regular Update System
////////////////////////////////////
- // Valentine 2020 Record
- if (#VALENTINE20_REWARDS) {
- .@dg=1;
- // Get misc items
- getitem OolongTea, 3;
- getitem SpearmintTea, 5;
- getitem CrazyRum, 1;
- getitem DwarvenSake, 3;
- dispbottom col(l("THANK YOU for participating on cross-server Valentine 2020 Event! We hope you had fun!"), 7);
- #VALENTINE20_REWARDS=false;
- }
-
// Permanent Gold Boost
// #ADD_GP means the user have to right to get some gp
if (#ADD_GP) {
@@ -1090,80 +178,21 @@ function script clientupdater {
#ADD_GP=0;
}
- // Permanent Strange Coins Boost
- // #ADD_SC means the user have to right to get some strange coins
- if (#ADD_SC) {
- logmes "[Merger] Strange Coins +"+#ADD_SC, LOGMES_ATCOMMAND;
- getitem StrangeCoin, #ADD_SC;
- #ADD_SC=0;
- }
-
- // Permanent Monster Points Boost
- // #ADD_MPT means the user have to right to get some Mobpt
- if (#ADD_MPT) {
- logmes "[Merger] Mobpt +"+#ADD_MPT, LOGMES_ATCOMMAND;
- Mobpt+=#ADD_MPT;
- #ADD_MPT=0;
- }
-
- // Non Permament Level Boost
- if (#ADD_TMP_LVL) {
- // Grant the level
- if (numdate() <= 20200216 && !#SAVED_LVL) {
- #SAVED_LVL=BaseLevel;
- BaseLevel=#ADD_TMP_LVL;
- dispbottom l("Level set from %d to %d", #SAVED_LVL, BaseLevel);
-
- // Welcome message
- .@dg=true;
- showavatar NPC_LOF_RICH;
- mesn "Moubootaur Legends Server";
- mesc l("First of all: Welcome! Your level was temporaly modified, it'll be reverted once event is over."), 3;
- next;
- mesn "Moubootaur Legends Server";
- mesc l("You will be able to pick basic weapons and skills at the Event Soul Menhir."), 3;
- next;
- mesn "Moubootaur Legends Server";
- mesc l("Be careful during night, use \"@tutorial\" in case of doubt, use \"%s\" to go to the event, and good luck!", b("@toevent")), 3;
- next;
- // Restore the level
- } else if (numdate() > 20200216 && #SAVED_LVL) {
- dispbottom l("Level reset from %d to %d", BaseLevel, #SAVED_LVL);
- // Save
- #DEBUG_LEVEL1=#ADD_TMP_LVL;
- #DEBUG_LEVEL2=BaseLevel;
- #DEBUG_LEVEL3=#DEBUG_LEVEL2-#DEBUG_LEVEL1;
- #DEBUG_EXP=BaseExp;
- // Reset
- //BaseLevel=#SAVED_LVL;
- //#SAVED_LVL=0;
- #ADD_TMP_LVL=0;
- // Player too late for event!
- } else if (numdate() > 20200216) {
- dispbottom l("This event has already ended.");
- #ADD_TMP_LVL=0;
- }
- }
-
// Permanent Level Boost
- // #ADD_LVL means the user have to right to get some levels. This is a sketch. The code might be deleted.
+ // This is the Cross Worlds. Level is overriden.
if (#ADD_LVL) {
+ resetlvl(2);
//logmes "[Merger] EXP +"+#ADD_LVL, LOGMES_ATCOMMAND;
if ((readparam(BaseExp)+#ADD_LVL > readparam(NextBaseExp))) {
do {
- if (BaseLevel >= TOP3AVERAGELVL()) break; // Boundaries
.@v=readparam(NextBaseExp)-readparam(BaseExp);
getexp .@v, 0;
#ADD_LVL-=.@v;
} while (readparam(BaseExp)+#ADD_LVL > readparam(NextBaseExp));
}
- // Only give remaining EXP if you did not hit the boundary
- if (BaseLevel < TOP3AVERAGELVL()) {
- getexp #ADD_LVL, 0;
- #ADD_LVL=0;
- }
- //rodex_sendmail(getcharid(0), "TMW2 Team", "Welcome to Moubootaur Legends", "Hey, thanks for believing on us! We hope to have a great time together. Any problem, ask for help in #world - the Discord bridge! Enjoy our game!", 20);
- // TODO: Maybe give an item which lets you open the storage anywhere?
+ // Left overs
+ getexp #ADD_LVL, 0;
+ #ADD_LVL=0;
}
if (.@dg) {
@@ -1189,9 +218,7 @@ function script checkclientversion {
mesc l("Warning."), 1;
mesc l("Warning: You are using an old client."), 1;
next;
- //mesc l("Please install the new client from [@@https://manaplus.org/|https://manaplus.org/@@]");
- mesc l("Alternatively, download a bleeding edge build at [@@https://manaplus.germantmw.de/|https://manaplus.germantmw.de/@@]");
- mesc l("Or use our awesome [@@https://tmw2.org/manalauncher/InstallManaLauncher.exe|Mana Launcher@@] if you're on Windows or Linux.");
+ 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.");