Protected Hired Merchant + Buff system patch
Fixed some issues with Fredrick not retrieving the right amount of items from Hired Merchants. Added concurrency protection for HM. Patched a minor issue on buff system.
This commit is contained in:
@@ -2574,7 +2574,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
buffExpires.put(sourceid, expirationtime);
|
||||
}
|
||||
|
||||
private void removeEffectFromItemEffectHolder(Integer sourceid, MapleBuffStat buffStat) {
|
||||
private boolean removeEffectFromItemEffectHolder(Integer sourceid, MapleBuffStat buffStat) {
|
||||
Map<MapleBuffStat, MapleBuffStatValueHolder> lbe = buffEffects.get(sourceid);
|
||||
|
||||
if(lbe.remove(buffStat) != null) {
|
||||
@@ -2584,7 +2584,11 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
buffEffects.remove(sourceid);
|
||||
buffExpires.remove(sourceid);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void removeItemEffectHolder(Integer sourceid) {
|
||||
@@ -2634,9 +2638,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
private void extractBuffValue(int sourceid, MapleBuffStat stat) {
|
||||
chrLock.lock();
|
||||
try {
|
||||
if(buffEffects.get(sourceid).remove(stat) != null) {
|
||||
buffEffectsCount.put(stat, (byte)(buffEffectsCount.get(stat) - 1));
|
||||
}
|
||||
removeEffectFromItemEffectHolder(sourceid, stat);
|
||||
} finally {
|
||||
chrLock.unlock();
|
||||
}
|
||||
@@ -2755,7 +2757,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
for (Entry<MapleBuffStat, MapleBuffStatValueHolder> stat : stats.entrySet()) {
|
||||
int sourceid = stat.getValue().effect.getBuffSourceId();
|
||||
|
||||
if(buffEffects.get(sourceid) == null) {
|
||||
if(!buffEffects.containsKey(sourceid)) {
|
||||
buffExpires.remove(sourceid);
|
||||
}
|
||||
|
||||
@@ -6537,10 +6539,15 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
}
|
||||
|
||||
public void addMerchantMesos(int add) {
|
||||
int newAmount;
|
||||
|
||||
try {
|
||||
newAmount = (int)Math.min((long)merchantmeso + add, Integer.MAX_VALUE);
|
||||
System.out.println("adding" + add + " now" + newAmount);
|
||||
|
||||
Connection con = DatabaseConnection.getConnection();
|
||||
try (PreparedStatement ps = con.prepareStatement("UPDATE characters SET MerchantMesos = ? WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) {
|
||||
ps.setInt(1, merchantmeso + add);
|
||||
ps.setInt(1, newAmount);
|
||||
ps.setInt(2, id);
|
||||
ps.executeUpdate();
|
||||
}
|
||||
@@ -6550,7 +6557,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
merchantmeso += add;
|
||||
merchantmeso = newAmount;
|
||||
}
|
||||
|
||||
public void setMerchantMeso(int set) {
|
||||
|
||||
Reference in New Issue
Block a user