Missing Pirate questlines + Find & MoveLife update + Party-Map patch

Implemented missing scripts for Aerial Strike, Hypnotize and Time Leap skill questlines.
Fixed an deadlock issue within player's inventory and status.
Fixed skill spam detection disconnecting players when legitimatelly spamming Flash Jump or Heal.
Fixed party members map location not being properly updated after changing maps.
Rehauled MoveLife handler. Improved packet read of attack and skill elements, properly reflecting incoming actions to other player on the map.
Reviewed an issue with equipments MaxHP/MaxMP getting unsynced with player's MaxHP/MaxMP, resulting in differences within server-client view of a player's pool.
Fixed mobs not being spawned by dojo bosses after enough spawn actions were instanced.
Implemented proper Mob.wz linked mob data support.
Fixed /find not identifying a player's channel properly.
Fixed Echo of Hero not affecting other player in the map.
Fixed commands warp and goto not taking player off events/expeditions properly.
Fixed storage expansion not being registered on DB when buying the cash item.
Fixed party leadership being reassigned after changing channels.
Implemented suggested level range limit between party members on the EXP share system. Players whose level range from the attacker exceeds the estipulated threshold will not receive any EXP from the action.

Happy Thanksgiving Day everyone!!!
This commit is contained in:
ronancpl
2018-11-22 16:16:21 -02:00
parent 5ee0cd1c98
commit 0910dc2428
163 changed files with 4618 additions and 3186 deletions

View File

@@ -192,7 +192,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
private int mesosTraded = 0;
private int possibleReports = 10;
private int dojoPoints, vanquisherStage, dojoStage, dojoEnergy, vanquisherKills;
private int warpToId;
private int expRate = 1, mesoRate = 1, dropRate = 1, expCoupon = 1, mesoCoupon = 1, dropCoupon = 1;
private int omokwins, omokties, omoklosses, matchcardwins, matchcardties, matchcardlosses;
private int owlSearch;
@@ -277,6 +276,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
private Lock evtLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_EVT, true);
private Lock petLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_PET, true); // for meso & quest tasks as well
private Lock prtLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_PRT);
private Lock cpnLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.CHARACTER_CPN);
private Map<Integer, Set<Integer>> excluded = new LinkedHashMap<>();
private Set<Integer> excludedItems = new LinkedHashSet<>();
private static String[] ariantroomleader = new String[3];
@@ -1593,7 +1593,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
map.addPlayer(this);
visitMap(map);
silentPartyUpdateInternal(getParty()); // EIM script calls inside
prtLock.lock();
try {
if (party != null) {
@@ -1604,6 +1603,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
} finally {
prtLock.unlock();
}
silentPartyUpdateInternal(getParty()); // EIM script calls inside
if (getMap().getHPDec() > 0) resetHpDecreaseTask();
} else {
@@ -3029,10 +3029,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
return allianceRank;
}
public int getAllowWarpToId() {
return warpToId;
}
public static String getAriantRoomLeaderName(int room) {
return ariantroomleader[room];
}
@@ -6064,8 +6060,23 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
}
public void updateCouponRates() {
revertCouponRates();
setCouponRates();
if (cpnLock.tryLock()) {
MapleInventory cashInv = this.getInventory(MapleInventoryType.CASH);
effLock.lock();
chrLock.lock();
cashInv.lockInventory();
try {
revertCouponRates();
setCouponRates();
} finally {
cpnLock.unlock();
cashInv.unlockInventory();
chrLock.unlock();
effLock.unlock();
}
}
}
public void resetPlayerRates() {
@@ -8011,10 +8022,6 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
}
}
public void setAllowWarpToId(int id) {
this.warpToId = id;
}
public static void setAriantRoomLeader(int room, String charname) {
ariantroomleader[room] = charname;
}