WK charges fix + Job level cap + MapleQuestItemFetcher

Fixed WK charges not overriding one another and some concurrency issues within MapleMap and EventInstanceManager.
New feature: job level cap, limits EXP gain until job advancement is done.
New tool: MapleQuestItemFetcher, searches through the server files for missing quest items and reports the results.
This commit is contained in:
ronancpl
2017-11-07 10:44:00 -02:00
parent 1fead59c57
commit 624aca375e
164 changed files with 26482 additions and 35341 deletions

View File

@@ -602,6 +602,8 @@ public class MapleMap {
private void startItemMonitor() {
chrWLock.lock();
try {
if(itemMonitor != null) return;
itemMonitor = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
@@ -1093,14 +1095,13 @@ public class MapleMap {
public void destroyReactor(int oid) {
final MapleReactor reactor = getReactorByOid(oid);
TimerManager tMan = TimerManager.getInstance();
broadcastMessage(MaplePacketCreator.destroyReactor(reactor));
reactor.cancelReactorTimeout();
reactor.setAlive(false);
removeMapObject(reactor);
if (reactor.getDelay() > 0) {
tMan.schedule(new Runnable() {
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
respawnReactor(reactor);
@@ -1879,9 +1880,12 @@ public class MapleMap {
}
public void addPlayer(final MapleCharacter chr) {
int chrSize;
chrWLock.lock();
try {
characters.add(chr);
chrSize = characters.size();
addPartyMemberInternal(chr);
} finally {
chrWLock.unlock();
@@ -1889,7 +1893,7 @@ public class MapleMap {
chr.setMapId(mapid);
itemMonitorTimeout = 1;
if (getCharacters().size() <= 1) {
if (chrSize == 1) {
if(!hasItemMonitor()) startItemMonitor();
if (onFirstUserEnter.length() != 0 && !chr.hasEntered(onFirstUserEnter, mapid) && MapScriptManager.getInstance().scriptExists(onFirstUserEnter, true)) {