Roaring tiger + party EXP fix + Owl leaderboard
Fixed Roaring Tiger messenger effect sticking on the client after the end on the animation. Fixed an issue with party EXP handing to low-level players leech EXP. Fixed party EXP system giving players way too much EXP in some cases. Added Owl item search ranking feature, items most searched can be displayed by the Owl instead of the hard-coded counterpart.
This commit is contained in:
@@ -500,7 +500,7 @@ public final class Channel {
|
||||
if(dungeons.containsKey(dungeonid)) return false;
|
||||
|
||||
MapleMiniDungeonInfo mmdi = MapleMiniDungeonInfo.getDungeon(dungeonid);
|
||||
MapleMiniDungeon mmd = new MapleMiniDungeon(mmdi.getBase(), 30); // all minidungeons timeouts on 30 mins
|
||||
MapleMiniDungeon mmd = new MapleMiniDungeon(mmdi.getBase(), 30); // all minidungeons timeout on 30 mins
|
||||
|
||||
dungeons.put(dungeonid, mmd);
|
||||
return true;
|
||||
|
||||
@@ -37,6 +37,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
* @author XoticStory
|
||||
*/
|
||||
public final class HiredMerchantRequest extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
if (chr.getMap().getMapObjectsInRange(chr.getPosition(), 23000, Arrays.asList(MapleMapObjectType.HIRED_MERCHANT)).isEmpty() && (GameConstants.isFreeMarketRoom(chr.getMapId()))) {
|
||||
|
||||
@@ -44,7 +44,6 @@ import tools.Pair;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import client.BuddylistEntry;
|
||||
import client.CharacterNameAndId;
|
||||
import client.MapleBuffStat;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import client.MapleFamily;
|
||||
|
||||
@@ -34,6 +34,7 @@ import client.inventory.MapleInventoryType;
|
||||
import client.inventory.MaplePet;
|
||||
import client.inventory.ModifyInventory;
|
||||
import constants.ItemConstants;
|
||||
import constants.ServerConstants;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
@@ -441,6 +442,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
|
||||
} else if (itemType == 523) {
|
||||
int itemid = slea.readInt();
|
||||
|
||||
if(!ServerConstants.USE_ENFORCE_OWL_SUGGESTIONS) c.getWorldServer().addOwlItemSearch(itemid);
|
||||
player.setOwlSearch(itemid);
|
||||
List<Pair<MaplePlayerShopItem, AbstractMapleMapObject>> hmsAvailable = c.getWorldServer().getAvailableItemBundles(itemid);
|
||||
if(!hmsAvailable.isEmpty()) remove(c, itemId);
|
||||
|
||||
@@ -25,11 +25,46 @@ import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import tools.MaplePacketCreator;
|
||||
import tools.Pair;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.PriorityQueue;
|
||||
|
||||
import constants.GameConstants;
|
||||
|
||||
public final class UseOwlOfMinervaHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
c.announce(MaplePacketCreator.getOwlOpen());
|
||||
List<Pair<Integer, Integer>> owlSearched = c.getWorldServer().getOwlSearchedItems();
|
||||
List<Integer> owlLeaderboards;
|
||||
|
||||
if(owlSearched.size() < 5) {
|
||||
owlLeaderboards = new LinkedList<>();
|
||||
for(int i : GameConstants.OWL_DATA) {
|
||||
owlLeaderboards.add(i);
|
||||
}
|
||||
} else {
|
||||
Comparator<Pair<Integer, Integer>> comparator = new Comparator<Pair<Integer, Integer>>() { // descending order
|
||||
@Override
|
||||
public int compare(Pair<Integer, Integer> p1, Pair<Integer, Integer> p2) {
|
||||
return p2.getRight().compareTo(p1.getRight());
|
||||
}
|
||||
};
|
||||
|
||||
PriorityQueue<Pair<Integer, Integer>> queue = new PriorityQueue<>(10, comparator);
|
||||
for(Pair<Integer, Integer> p : owlSearched) {
|
||||
queue.add(p);
|
||||
}
|
||||
|
||||
owlLeaderboards = new LinkedList<>();
|
||||
for(int i = 0; i < Math.min(owlSearched.size(), 10); i++) {
|
||||
owlLeaderboards.add(queue.remove().getLeft());
|
||||
}
|
||||
}
|
||||
|
||||
c.announce(MaplePacketCreator.getOwlOpen(owlLeaderboards));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user