Heal GMS + Improved chnl workers & Pshop tooltip + Equips on party HP
Slightly improved channel and disease announce workers performance. Completion of repeatable quests no longer generates fame to players. Equipment drop rates of Leprechaun were slightly decreased. Fixed Pet Item Ignore not checking certain exploit cases correctly. Optimized Pet Item Ignore server handler performance. Fixed some exploits and improved performance on PetLootHandler. Improved concurrency protection on MapleInventoryManipulator. Heal skill effect on players now works GMS-intended, as description says. Also removed the delayed Heal cast effect to others. Fixed party player HPBar not accounting the player's HP stat gained on equips towards the effective MaxHP. The duration of mists generated by mobs has been rescaled to 10x longer than what has been displayed until now (wz duration property is supposed to actually be in 100ms). Optimized timer management for mob skill cooldown and elemental effectiveness. Implemented an additional inventory check system, to be used in cases where it's expected to remove a set group for items (with quantity) to then add a new group of items. Fixed Player Shop/Hired Merchant "vacancy" tooltip, now properly showing whether the store has a visitor room or is already full at that time. Fixed Player Shops only using the standard stand type. Fixed cash pet food ignoring certain pet itemids when reading data from WZ.
This commit is contained in:
88
scripts/event/Elevator.js
Normal file
88
scripts/event/Elevator.js
Normal file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
//Time Setting is in millisecond
|
||||
var beginTime = 60 * 1000; //The time to begin the ride
|
||||
var rideTime = 60 * 1000; //The time that require move to destination
|
||||
|
||||
function init() {
|
||||
beginTime = em.getTransportationTime(beginTime);
|
||||
rideTime = em.getTransportationTime(rideTime);
|
||||
|
||||
em.getChannelServer().getMapFactory().getMap(222020100).resetReactors();
|
||||
em.getChannelServer().getMapFactory().getMap(222020200).resetReactors();
|
||||
|
||||
scheduleNew();
|
||||
}
|
||||
|
||||
function scheduleNew() {
|
||||
em.setProperty("goingUp", "false");
|
||||
em.setProperty("goingDown", "true");
|
||||
|
||||
em.getChannelServer().getMapFactory().getMap(222020100).resetReactors();
|
||||
em.getChannelServer().getMapFactory().getMap(222020200).setReactorState();
|
||||
em.schedule("goingUpNow", beginTime);
|
||||
}
|
||||
|
||||
function goUp() {
|
||||
em.schedule("goingUpNow", beginTime);
|
||||
}
|
||||
|
||||
function goDown() {
|
||||
em.schedule("goingDownNow", beginTime);
|
||||
}
|
||||
|
||||
function goingUpNow() {
|
||||
em.getChannelServer().getMapFactory().getMap(222020110).warpEveryone(222020111);
|
||||
em.setProperty("goingUp", "true");
|
||||
em.schedule("isUpNow", rideTime);
|
||||
|
||||
em.getChannelServer().getMapFactory().getMap(222020100).setReactorState();
|
||||
}
|
||||
|
||||
function goingDownNow() {
|
||||
em.getChannelServer().getMapFactory().getMap(222020210).warpEveryone(222020211);
|
||||
em.setProperty("goingDown", "true");
|
||||
em.schedule("isDownNow", rideTime);
|
||||
|
||||
em.getChannelServer().getMapFactory().getMap(222020200).setReactorState();
|
||||
}
|
||||
|
||||
function isUpNow() {
|
||||
em.setProperty("goingDown", "false"); // clear
|
||||
em.getChannelServer().getMapFactory().getMap(222020200).resetReactors();
|
||||
em.getChannelServer().getMapFactory().getMap(222020111).warpEveryone(222020200, 0);
|
||||
|
||||
goDown();
|
||||
}
|
||||
|
||||
function isDownNow() {
|
||||
em.setProperty("goingUp", "false"); // clear
|
||||
em.getChannelServer().getMapFactory().getMap(222020100).resetReactors();
|
||||
em.getChannelServer().getMapFactory().getMap(222020211).warpEveryone(222020100, 4);
|
||||
|
||||
goUp();
|
||||
}
|
||||
|
||||
function cancelSchedule() {
|
||||
|
||||
}
|
||||
@@ -146,7 +146,7 @@ function refineItems(refineType) {
|
||||
itemqty = refineQty * 10;
|
||||
|
||||
var fee = getRefineFee(refineFees[refineType][(itemid % 100) | 0] * refineQty);
|
||||
if(cm.canHold(itemid + 1000, refineQty) && cm.getMeso() >= fee) {
|
||||
if(cm.canHold(itemid + 1000, refineQty, itemid, itemqty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
cm.gainItem(itemid, -itemqty);
|
||||
cm.gainItem(itemid + (itemid != 4010007 ? 1000 : 1001), refineQty);
|
||||
|
||||
@@ -146,7 +146,7 @@ function refineItems(refineType) {
|
||||
itemqty = refineQty * 10;
|
||||
|
||||
var fee = getRefineFee(refineFees[refineType][(itemid % 100) | 0] * refineQty);
|
||||
if(cm.canHold(itemid + 1000, refineQty) && cm.getMeso() >= fee) {
|
||||
if(cm.canHold(itemid + 1000, refineQty, itemid, itemqty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
cm.gainItem(itemid, -itemqty);
|
||||
cm.gainItem(itemid + (itemid != 4010007 ? 1000 : 1001), refineQty);
|
||||
|
||||
@@ -146,7 +146,7 @@ function refineItems(refineType) {
|
||||
itemqty = refineQty * 10;
|
||||
|
||||
var fee = getRefineFee(refineFees[refineType][(itemid % 100) | 0] * refineQty);
|
||||
if(cm.canHold(itemid + 1000, refineQty) && cm.getMeso() >= fee) {
|
||||
if(cm.canHold(itemid + 1000, refineQty, itemid, itemqty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
cm.gainItem(itemid, -itemqty);
|
||||
cm.gainItem(itemid + (itemid != 4010007 ? 1000 : 1001), refineQty);
|
||||
|
||||
@@ -51,6 +51,7 @@ function writeFeatureTab_PQs() {
|
||||
|
||||
function writeFeatureTab_Skills() {
|
||||
addFeature("Reviewed many skills, such as Steal and M. Door.");
|
||||
addFeature("Heal GMS-like: fixed HP gain & Heal skill packet.");
|
||||
addFeature("Improved battleship: HP visible and map-persistent.");
|
||||
addFeature("Maker skill features properly developed.");
|
||||
addFeature("Chair Mastery - map chair boosts HP/MP rec.");
|
||||
@@ -71,6 +72,7 @@ function writeFeatureTab_Quests() {
|
||||
function writeFeatureTab_PlayerSocialNetwork() {
|
||||
addFeature("Guild and Alliance system fully functional.");
|
||||
addFeature("Party for novices-only.");
|
||||
addFeature("P. members' HPBar accounts HP gain on equips.");
|
||||
addFeature("Thoroughly reviewed P. Shops and H. Merchants.");
|
||||
addFeature("Transactions on Merchs instantly announced to owner.");
|
||||
addFeature("Game minirooms with functional pw system.");
|
||||
@@ -149,6 +151,8 @@ function writeFeatureTab_Serverpotentials() {
|
||||
addFeature("Enhanced auto-pot system: smart pet potion handle.");
|
||||
addFeature("Enhanced buff system: best buffs effects takes place.");
|
||||
addFeature("Enhanced AP auto-assigner: focus on eqp demands.");
|
||||
addFeature("Enhanced inventory check: free slots smartly fetched.");
|
||||
addFeature("Enhanced petloot handler: no brute-force inv. checks.");
|
||||
addFeature("Tweaked pet/mount hunger to a balanced growth rate.");
|
||||
addFeature("Consistent experience gain system.");
|
||||
addFeature("NPC crafters won't take items freely anymore.");
|
||||
@@ -165,6 +169,7 @@ function writeFeatureTab_Serverpotentials() {
|
||||
addFeature("Centralized servertime, boosting handler performance.");
|
||||
addFeature("Autosaver (periodically saves player's data on DB).");
|
||||
addFeature("Fixed and randomized HP/MP growth rate available.");
|
||||
addFeature("Players' MaxHP/MaxMP method accounting equip gain.");
|
||||
addFeature("Prevented 'NPC gone after some uptime' issue.");
|
||||
addFeature("Implemented starters' AP assigning for under level 11.");
|
||||
addFeature("AP assigning available for novices level 10 or below.");
|
||||
@@ -202,7 +207,7 @@ function writeFeatureTab_Localhostedits() {
|
||||
function writeFeatureTab_Project() {
|
||||
addFeature("Organized project code.");
|
||||
addFeature("Highly updated drop data.");
|
||||
addFeature("Highly configurable server.");
|
||||
addFeature("Highly configurable & optimized server.");
|
||||
addFeature("Fixed/added many missing packet opcodes.");
|
||||
addFeature("Uncovered many opcodes throughout the source.");
|
||||
addFeature("Reviewed many Java aspects that needed attention.");
|
||||
|
||||
@@ -77,6 +77,7 @@ function writeHeavenMSCommandsLv5() { //Developer
|
||||
addCommand("debugplayercoupons", "");
|
||||
addCommand("debugtimer", "");
|
||||
addCommand("debugmarriage", "");
|
||||
addCommand("showpackets", "");
|
||||
addCommand("set", "");
|
||||
}
|
||||
|
||||
@@ -99,7 +100,7 @@ function writeHeavenMSCommandsLv4() { //SuperGM
|
||||
addCommand("pap", "");
|
||||
addCommand("pianus", "");
|
||||
addCommand("cake", "");
|
||||
addCommand("pnpcremove", "");
|
||||
addCommand("playernpcremove", "");
|
||||
addCommand("playernpc", "");
|
||||
}
|
||||
|
||||
@@ -117,6 +118,7 @@ function writeHeavenMSCommandsLv3() { //GM
|
||||
addCommand("reloaddrops", "");
|
||||
addCommand("reloadportals", "");
|
||||
addCommand("reloadmap", "");
|
||||
addCommand("reloadshops", "");
|
||||
addCommand("hpmp", "");
|
||||
addCommand("maxhpmp", "");
|
||||
addCommand("music", "");
|
||||
|
||||
Reference in New Issue
Block a user