Antibanish mechanics + Limited drops on map + SQL tidy-up
Added antibanish mechanics: as like other "diseases" that can be treated with some useable items, banish will be able to be recovered as well. Fixed some SQL issues introduced on the last commit, as well as lingering inexistent ids on drop data. Fixed some concurrency issues with MapleMapFactory. Set a ceiling for simultaneous items available per map, where old ones are promptly discarded. Patched MWLB attack block for higher level GMs.
This commit is contained in:
@@ -21,8 +21,10 @@
|
||||
*/
|
||||
package net.server.channel.handlers;
|
||||
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import java.awt.Point;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import server.life.MapleMonster;
|
||||
import server.life.MobSkill;
|
||||
@@ -38,6 +40,8 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class MoveLifeHandler extends AbstractMovementPacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
List<MapleCharacter> banishPlayers = new ArrayList<>();
|
||||
|
||||
int objectid = slea.readInt();
|
||||
short moveid = slea.readShort();
|
||||
MapleMapObject mmo = c.getPlayer().getMap().getMapObject(objectid);
|
||||
@@ -66,7 +70,7 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler {
|
||||
if ((skill_1 >= 100 && skill_1 <= 200) && monster.hasSkill(skill_1, skill_2)) {
|
||||
MobSkill skillData = MobSkillFactory.getMobSkill(skill_1, skill_2);
|
||||
if (skillData != null && monster.canUseSkill(skillData)) {
|
||||
skillData.applyEffect(c.getPlayer(), monster, true);
|
||||
skillData.applyEffect(c.getPlayer(), monster, true, banishPlayers);
|
||||
}
|
||||
}
|
||||
slea.readByte();
|
||||
@@ -99,5 +103,9 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler {
|
||||
updatePosition(res, monster, -1);
|
||||
c.getPlayer().getMap().moveMonster(monster, monster.getPosition());
|
||||
}
|
||||
|
||||
for (MapleCharacter chr : banishPlayers) {
|
||||
chr.changeMapBanish(monster.getBanish().getMap(), monster.getBanish().getPortal(), monster.getBanish().getMsg());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user