Added "8-slot SETUP expand" item on the CashShop. Solved a concurrency issue on the fameGainByQuest method. Refactored many resource freeing modules throughout the source code. Implemented dynamic deployment of worlds and channels on the server system. Only creation of channels and worlds are available on this feature. Added a dedicated worker for schedules requested on EventManager. Fixed a potential cause for deadlocks on the channel schedulers' system. Refactored many schedules used by the EventManager and Channel, futher improving overall scheduling performance on the server.
14 KiB
14 KiB
#HeavenMS
Credits:
Ronan - Head Developer
Vcoc - Freelance Developer
DISCLAIMER:
This is NOT intended to be a PURE v83 MapleStory server emulator (acting under the clean WZ files, provided by Nexon/Wizet). There has been provided a whole array of edited WZ on the Drive to be used for this server. Although normal WZs will load properly, there is no guarantee in-game bugs and issues may arise because of some incompatibilities with the clean files.
Feature list:
PQs:
- HPQ/KPQ/LPQ/LMPQ/OPQ/EllinPQ/PiratePQ/MagatiaPQ/HorntailPQ/AmoriaPQ/TreasurePQ/ElnathPQ/HolidayPQ.
- CWKPQ as Expedition-based event.
- Expeditions: Scarga/Horntail/Showa/Balrog/Zakum/Pinkbean.
- GuildPQ + Guild queue with multi-lobby systems available.
- Brand-new PQs: BossRushPQ, CafePQ.
- Mu Lung Dojo.
- Capt. Latanica remade as an event (parties can now fight the boss).
Skills:
- Some skills behaving oddly have been patched, such as Steal, Venomous Star/Stab, Heal and Mystic Doors.
- Maker skill features properly developed.
- Improved current Battleship skill, now showing the HP properly on buff tab and making visible for others after changing maps.
- Server is using heuristics to calculate fee costs for the Maker (errors sums up to 8k mesos, reagent errors stacks up comformant with it's level).
- New skill: Chair Mastery (max lv 1) - Players having this passive skill can gain a significant boost of HP/MP recovery when sitting on a field/map chair.
- Mu Lung Dojo skills functional.
Quests:
- Doll house quest functional.
- Quests can now reward properly items when matching a reward item with the player's job.
- Quest rewards according to jobs works properly.
- Reward selection and randomed reward works properly.
- Loads of quests have been patched.
- Meso requirement for starting/completing quests now must be met by the player.
- Lots of job questlines (rewarding skills) have been patched/implemented.
- Enhanced rewarding system: checks for stacking opportunities on the inventory before checking for new slots.
- Improved the quest expiration system, one of the tweaks making the clock UI disappear when completing/expiring quests.
- Reviewed Aran questline.
- Reviewed 4th job skill questlines as a whole.
- Complete overhaul on the 3rd job quiz (explorers), with all 40-question pool now made available.
Player Social Network:
- Guild and Alliance system fully functional.
- Implemented Marriage system from the ground-up (excluding character packet encoding parts that were already present, proper credits given throughout the source files).
- Beginners can create and join a "beginner-only" party (characters up to level 10).
- HP bar of party members now properly calculates the HP gain from equipments.
- Enhanced synchronization on Player Shops and Hired Merchants. Transactions made are instantly informed to the owner.
- Player Shops and Hired Merchants properly displaying the correct shop image to other players, and informing whether the shop is available to visit or full.
- Game minirooms such as match cards and omok now has a functional password system.
- Item pickup cooldown on non-owned/non-partyowned items functional.
- Further improved the server's ranking system, now displaying properly daily player ranking movement.
- Automated support for Player NPCs and Hall of Fame.
- Protected concurrently and improved the face expression system, guarding from trivial packet spam and exploits.
Cash & Items:
- EXP/DROP/Cosmetic Coupons.
- EXP/DROP coupons now appears as a buff effect when on active time.
- Great deal of cash items functional.
- MapleTV mechanics stabilized and separated by world.
- GMS-esque omok/match card drop chances.
- New scroll: antibanish. For use only in cases where bosses send a player back to town.
- Inventory system properly checks for item slot free space and ownership.
- Storage with "Arrange Items" feature functional.
- Close-quarters evaluation mode for items (sandbox).
- Further improved Karma scissors mechanics.
- Spikes on shoes.
- Vega's spell.
- Owl of Minerva.
- Pet item ignore.
- New Year's card (New Year effect sometimes d/c's a player).
- Kite.
- Cash Shop Surprise.
- Maple Life.
Monsters, Maps & Reactors:
- Every monsterbook card is now droppable by overworld mobs.
- Added meso drop data for basically every missing overworld mob.
- Monsterbook displays drop data info conformant with the underlying DB (needs custom wz). See more on the MobBookUpdate feature.
- Every skill/mastery book is now droppable by mobs.
- Mobs now can drop more than one of the same equipment (number of possible drops defined at droptime, uses the minimum/maximum quantity fields on DB).
- Redesigned HT mechanics for spawn and linked damage to the sponge.
- Limited item count on maps, smartly expiring oldest registered items, preventing potential item flooding.
- Implemented Zombify disease status.
- Added Boss HP Bar for dozens of bosses (needs provided custom wz).
- If multiple bosses are on the same area, client will prioritize Boss HP bar of the target of the player.
- Improved map bounding checks for item drop points, assuring most of the items dropped will be available to pickup inside the accessible map area.
- Boats, elevator and other travelling mechanics fully working.
- HP decreasing overtime on maps and mechanics to prevent them (consumables, equips) fully functional.
- Crimson Balrog boat approaching visual effect made functional.
- Maps having everlasting items no longer expires them.
- PQs, Taxis and other event-driven situations warps players at random spawnpoints, GMS-like.
- Some reactors (PQ bonus boxes) spraying items on the map, instead of dropping everything at once.
- Reactors pick items up smartly, checking for an option to pick up on many-items-nearby scenario.
- Updated many scripted portals not implementing SFX properly.
- Updated Crimsonwood, World Tour, Nihal Desert and Neo City, enabling quest completion and game progression in these areas.
- Giant Cake (anniversary-themed boss) drops Maple equipments, Maple scrolls, summoning bags and many more interesting items.
PQ potentials:
- Lobby system - Multiple PQ instances on same channel.
- Expedition system - Multiples parties can attempt on a same instance (lobbies and expeds are mutually-exclusive).
- Guild queue system - Guilds can register themselves on a queue for the GPQ.
- EIM Pool system - After the first instance setup, next event instances are loaded beforehand and set on a pooling queue, optimizing future loadouts.
Player potentials:
- Adventurer Mount quests functional.
- All Equipment levels up.
- Player level rates.
- Gain fame by quests.
- Pet evolutions functional (not GMS-like).
- Reviewed keybinding system.
Server potentials:
- Multi-worlds.
- Dynamic World/Channel deployment.
- Inventory auto-gather and auto-sorting feature.
- Enhanced auto-pot system: pet uses as many potions as necessary to reach the desired threshold.
- Enhanced buff system: smartly checks for the best available buff effects to be active on the player.
- Enhanced AP auto-assigner: exactly matches AP with the needed for the player's current level, surplus assigned to the primary attribute.
- Enhanced inventory check: free slots on inventory smartly fetched on demand.
- Enhanced auto-loot handler: optimized the brute-force checks for some cash items on the player equipped inventory at every requisition.
- Tweaked pet/mount hunger: calculations for fullness/tiredness takes active time of the subject into account.
- Consistent experience gain system.
- NPC crafters (equips, plates/jewels, etc) now won't take items freely if the requirement conditions are not properly met.
- Improved Duey mechanics: package received popup and reviewed many delivery mechanics.
- Pet item pickup now gives preference to player attacks rather than forcing attack disables when automatically picking up.
- Channel capacity bar functional and world servers with max capacity checks.
- Disease status are now visible for other players, even when changing maps.
- Poison damage value are now visible for other players.
- Mastery book announcer displays droppers of needed books of a player, by reading underlying DB.
- Custom jail system (needs provided custom wz).
- Custom buyback system.
- Delete Character (requires ENABLE_PIC activated).
- Smoothed up view-all-char feature, now showing properly all available characters and not disconnecting players too often.
- Centralized getcurrenttime throughout several server handlers, boosting it's performance overall.
- Autosaver (periodically saves on DB current state of every player in-game).
- Both fixed and randomized versions of HP/MP growth rate available, regarding player job (enable one at ServerConstants). Placeholder for HP/MP washing feature.
- Implemented methods to get the current Players' MaxHP/MaxMP method with equipment HP/MP gains already summed up.
- Reallocated mapobjectids utilization throughout the source, preventing issues such as "NPC disappearing mysteriously after some server time" from happening.
- Implemented old GMS statup mechanic for novices level 10 or below. Usage of the edited localhost is mandatory on this.
- Accounts can be created automatically when trying to login on an inexistent account -- credits to shavit.
- Usage of Bcrypt (up-to-date) as the main password hashing algorithm, replacing old SHA's -- credits to shavit.
Custom NPCs:
- Spiegelmann: automatized rock-refiner.
- Asia: scroll & rarities shop NPC.
- Abdula: lists droppers of needed skill/mastery books.
- Agent E: accessory crafter.
- Donation Box: automatized item-buyer.
- Coco & Ace of Hearts: C. scroll crafters.
Admin/GM commands:
- Server commands layered by GM levels.
- Spawn Zakum/Horntail/Pinkbean.
- New commands.
External tools:
- MapleArrowFetcher - Updates min/max quantity dropped on all arrows drop data, calculations based on mob level and whether it's a boss or not.
- MapleBossHpBarFetcher - Searches the quest WZ files and reports in all relevant data regarding mobs that has a boss HP bar whilst not having a proper "boss" label.
- MapleCashDropFetcher - Searches the DB for any CASH drop data entry and lists them on a report file.
- MapleCouponInstaller - Retrieves coupon info from the WZ and makes a SQL table with it. The server will use that table to gather info regarding rates and intervals.
- MapleIdRetriever - Two behaviors: generates a SQL table with relation (id, name) of the handbook given as input. Given a file with names, outputs a file with ids.
- MapleInvalidItemIdFetcher - Generates a file listing all inexistent itemid's currently laying on the DB.
- MapleInvalidItemWithNoNameFetcher - Generates two files: one listing all itemid's with inexistent name and "cash" property. And other with a prepared XML to solve the name issue.
- MapleMapInfoRetriever - Basic tool for detecting missing info nodes on the map field structures (maps failing to have an info node on the WZ is an critical issue).
- MapleMesoFetcher - Creates meso drop data for mobs with more than 4 items (thus overworld mobs), calculations based on mob level and whether it's a boss or not.
- MapleMobBookIndexer - Generates a SQL table with all relations of cardid and mobid present in the mob book.
- MapleMobBookUpdate - Generates a wz.xml that is a copy of the original MonsterBook.wz.xml, except it updates the drop data info in the book with those currently on DB.
- MapleQuestItemCountFetcher - Searches the quest WZ files and reports in all relevant data regarding missing "count" labels on item acts at "complete quest".
- MapleQuestItemFetcher - Searches the SQL tables and project files and reports in all relevant data regarding missing/erroneous quest items.
- MapleQuestlineFetcher - Searches the quest WZ files and reports in all questids that currently doesn't have script files.
- MapleQuestMesoFetcher - Searches the quest WZ files and reports in all relevant data regarding missing/erroneous quest fee checks.
- MapleReactorDropFetcher - Searches the DB for reactors with drop data and reports in reactorids that are not yet coded.
- MapleSkillMakerFetcher - Updates the DB Maker-related tables with the current info present on the WZs.
- MapleSkillMakerReagentIndexer - Generates a new maker table describing all stat-improvements from the Maker reagents (those empowering crystals and jewels).
Project:
- Organized project code.
- Highly updated drop data.
- Highly configurable server (see all server flags at ServerConstants).
- Fixed/added some missing packets for MoveEnvironment, summons and others.
- Uncovered many Send/Recv opcodes throughout the source.
- Reviewed many Java object aspects that needed concurrency protection.
- Reviewed SQL data, eliminating duplicated entries on the tables.
- Improved login phase, using cache over DB queries.
- Usage of HikariCP to improve the DB connection management.
- Developed many survey tools for content profiling.
- Protected many flaws with login management system.
- Channel, World and Server-wide timer management.
- Heavily reviewed future task management inside the project. Way less trivial schedules are spawned now, relieving task overload on the TimerManager.
- ThreadTracker: embedded auditing tool for run-time deadlock scanning throughout the server source (relies heavily on memory usage, designed only for debugging purposes).
Exploits patched:
- Player being given free access to any character of any account once they have authenticated their account on login phase.
- Player being given permission to delete any character of any account once they have authenticated their account on login phase.
- Player being able to start/complete any quest freely.
- Several assynchronous-oriented exploits patched, highlights on those involving Fredrick & Duey.
Localhost:
- Removed the 'n' problem within NPC dialog.
- Removed caps for MATK, WDEF, MDEF, ACC and AVOID.
- Removed "AP excess" popup and "Admin/MWLB" action block, original credits to kevintjuh93.
- Removed "You've gained a level!" popup, original credits to PrinceReborn.
- Removed "Cannot enter MTS from this map." popup on maps that blocks transitions (such change channel, CS/MTS), rendering the buyback option now available for all maps.
- Removed a check for players wishing to create/join a party being novices under level 10.
- Set a new high cap for SPEED.
- Removed the AP assign block for novices.
- Removed a block that would show up when trying to apply an attack gem on equipments that aren't weapons.