All packet creating methods now create Packet instead of byte[]
This commit got way too big... - Remove deprecated methods for sending packets - Favor OutPacket & Packet over MaplePacketLittleEndianWriter, LittleEndianWriter, and byte array - Split up some packet creating methods into separate classes
This commit is contained in:
@@ -76,7 +76,7 @@ public class MapleShop {
|
||||
|
||||
public void sendShop(MapleClient c) {
|
||||
c.getPlayer().setShop(this);
|
||||
c.announce(PacketCreator.getNPCShop(c, getNpcId(), items));
|
||||
c.sendPacket(PacketCreator.getNPCShop(c, getNpcId(), items));
|
||||
}
|
||||
|
||||
public void buy(MapleClient c, short slot, int itemId, short quantity) {
|
||||
@@ -103,12 +103,12 @@ public class MapleShop {
|
||||
MapleInventoryManipulator.addById(c, itemId, quantity, "", -1);
|
||||
c.getPlayer().gainMeso(-item.getPrice(), false);
|
||||
}
|
||||
c.announce(PacketCreator.shopTransaction((byte) 0));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 0));
|
||||
} else
|
||||
c.announce(PacketCreator.shopTransaction((byte) 3));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 3));
|
||||
|
||||
} else
|
||||
c.announce(PacketCreator.shopTransaction((byte) 2));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 2));
|
||||
|
||||
} else if (item.getPitch() > 0) {
|
||||
int amount = (int)Math.min((float) item.getPitch() * quantity, Integer.MAX_VALUE);
|
||||
@@ -124,9 +124,9 @@ public class MapleShop {
|
||||
MapleInventoryManipulator.addById(c, itemId, quantity, "", -1);
|
||||
MapleInventoryManipulator.removeById(c, MapleInventoryType.ETC, 4310000, amount, false, false);
|
||||
}
|
||||
c.announce(PacketCreator.shopTransaction((byte) 0));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 0));
|
||||
} else
|
||||
c.announce(PacketCreator.shopTransaction((byte) 3));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 3));
|
||||
}
|
||||
|
||||
} else if (c.getPlayer().getInventory(MapleInventoryType.CASH).countById(token) != 0) {
|
||||
@@ -145,11 +145,11 @@ public class MapleShop {
|
||||
}
|
||||
c.getPlayer().gainMeso(diff, false);
|
||||
} else {
|
||||
c.announce(PacketCreator.shopTransaction((byte) 3));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 3));
|
||||
}
|
||||
c.announce(PacketCreator.shopTransaction((byte) 0));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 0));
|
||||
} else {
|
||||
c.announce(PacketCreator.shopTransaction((byte) 2));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -203,9 +203,9 @@ public class MapleShop {
|
||||
if (recvMesos > 0) {
|
||||
c.getPlayer().gainMeso(recvMesos, false);
|
||||
}
|
||||
c.announce(PacketCreator.shopTransaction((byte) 0x8));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 0x8));
|
||||
} else {
|
||||
c.announce(PacketCreator.shopTransaction((byte) 0x5));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 0x5));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,9 +225,9 @@ public class MapleShop {
|
||||
item.setQuantity(slotMax);
|
||||
c.getPlayer().forceUpdateItem(item);
|
||||
c.getPlayer().gainMeso(-price, false, true, false);
|
||||
c.announce(PacketCreator.shopTransaction((byte) 0x8));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 0x8));
|
||||
} else {
|
||||
c.announce(PacketCreator.shopTransaction((byte) 0x2));
|
||||
c.sendPacket(PacketCreator.shopTransaction((byte) 0x2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import client.status.MonsterStatusEffect;
|
||||
import config.YamlConfig;
|
||||
import constants.inventory.ItemConstants;
|
||||
import constants.skills.*;
|
||||
import net.packet.Packet;
|
||||
import net.server.Server;
|
||||
import net.server.world.MapleParty;
|
||||
import net.server.world.MaplePartyCharacter;
|
||||
@@ -826,8 +827,8 @@ public class MapleStatEffect {
|
||||
if (absorbMp > 0) {
|
||||
mob.setMp(mob.getMp() - absorbMp);
|
||||
applyto.addMP(absorbMp);
|
||||
applyto.announce(PacketCreator.showOwnBuffEffect(sourceid, 1));
|
||||
applyto.getMap().broadcastMessage(applyto, PacketCreator.showBuffeffect(applyto.getId(), sourceid, 1), false);
|
||||
applyto.sendPacket(PacketCreator.showOwnBuffEffect(sourceid, 1));
|
||||
applyto.getMap().broadcastMessage(applyto, PacketCreator.showBuffEffect(applyto.getId(), sourceid, 1), false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -875,7 +876,7 @@ public class MapleStatEffect {
|
||||
if (primary) {
|
||||
if (itemConNo != 0) {
|
||||
if (!applyto.getAbstractPlayerInteraction().hasItem(itemCon, itemConNo)) {
|
||||
applyto.announce(PacketCreator.enableActions());
|
||||
applyto.sendPacket(PacketCreator.enableActions());
|
||||
return false;
|
||||
}
|
||||
MapleInventoryManipulator.removeById(applyto.getClient(), ItemConstants.getInventoryType(itemCon), itemCon, itemConNo, false, true);
|
||||
@@ -899,7 +900,7 @@ public class MapleStatEffect {
|
||||
} */
|
||||
|
||||
if (!applyto.applyHpMpChange(hpCon, hpchange, mpchange)) {
|
||||
applyto.announce(PacketCreator.enableActions());
|
||||
applyto.sendPacket(PacketCreator.enableActions());
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -970,7 +971,7 @@ public class MapleStatEffect {
|
||||
applyto.cancelBuffStats(MapleBuffStat.SUMMON);
|
||||
}
|
||||
|
||||
applyto.announce(PacketCreator.enableActions());
|
||||
applyto.sendPacket(PacketCreator.enableActions());
|
||||
}
|
||||
|
||||
applyBuffEffect(applyfrom, applyto, primary);
|
||||
@@ -1108,8 +1109,8 @@ public class MapleStatEffect {
|
||||
affectedc += affectedp.size(); // used for heal
|
||||
for (MapleCharacter affected : affectedp) {
|
||||
applyTo(applyfrom, affected, false, null, useMaxRange, affectedc);
|
||||
affected.announce(PacketCreator.showOwnBuffEffect(sourceid, 2));
|
||||
affected.getMap().broadcastMessage(affected, PacketCreator.showBuffeffect(affected.getId(), sourceid, 2), false);
|
||||
affected.sendPacket(PacketCreator.showOwnBuffEffect(sourceid, 2));
|
||||
affected.getMap().broadcastMessage(affected, PacketCreator.showBuffEffect(affected.getId(), sourceid, 2), false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1182,7 +1183,7 @@ public class MapleStatEffect {
|
||||
|
||||
public final void applyComboBuff(final MapleCharacter applyto, int combo) {
|
||||
final List<Pair<MapleBuffStat, Integer>> stat = Collections.singletonList(new Pair<>(MapleBuffStat.ARAN_COMBO, combo));
|
||||
applyto.announce(PacketCreator.giveBuff(sourceid, 99999, stat));
|
||||
applyto.sendPacket(PacketCreator.giveBuff(sourceid, 99999, stat));
|
||||
|
||||
final long starttime = Server.getInstance().getCurrentTime();
|
||||
// final CancelEffectAction cancelAction = new CancelEffectAction(applyto, this, starttime);
|
||||
@@ -1192,7 +1193,7 @@ public class MapleStatEffect {
|
||||
|
||||
public final void applyBeaconBuff(final MapleCharacter applyto, int objectid) { // thanks Thora & Hyun for reporting an issue with homing beacon autoflagging mobs when changing maps
|
||||
final List<Pair<MapleBuffStat, Integer>> stat = Collections.singletonList(new Pair<>(MapleBuffStat.HOMING_BEACON, objectid));
|
||||
applyto.announce(PacketCreator.giveBuff(1, sourceid, stat));
|
||||
applyto.sendPacket(PacketCreator.giveBuff(1, sourceid, stat));
|
||||
|
||||
final long starttime = Server.getInstance().getCurrentTime();
|
||||
applyto.registerEffect(this, starttime, Long.MAX_VALUE, false);
|
||||
@@ -1205,9 +1206,9 @@ public class MapleStatEffect {
|
||||
long leftDuration = (starttime + localDuration) - Server.getInstance().getCurrentTime();
|
||||
if (leftDuration > 0) {
|
||||
if (isDash() || isInfusion()) {
|
||||
target.announce(PacketCreator.givePirateBuff(activeStats, (skill ? sourceid : -sourceid), (int) leftDuration));
|
||||
target.sendPacket(PacketCreator.givePirateBuff(activeStats, (skill ? sourceid : -sourceid), (int) leftDuration));
|
||||
} else {
|
||||
target.announce(PacketCreator.giveBuff((skill ? sourceid : -sourceid), (int) leftDuration, activeStats));
|
||||
target.sendPacket(PacketCreator.giveBuff((skill ? sourceid : -sourceid), (int) leftDuration, activeStats));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1260,11 +1261,11 @@ public class MapleStatEffect {
|
||||
}
|
||||
if (primary) {
|
||||
localDuration = alchemistModifyVal(applyfrom, localDuration, false);
|
||||
applyto.getMap().broadcastMessage(applyto, PacketCreator.showBuffeffect(applyto.getId(), sourceid, 1, (byte) 3), false);
|
||||
applyto.getMap().broadcastMessage(applyto, PacketCreator.showBuffEffect(applyto.getId(), sourceid, 1, (byte) 3), false);
|
||||
}
|
||||
if (localstatups.size() > 0) {
|
||||
byte[] buff = null;
|
||||
byte[] mbuff = null;
|
||||
Packet buff = null;
|
||||
Packet mbuff = null;
|
||||
if (this.isActive(applyto)) {
|
||||
buff = PacketCreator.giveBuff((skill ? sourceid : -sourceid), localDuration, localstatups);
|
||||
}
|
||||
@@ -1320,7 +1321,7 @@ public class MapleStatEffect {
|
||||
//Thanks flav for such a simple release! :)
|
||||
//Thanks Conrad, Atoot for noticing summons not using buff icon
|
||||
|
||||
applyto.announce(buff);
|
||||
applyto.sendPacket(buff);
|
||||
}
|
||||
|
||||
long starttime = Server.getInstance().getCurrentTime();
|
||||
|
||||
@@ -227,7 +227,7 @@ public class MapleStorage {
|
||||
public void sendStorage(MapleClient c, int npcId) {
|
||||
if (c.getPlayer().getLevel() < 15){
|
||||
c.getPlayer().dropMessage(1, "You may only use the storage once you have reached level 15.");
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ public class MapleStorage {
|
||||
}
|
||||
|
||||
currentNpcid = npcId;
|
||||
c.announce(PacketCreator.getStorage(npcId, slots, storageItems, meso));
|
||||
c.sendPacket(PacketCreator.getStorage(npcId, slots, storageItems, meso));
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
@@ -257,7 +257,7 @@ public class MapleStorage {
|
||||
public void sendStored(MapleClient c, MapleInventoryType type) {
|
||||
lock.lock();
|
||||
try {
|
||||
c.announce(PacketCreator.storeStorage(slots, type, typeItems.get(type)));
|
||||
c.sendPacket(PacketCreator.storeStorage(slots, type, typeItems.get(type)));
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
@@ -266,7 +266,7 @@ public class MapleStorage {
|
||||
public void sendTakenOut(MapleClient c, MapleInventoryType type) {
|
||||
lock.lock();
|
||||
try {
|
||||
c.announce(PacketCreator.takeOutStorage(slots, type, typeItems.get(type)));
|
||||
c.sendPacket(PacketCreator.takeOutStorage(slots, type, typeItems.get(type)));
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
@@ -283,7 +283,7 @@ public class MapleStorage {
|
||||
typeItems.put(type, new ArrayList<>(items));
|
||||
}
|
||||
|
||||
c.announce(PacketCreator.arrangeStorage(slots, items));
|
||||
c.sendPacket(PacketCreator.arrangeStorage(slots, items));
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
@@ -301,7 +301,7 @@ public class MapleStorage {
|
||||
}
|
||||
|
||||
public void sendMeso(MapleClient c) {
|
||||
c.announce(PacketCreator.mesoStorage(slots, meso));
|
||||
c.sendPacket(PacketCreator.mesoStorage(slots, meso));
|
||||
}
|
||||
|
||||
public int getStoreFee() { // thanks to GabrielSin
|
||||
|
||||
@@ -104,7 +104,7 @@ public class MapleTrade {
|
||||
|
||||
private void lockTrade() {
|
||||
locked.set(true);
|
||||
partner.getChr().getClient().announce(PacketCreator.getTradeConfirmation());
|
||||
partner.getChr().sendPacket(PacketCreator.getTradeConfirmation());
|
||||
}
|
||||
|
||||
private void fetchExchangedItems() {
|
||||
@@ -143,7 +143,7 @@ public class MapleTrade {
|
||||
exchangeItems.clear();
|
||||
}
|
||||
|
||||
chr.getClient().announce(PacketCreator.getTradeResult(number, result));
|
||||
chr.sendPacket(PacketCreator.getTradeResult(number, result));
|
||||
}
|
||||
|
||||
private void cancel(byte result) {
|
||||
@@ -164,7 +164,7 @@ public class MapleTrade {
|
||||
exchangeItems.clear();
|
||||
}
|
||||
|
||||
chr.getClient().announce(PacketCreator.getTradeResult(number, result));
|
||||
chr.sendPacket(PacketCreator.getTradeResult(number, result));
|
||||
}
|
||||
|
||||
private boolean isLocked() {
|
||||
@@ -186,9 +186,9 @@ public class MapleTrade {
|
||||
if (chr.getMeso() >= meso) {
|
||||
chr.gainMeso(-meso, false, true, false);
|
||||
this.meso += meso;
|
||||
chr.getClient().announce(PacketCreator.getTradeMesoSet((byte) 0, this.meso));
|
||||
chr.sendPacket(PacketCreator.getTradeMesoSet((byte) 0, this.meso));
|
||||
if (partner != null) {
|
||||
partner.getChr().getClient().announce(PacketCreator.getTradeMesoSet((byte) 1, this.meso));
|
||||
partner.getChr().sendPacket(PacketCreator.getTradeMesoSet((byte) 1, this.meso));
|
||||
}
|
||||
} else {
|
||||
}
|
||||
@@ -212,9 +212,9 @@ public class MapleTrade {
|
||||
}
|
||||
|
||||
public void chat(String message) {
|
||||
chr.getClient().announce(PacketCreator.getTradeChat(chr, message, true));
|
||||
chr.sendPacket(PacketCreator.getTradeChat(chr, message, true));
|
||||
if (partner != null) {
|
||||
partner.getChr().getClient().announce(PacketCreator.getTradeChat(chr, message, false));
|
||||
partner.getChr().sendPacket(PacketCreator.getTradeChat(chr, message, false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -334,7 +334,7 @@ public class MapleTrade {
|
||||
if (local.getChr().getLevel() < 15) {
|
||||
if (local.getChr().getMesosTraded() + local.exchangeMeso > 1000000) {
|
||||
cancelTrade(local.getChr(), TradeResult.NO_RESPONSE);
|
||||
local.getChr().getClient().announce(PacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day."));
|
||||
local.getChr().sendPacket(PacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day."));
|
||||
return;
|
||||
} else {
|
||||
local.getChr().addMesosTraded(local.exchangeMeso);
|
||||
@@ -342,7 +342,7 @@ public class MapleTrade {
|
||||
} else if (partner.getChr().getLevel() < 15) {
|
||||
if (partner.getChr().getMesosTraded() + partner.exchangeMeso > 1000000) {
|
||||
cancelTrade(partner.getChr(), TradeResult.NO_RESPONSE);
|
||||
partner.getChr().getClient().announce(PacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day."));
|
||||
partner.getChr().sendPacket(PacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day."));
|
||||
return;
|
||||
} else {
|
||||
partner.getChr().addMesosTraded(partner.exchangeMeso);
|
||||
@@ -463,8 +463,8 @@ public class MapleTrade {
|
||||
c2.getTrade().setPartner(c1.getTrade());
|
||||
c1.getTrade().setPartner(c2.getTrade());
|
||||
|
||||
c1.getClient().announce(PacketCreator.getTradeStart(c1.getClient(), c1.getTrade(), (byte) 0));
|
||||
c2.getClient().announce(PacketCreator.tradeInvite(c1));
|
||||
c1.sendPacket(PacketCreator.getTradeStart(c1.getClient(), c1.getTrade(), (byte) 0));
|
||||
c2.sendPacket(PacketCreator.tradeInvite(c1));
|
||||
} else {
|
||||
c1.message("The other player is already trading with someone else.");
|
||||
cancelTrade(c1, TradeResult.NO_RESPONSE);
|
||||
@@ -482,8 +482,8 @@ public class MapleTrade {
|
||||
InviteResult res = inviteRes.result;
|
||||
if (res == InviteResult.ACCEPTED) {
|
||||
if (c1.getTrade() != null && c1.getTrade().getPartner() == c2.getTrade() && c2.getTrade() != null && c2.getTrade().getPartner() == c1.getTrade()) {
|
||||
c2.getClient().announce(PacketCreator.getTradePartnerAdd(c1));
|
||||
c1.getClient().announce(PacketCreator.getTradeStart(c1.getClient(), c1.getTrade(), (byte) 1));
|
||||
c2.sendPacket(PacketCreator.getTradePartnerAdd(c1));
|
||||
c1.sendPacket(PacketCreator.getTradeStart(c1.getClient(), c1.getTrade(), (byte) 1));
|
||||
c1.getTrade().setFullTrade(true);
|
||||
c2.getTrade().setFullTrade(true);
|
||||
} else {
|
||||
|
||||
@@ -66,22 +66,22 @@ public class MapleCoconut extends MapleEvent {
|
||||
} else if (getMapleScore() > getStoryScore()) {
|
||||
for (MapleCharacter chr : map.getCharacters()) {
|
||||
if (chr.getTeam() == 0) {
|
||||
chr.getClient().announce(PacketCreator.showEffect("event/coconut/victory"));
|
||||
chr.getClient().announce(PacketCreator.playSound("Coconut/Victory"));
|
||||
chr.sendPacket(PacketCreator.showEffect("event/coconut/victory"));
|
||||
chr.sendPacket(PacketCreator.playSound("Coconut/Victory"));
|
||||
} else {
|
||||
chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.getClient().announce(PacketCreator.playSound("Coconut/Failed"));
|
||||
chr.sendPacket(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.sendPacket(PacketCreator.playSound("Coconut/Failed"));
|
||||
}
|
||||
}
|
||||
warpOut();
|
||||
} else {
|
||||
for (MapleCharacter chr : map.getCharacters()) {
|
||||
if (chr.getTeam() == 1) {
|
||||
chr.getClient().announce(PacketCreator.showEffect("event/coconut/victory"));
|
||||
chr.getClient().announce(PacketCreator.playSound("Coconut/Victory"));
|
||||
chr.sendPacket(PacketCreator.showEffect("event/coconut/victory"));
|
||||
chr.sendPacket(PacketCreator.playSound("Coconut/Victory"));
|
||||
} else {
|
||||
chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.getClient().announce(PacketCreator.playSound("Coconut/Failed"));
|
||||
chr.sendPacket(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.sendPacket(PacketCreator.playSound("Coconut/Failed"));
|
||||
}
|
||||
}
|
||||
warpOut();
|
||||
@@ -95,29 +95,29 @@ public class MapleCoconut extends MapleEvent {
|
||||
TimerManager.getInstance().schedule(() -> {
|
||||
if (getMapleScore() == getStoryScore()) {
|
||||
for (MapleCharacter chr : map.getCharacters()) {
|
||||
chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.getClient().announce(PacketCreator.playSound("Coconut/Failed"));
|
||||
chr.sendPacket(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.sendPacket(PacketCreator.playSound("Coconut/Failed"));
|
||||
}
|
||||
warpOut();
|
||||
} else if (getMapleScore() > getStoryScore()) {
|
||||
for (MapleCharacter chr : map.getCharacters()) {
|
||||
if (chr.getTeam() == 0) {
|
||||
chr.getClient().announce(PacketCreator.showEffect("event/coconut/victory"));
|
||||
chr.getClient().announce(PacketCreator.playSound("Coconut/Victory"));
|
||||
chr.sendPacket(PacketCreator.showEffect("event/coconut/victory"));
|
||||
chr.sendPacket(PacketCreator.playSound("Coconut/Victory"));
|
||||
} else {
|
||||
chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.getClient().announce(PacketCreator.playSound("Coconut/Failed"));
|
||||
chr.sendPacket(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.sendPacket(PacketCreator.playSound("Coconut/Failed"));
|
||||
}
|
||||
}
|
||||
warpOut();
|
||||
} else {
|
||||
for (MapleCharacter chr : map.getCharacters()) {
|
||||
if (chr.getTeam() == 1) {
|
||||
chr.getClient().announce(PacketCreator.showEffect("event/coconut/victory"));
|
||||
chr.getClient().announce(PacketCreator.playSound("Coconut/Victory"));
|
||||
chr.sendPacket(PacketCreator.showEffect("event/coconut/victory"));
|
||||
chr.sendPacket(PacketCreator.playSound("Coconut/Victory"));
|
||||
} else {
|
||||
chr.getClient().announce(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.getClient().announce(PacketCreator.playSound("Coconut/Failed"));
|
||||
chr.sendPacket(PacketCreator.showEffect("event/coconut/lose"));
|
||||
chr.sendPacket(PacketCreator.playSound("Coconut/Failed"));
|
||||
}
|
||||
}
|
||||
warpOut();
|
||||
|
||||
@@ -49,13 +49,13 @@ public class MapleFitness {
|
||||
|
||||
public void startFitness() {
|
||||
chr.getMap().startEvent();
|
||||
chr.getClient().announce(PacketCreator.getClock(900));
|
||||
chr.getClient().sendPacket(PacketCreator.getClock(900));
|
||||
this.timeStarted = System.currentTimeMillis();
|
||||
this.time = 900000;
|
||||
checkAndMessage();
|
||||
|
||||
chr.getMap().getPortal("join00").setPortalStatus(true);
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter."));
|
||||
}
|
||||
|
||||
public boolean isTimerStarted() {
|
||||
@@ -84,29 +84,29 @@ public class MapleFitness {
|
||||
}
|
||||
if (chr.getMap().getId() >= 109040000 && chr.getMap().getId() <= 109040004) {
|
||||
if (getTimeLeft() > 9000 && getTimeLeft() < 11000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "You have 10 sec left. Those of you unable to beat the game, we hope you beat it next time! Great job everyone!! See you later~"));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "You have 10 sec left. Those of you unable to beat the game, we hope you beat it next time! Great job everyone!! See you later~"));
|
||||
} else if (getTimeLeft() > 99000 && getTimeLeft() < 101000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "Alright, you don't have much time remaining. Please hurry up a little!"));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "Alright, you don't have much time remaining. Please hurry up a little!"));
|
||||
} else if (getTimeLeft() > 239000 && getTimeLeft() < 241000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "The 4th stage is the last one for [The Maple Physical Fitness Test]. Please don't give up at the last minute and try your best. The reward is waiting for you at the very top!"));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "The 4th stage is the last one for [The Maple Physical Fitness Test]. Please don't give up at the last minute and try your best. The reward is waiting for you at the very top!"));
|
||||
} else if (getTimeLeft() > 299000 && getTimeLeft() < 301000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "The 3rd stage offers traps where you may see them, but you won't be able to step on them. Please be careful of them as you make your way up."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "The 3rd stage offers traps where you may see them, but you won't be able to step on them. Please be careful of them as you make your way up."));
|
||||
} else if (getTimeLeft() > 359000 && getTimeLeft() < 361000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "For those who have heavy lags, please make sure to move slowly to avoid falling all the way down because of lags."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "For those who have heavy lags, please make sure to move slowly to avoid falling all the way down because of lags."));
|
||||
} else if (getTimeLeft() > 499000 && getTimeLeft() < 501000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. If you're running out of HP, either take a potion or recover HP first before moving on."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. If you're running out of HP, either take a potion or recover HP first before moving on."));
|
||||
} else if (getTimeLeft() > 599000 && getTimeLeft() < 601000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "The most important thing you'll need to know to avoid the bananas thrown by the monkeys is *Timing* Timing is everything in this!"));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "The most important thing you'll need to know to avoid the bananas thrown by the monkeys is *Timing* Timing is everything in this!"));
|
||||
} else if (getTimeLeft() > 659000 && getTimeLeft() < 661000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "The 2nd stage offers monkeys throwing bananas. Please make sure to avoid them by moving along at just the right timing."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "The 2nd stage offers monkeys throwing bananas. Please make sure to avoid them by moving along at just the right timing."));
|
||||
} else if (getTimeLeft() > 699000 && getTimeLeft() < 701000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. You still have plenty of time left, so either take a potion or recover HP first before moving on."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. You still have plenty of time left, so either take a potion or recover HP first before moving on."));
|
||||
} else if (getTimeLeft() > 779000 && getTimeLeft() < 781000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "Everyone that clears [The Maple Physical Fitness Test] on time will be given an item, regardless of the order of finish, so just relax, take your time, and clear the 4 stages."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "Everyone that clears [The Maple Physical Fitness Test] on time will be given an item, regardless of the order of finish, so just relax, take your time, and clear the 4 stages."));
|
||||
} else if (getTimeLeft() > 839000 && getTimeLeft() < 841000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "There may be a heavy lag due to many users at stage 1 all at once. It won't be difficult, so please make sure not to fall down because of heavy lag."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "There may be a heavy lag due to many users at stage 1 all at once. It won't be difficult, so please make sure not to fall down because of heavy lag."));
|
||||
} else if (getTimeLeft() > 869000 && getTimeLeft() < 871000) {
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "[MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "[MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that."));
|
||||
}
|
||||
} else {
|
||||
resetTimes();
|
||||
|
||||
@@ -48,12 +48,12 @@ public class MapleOla {
|
||||
|
||||
public void startOla() { // TODO: Messages
|
||||
chr.getMap().startEvent();
|
||||
chr.getClient().announce(PacketCreator.getClock(360));
|
||||
chr.sendPacket(PacketCreator.getClock(360));
|
||||
this.timeStarted = System.currentTimeMillis();
|
||||
this.time = 360000;
|
||||
|
||||
chr.getMap().getPortal("join00").setPortalStatus(true);
|
||||
chr.getClient().announce(PacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter."));
|
||||
chr.sendPacket(PacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter."));
|
||||
}
|
||||
|
||||
public boolean isTimerStarted() {
|
||||
|
||||
@@ -58,8 +58,8 @@ public class MapleSnowball {
|
||||
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != null) {
|
||||
chr.announce(PacketCreator.rollSnowBall(false, 1, map.getSnowball(0), map.getSnowball(1)));
|
||||
chr.announce(PacketCreator.getClock(600));
|
||||
chr.sendPacket(PacketCreator.rollSnowBall(false, 1, map.getSnowball(0), map.getSnowball(1)));
|
||||
chr.sendPacket(PacketCreator.getClock(600));
|
||||
}
|
||||
}
|
||||
hittable = true;
|
||||
@@ -67,13 +67,13 @@ public class MapleSnowball {
|
||||
if (map.getSnowball(team).getPosition() > map.getSnowball(team == 0 ? 1 : 0).getPosition()) {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != null)
|
||||
chr.announce(PacketCreator.rollSnowBall(false, 3, map.getSnowball(0), map.getSnowball(0)));
|
||||
chr.sendPacket(PacketCreator.rollSnowBall(false, 3, map.getSnowball(0), map.getSnowball(0)));
|
||||
}
|
||||
winner = true;
|
||||
} else if (map.getSnowball(team == 0 ? 1 : 0).getPosition() > map.getSnowball(team).getPosition()) {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != null)
|
||||
chr.announce(PacketCreator.rollSnowBall(false, 4, map.getSnowball(0), map.getSnowball(0)));
|
||||
chr.sendPacket(PacketCreator.rollSnowBall(false, 4, map.getSnowball(0), map.getSnowball(0)));
|
||||
}
|
||||
winner = true;
|
||||
} //Else
|
||||
@@ -138,7 +138,7 @@ public class MapleSnowball {
|
||||
public void message(int message) {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != null)
|
||||
chr.announce(PacketCreator.snowballMessage(team, message));
|
||||
chr.sendPacket(PacketCreator.snowballMessage(team, message));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
package server.expeditions;
|
||||
|
||||
import client.MapleCharacter;
|
||||
import net.packet.Packet;
|
||||
import net.server.PlayerStorage;
|
||||
import net.server.Server;
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
@@ -115,10 +116,10 @@ public class MapleExpedition {
|
||||
|
||||
public void beginRegistration() {
|
||||
registering = true;
|
||||
leader.announce(PacketCreator.getClock(type.getRegistrationTime() * 60));
|
||||
leader.sendPacket(PacketCreator.getClock(type.getRegistrationTime() * 60));
|
||||
if (!silent) {
|
||||
startMap.broadcastMessage(leader, PacketCreator.serverNotice(6, "[Expedition] " + leader.getName() + " has been declared the expedition captain. Please register for the expedition."), false);
|
||||
leader.announce(PacketCreator.serverNotice(6, "[Expedition] You have become the expedition captain. Gather enough people for your team then talk to the NPC to start."));
|
||||
leader.sendPacket(PacketCreator.serverNotice(6, "[Expedition] You have become the expedition captain. Gather enough people for your team then talk to the NPC to start."));
|
||||
}
|
||||
scheduleRegistrationEnd();
|
||||
}
|
||||
@@ -137,18 +138,18 @@ dispose(false);
|
||||
}, type.getRegistrationTime() * 60 * 1000);
|
||||
}
|
||||
|
||||
public void dispose(boolean log){
|
||||
broadcastExped(PacketCreator.removeClock());
|
||||
|
||||
if (schedule != null){
|
||||
schedule.cancel(false);
|
||||
}
|
||||
if (log && !registering){
|
||||
LogHelper.logExpedition(this);
|
||||
}
|
||||
}
|
||||
public void dispose(boolean log) {
|
||||
broadcastExped(PacketCreator.removeClock());
|
||||
|
||||
if (schedule != null) {
|
||||
schedule.cancel(false);
|
||||
}
|
||||
if (log && !registering) {
|
||||
LogHelper.logExpedition(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void finishRegistration() {
|
||||
public void finishRegistration() {
|
||||
registering = false;
|
||||
}
|
||||
|
||||
@@ -178,7 +179,7 @@ dispose(false);
|
||||
}
|
||||
|
||||
members.put(player.getId(), player.getName());
|
||||
player.announce(PacketCreator.getClock((int)(startTime - System.currentTimeMillis()) / 1000));
|
||||
player.sendPacket(PacketCreator.getClock((int)(startTime - System.currentTimeMillis()) / 1000));
|
||||
if (!silent) broadcastExped(PacketCreator.serverNotice(6, "[Expedition] " + player.getName() + " has joined the expedition!"));
|
||||
return "You have registered for the expedition successfully!";
|
||||
}
|
||||
@@ -195,7 +196,7 @@ dispose(false);
|
||||
}
|
||||
|
||||
members.put(player.getId(), player.getName());
|
||||
player.announce(PacketCreator.getClock((int) (startTime - System.currentTimeMillis()) / 1000));
|
||||
player.sendPacket(PacketCreator.getClock((int) (startTime - System.currentTimeMillis()) / 1000));
|
||||
if (!silent) broadcastExped(PacketCreator.serverNotice(6, "[Expedition] " + player.getName() + " has joined the expedition!"));
|
||||
return 0; //"You have registered for the expedition successfully!";
|
||||
}
|
||||
@@ -208,15 +209,15 @@ dispose(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void broadcastExped(byte[] packet){
|
||||
private void broadcastExped(Packet packet){
|
||||
for (MapleCharacter chr : getActiveMembers()){
|
||||
chr.announce(packet);
|
||||
chr.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean removeMember(MapleCharacter chr) {
|
||||
if(members.remove(chr.getId()) != null) {
|
||||
chr.announce(PacketCreator.removeClock());
|
||||
chr.sendPacket(PacketCreator.removeClock());
|
||||
if (!silent) {
|
||||
broadcastExped(PacketCreator.serverNotice(6, "[Expedition] " + chr.getName() + " has left the expedition."));
|
||||
chr.dropMessage(6, "[Expedition] You have left this expedition.");
|
||||
@@ -237,7 +238,7 @@ dispose(false);
|
||||
|
||||
MapleCharacter player = startMap.getWorldServer().getPlayerStorage().getCharacterById(cid);
|
||||
if (player != null && player.isLoggedinWorld()) {
|
||||
player.announce(PacketCreator.removeClock());
|
||||
player.sendPacket(PacketCreator.removeClock());
|
||||
if (!silent) player.dropMessage(6, "[Expedition] You have been banned from this expedition.");
|
||||
if (MapleExpeditionType.ARIANT.equals(type) || MapleExpeditionType.ARIANT1.equals(type) || MapleExpeditionType.ARIANT2.equals(type)) {
|
||||
player.changeMap(980010000);
|
||||
|
||||
@@ -26,6 +26,7 @@ import client.status.MonsterStatus;
|
||||
import client.status.MonsterStatusEffect;
|
||||
import config.YamlConfig;
|
||||
import constants.skills.*;
|
||||
import net.packet.Packet;
|
||||
import net.server.audit.LockCollector;
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.MonitoredReentrantLock;
|
||||
@@ -365,16 +366,16 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
from.getMap().broadcastBossHpMessage(this, this.hashCode(), makeBossHPBarPacket(), getPosition());
|
||||
} else if (!isBoss()) {
|
||||
int remainingHP = (int) Math.max(1, hp.get() * 100f / getMaxHp());
|
||||
byte[] packet = PacketCreator.showMonsterHP(getObjectId(), remainingHP);
|
||||
Packet packet = PacketCreator.showMonsterHP(getObjectId(), remainingHP);
|
||||
if (from.getParty() != null) {
|
||||
for (MaplePartyCharacter mpc : from.getParty().getMembers()) {
|
||||
MapleCharacter member = from.getMap().getCharacterById(mpc.getId()); // god bless
|
||||
if (member != null) {
|
||||
member.announce(packet.clone()); // clone it just in case of crypto
|
||||
member.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
from.announce(packet);
|
||||
from.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1005,7 +1006,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
this.controllerHasPuppet = controllerHasPuppet;
|
||||
}
|
||||
|
||||
public byte[] makeBossHPBarPacket() {
|
||||
public Packet makeBossHPBarPacket() {
|
||||
return PacketCreator.showBossHP(getId(), getHp(), getMaxHp(), getTagColor(), getTagBgColor());
|
||||
}
|
||||
|
||||
@@ -1019,9 +1020,9 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
return;
|
||||
}
|
||||
if (fake) {
|
||||
client.announce(PacketCreator.spawnFakeMonster(this, 0));
|
||||
client.sendPacket(PacketCreator.spawnFakeMonster(this, 0));
|
||||
} else {
|
||||
client.announce(PacketCreator.spawnMonster(this, false));
|
||||
client.sendPacket(PacketCreator.spawnMonster(this, false));
|
||||
}
|
||||
|
||||
if (hasBossHPBar()) {
|
||||
@@ -1031,8 +1032,8 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(MapleClient client) {
|
||||
client.announce(PacketCreator.killMonster(getObjectId(), false));
|
||||
client.announce(PacketCreator.killMonster(getObjectId(), true));
|
||||
client.sendPacket(PacketCreator.killMonster(getObjectId(), false));
|
||||
client.sendPacket(PacketCreator.killMonster(getObjectId(), true));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1086,18 +1087,18 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
}
|
||||
}
|
||||
|
||||
private void broadcastMonsterStatusMessage(byte[] packet) {
|
||||
private void broadcastMonsterStatusMessage(Packet packet) {
|
||||
map.broadcastMessage(packet, getPosition());
|
||||
|
||||
MapleCharacter chrController = getActiveController();
|
||||
if (chrController != null && !chrController.isMapObjectVisible(MapleMonster.this)) {
|
||||
chrController.announce(packet);
|
||||
chrController.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
private int broadcastStatusEffect(final MonsterStatusEffect status) {
|
||||
int animationTime = status.getSkill().getAnimationTime();
|
||||
byte[] packet = PacketCreator.applyMonsterStatus(getObjectId(), status, null);
|
||||
Packet packet = PacketCreator.applyMonsterStatus(getObjectId(), status, null);
|
||||
broadcastMonsterStatusMessage(packet);
|
||||
|
||||
return animationTime;
|
||||
@@ -1172,7 +1173,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
|
||||
final Runnable cancelTask = () -> {
|
||||
if (isAlive()) {
|
||||
byte[] packet = PacketCreator.cancelMonsterStatus(getObjectId(), status.getStati());
|
||||
Packet packet = PacketCreator.cancelMonsterStatus(getObjectId(), status.getStati());
|
||||
broadcastMonsterStatusMessage(packet);
|
||||
}
|
||||
|
||||
@@ -1284,7 +1285,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
public void applyMonsterBuff(final Map<MonsterStatus, Integer> stats, final int x, int skillId, long duration, MobSkill skill, final List<Integer> reflection) {
|
||||
final Runnable cancelTask = () -> {
|
||||
if (isAlive()) {
|
||||
byte[] packet = PacketCreator.cancelMonsterStatus(getObjectId(), stats);
|
||||
Packet packet = PacketCreator.cancelMonsterStatus(getObjectId(), stats);
|
||||
broadcastMonsterStatusMessage(packet);
|
||||
|
||||
statiLock.lock();
|
||||
@@ -1298,7 +1299,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
}
|
||||
};
|
||||
final MonsterStatusEffect effect = new MonsterStatusEffect(stats, null, skill, true);
|
||||
byte[] packet = PacketCreator.applyMonsterStatus(getObjectId(), effect, reflection);
|
||||
Packet packet = PacketCreator.applyMonsterStatus(getObjectId(), effect, reflection);
|
||||
broadcastMonsterStatusMessage(packet);
|
||||
|
||||
statiLock.lock();
|
||||
@@ -1339,7 +1340,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
}
|
||||
|
||||
if (oldEffect != null) {
|
||||
byte[] packet = PacketCreator.cancelMonsterStatus(getObjectId(), oldEffect.getStati());
|
||||
Packet packet = PacketCreator.cancelMonsterStatus(getObjectId(), oldEffect.getStati());
|
||||
broadcastMonsterStatusMessage(packet);
|
||||
}
|
||||
}
|
||||
@@ -1884,7 +1885,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
}
|
||||
|
||||
if (chrController != null) { // this can/should only happen when a hidden gm attacks the monster
|
||||
if (!this.isFake()) chrController.announce(PacketCreator.stopControllingMonster(this.getObjectId()));
|
||||
if (!this.isFake()) chrController.sendPacket(PacketCreator.stopControllingMonster(this.getObjectId()));
|
||||
chrController.stopControllingMonster(this);
|
||||
}
|
||||
|
||||
@@ -2088,7 +2089,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
Maybe Nexon intended to interchange controllers at every attack...
|
||||
|
||||
else if (chrController != null) {
|
||||
chrController.announce(PacketCreator.stopControllingMonster(this.getObjectId()));
|
||||
chrController.sendPacket(PacketCreator.stopControllingMonster(this.getObjectId()));
|
||||
aggroMonsterControl(chrController.getClient(), this, true);
|
||||
}
|
||||
*/
|
||||
@@ -2099,7 +2100,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
}
|
||||
|
||||
private static void aggroMonsterControl(MapleClient c, MapleMonster mob, boolean immediateAggro) {
|
||||
c.announce(PacketCreator.controlMonster(mob, false, immediateAggro));
|
||||
c.sendPacket(PacketCreator.controlMonster(mob, false, immediateAggro));
|
||||
}
|
||||
|
||||
private void aggroRefreshPuppetVisibility(MapleCharacter chrController, MapleSummon puppet) {
|
||||
@@ -2113,15 +2114,15 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
}
|
||||
|
||||
for (MapleMonster mob : puppetControlled) {
|
||||
chrController.announce(PacketCreator.stopControllingMonster(mob.getObjectId()));
|
||||
chrController.sendPacket(PacketCreator.stopControllingMonster(mob.getObjectId()));
|
||||
}
|
||||
chrController.announce(PacketCreator.removeSummon(puppet, false));
|
||||
chrController.sendPacket(PacketCreator.removeSummon(puppet, false));
|
||||
|
||||
MapleClient c = chrController.getClient();
|
||||
for (MapleMonster mob : puppetControlled) { // thanks BHB for noticing puppets disrupting mobstatuses for bowmans
|
||||
aggroMonsterControl(c, mob, mob.isControllerKnowsAboutAggro());
|
||||
}
|
||||
chrController.announce(PacketCreator.spawnSummon(puppet, false));
|
||||
chrController.sendPacket(PacketCreator.spawnSummon(puppet, false));
|
||||
}
|
||||
|
||||
public void aggroUpdatePuppetVisibility() {
|
||||
@@ -2151,7 +2152,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
if (controllerHasPuppet) {
|
||||
controllerHasPuppet = false;
|
||||
|
||||
chrController.announce(PacketCreator.stopControllingMonster(MapleMonster.this.getObjectId()));
|
||||
chrController.sendPacket(PacketCreator.stopControllingMonster(MapleMonster.this.getObjectId()));
|
||||
aggroMonsterControl(chrController.getClient(), MapleMonster.this, MapleMonster.this.isControllerHasAggro());
|
||||
}
|
||||
} finally {
|
||||
|
||||
@@ -27,7 +27,7 @@ import server.maps.MapleMapObjectType;
|
||||
import tools.PacketCreator;
|
||||
|
||||
public class MapleNPC extends AbstractLoadedMapleLife {
|
||||
private MapleNPCStats stats;
|
||||
private final MapleNPCStats stats;
|
||||
|
||||
public MapleNPC(int id, MapleNPCStats stats) {
|
||||
super(id);
|
||||
@@ -44,14 +44,14 @@ public class MapleNPC extends AbstractLoadedMapleLife {
|
||||
|
||||
@Override
|
||||
public void sendSpawnData(MapleClient client) {
|
||||
client.announce(PacketCreator.spawnNPC(this));
|
||||
client.announce(PacketCreator.spawnNPCRequestController(this, true));
|
||||
client.sendPacket(PacketCreator.spawnNPC(this));
|
||||
client.sendPacket(PacketCreator.spawnNPCRequestController(this, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(MapleClient client) {
|
||||
client.announce(PacketCreator.removeNPCController(getObjectId()));
|
||||
client.announce(PacketCreator.removeNPC(getObjectId()));
|
||||
client.sendPacket(PacketCreator.removeNPCController(getObjectId()));
|
||||
client.sendPacket(PacketCreator.removeNPC(getObjectId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -200,14 +200,14 @@ public class MaplePlayerNPC extends AbstractMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendSpawnData(MapleClient client) {
|
||||
client.announce(PacketCreator.spawnPlayerNPC(this));
|
||||
client.announce(PacketCreator.getPlayerNPC(this));
|
||||
client.sendPacket(PacketCreator.spawnPlayerNPC(this));
|
||||
client.sendPacket(PacketCreator.getPlayerNPC(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(MapleClient client) {
|
||||
client.announce(PacketCreator.removeNPCController(this.getObjectId()));
|
||||
client.announce(PacketCreator.removePlayerNPC(this.getObjectId()));
|
||||
client.sendPacket(PacketCreator.removeNPCController(this.getObjectId()));
|
||||
client.sendPacket(PacketCreator.removePlayerNPC(this.getObjectId()));
|
||||
}
|
||||
|
||||
private static void getRunningMetadata() {
|
||||
|
||||
@@ -91,7 +91,7 @@ public class MapleDoorObject extends AbstractMapleMapObject {
|
||||
public void warp(final MapleCharacter chr) {
|
||||
MapleParty party = chr.getParty();
|
||||
if (chr.getId() == ownerId || (party != null && party.getMemberById(ownerId) != null)) {
|
||||
chr.announce(PacketCreator.playPortalSound());
|
||||
chr.sendPacket(PacketCreator.playPortalSound());
|
||||
|
||||
if(!inTown() && party == null) {
|
||||
chr.changeMap(to, getLinkedPortalId());
|
||||
@@ -99,8 +99,8 @@ public class MapleDoorObject extends AbstractMapleMapObject {
|
||||
chr.changeMap(to, getLinkedPortalPosition());
|
||||
}
|
||||
} else {
|
||||
chr.getClient().announce(PacketCreator.blockedMessage(6));
|
||||
chr.getClient().announce(PacketCreator.enableActions());
|
||||
chr.sendPacket(PacketCreator.blockedMessage(6));
|
||||
chr.sendPacket(PacketCreator.enableActions());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,12 +113,12 @@ public class MapleDoorObject extends AbstractMapleMapObject {
|
||||
MapleCharacter chr = client.getPlayer();
|
||||
if (this.getFrom().getId() == chr.getMapId()) {
|
||||
if (chr.getParty() != null && (this.getOwnerId() == chr.getId() || chr.getParty().getMemberById(this.getOwnerId()) != null)) {
|
||||
chr.announce(PacketCreator.partyPortal(this.getFrom().getId(), this.getTo().getId(), this.toPosition()));
|
||||
chr.sendPacket(PacketCreator.partyPortal(this.getFrom().getId(), this.getTo().getId(), this.toPosition()));
|
||||
}
|
||||
|
||||
chr.announce(PacketCreator.spawnPortal(this.getFrom().getId(), this.getTo().getId(), this.toPosition()));
|
||||
chr.sendPacket(PacketCreator.spawnPortal(this.getFrom().getId(), this.getTo().getId(), this.toPosition()));
|
||||
if (!this.inTown()) {
|
||||
chr.announce(PacketCreator.spawnDoor(this.getOwnerId(), this.getPosition(), launched));
|
||||
chr.sendPacket(PacketCreator.spawnDoor(this.getOwnerId(), this.getPosition(), launched));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -129,16 +129,16 @@ public class MapleDoorObject extends AbstractMapleMapObject {
|
||||
if (from.getId() == chr.getMapId()) {
|
||||
MapleParty party = chr.getParty();
|
||||
if (party != null && (ownerId == chr.getId() || party.getMemberById(ownerId) != null)) {
|
||||
client.announce(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1)));
|
||||
client.sendPacket(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1)));
|
||||
}
|
||||
client.announce(PacketCreator.removeDoor(ownerId, inTown()));
|
||||
client.sendPacket(PacketCreator.removeDoor(ownerId, inTown()));
|
||||
}
|
||||
}
|
||||
|
||||
public void sendDestroyData(MapleClient client, boolean partyUpdate) {
|
||||
if (client != null && from.getId() == client.getPlayer().getMapId()) {
|
||||
client.announce(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1)));
|
||||
client.announce(PacketCreator.removeDoor(ownerId, inTown()));
|
||||
client.sendPacket(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1)));
|
||||
client.sendPacket(PacketCreator.removeDoor(ownerId, inTown()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ public class MapleDragon extends AbstractAnimatedMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendSpawnData(MapleClient client) {
|
||||
client.announce(PacketCreator.spawnDragon(this));
|
||||
client.sendPacket(PacketCreator.spawnDragon(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -56,7 +56,7 @@ public class MapleDragon extends AbstractAnimatedMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(MapleClient c) {
|
||||
c.announce(PacketCreator.removeDragon(owner.getId()));
|
||||
c.sendPacket(PacketCreator.removeDragon(owner.getId()));
|
||||
}
|
||||
|
||||
public MapleCharacter getOwner() {
|
||||
|
||||
@@ -156,7 +156,7 @@ public class MapleGenericPortal implements MaplePortal {
|
||||
}
|
||||
}
|
||||
if (!changed) {
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import client.inventory.manipulator.MapleKarmaManipulator;
|
||||
import client.processor.npc.FredrickProcessor;
|
||||
import config.YamlConfig;
|
||||
import net.packet.Packet;
|
||||
import net.server.Server;
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
||||
@@ -83,7 +84,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
this.map = owner.getMap();
|
||||
}
|
||||
|
||||
public void broadcastToVisitorsThreadsafe(final byte[] packet) {
|
||||
public void broadcastToVisitorsThreadsafe(Packet packet) {
|
||||
visitorLock.lock();
|
||||
try {
|
||||
broadcastToVisitors(packet);
|
||||
@@ -92,10 +93,10 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
}
|
||||
}
|
||||
|
||||
private void broadcastToVisitors(final byte[] packet) {
|
||||
private void broadcastToVisitors(Packet packet) {
|
||||
for (MapleCharacter visitor : visitors) {
|
||||
if (visitor != null) {
|
||||
visitor.getClient().announce(packet);
|
||||
visitor.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -182,8 +183,8 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
if (visitor != null) {
|
||||
visitor.setHiredMerchant(null);
|
||||
|
||||
visitor.getClient().announce(PacketCreator.leaveHiredMerchant(i + 1, 0x11));
|
||||
visitor.getClient().announce(PacketCreator.hiredMerchantMaintenanceMessage());
|
||||
visitor.sendPacket(PacketCreator.leaveHiredMerchant(i + 1, 0x11));
|
||||
visitor.sendPacket(PacketCreator.hiredMerchantMaintenanceMessage());
|
||||
|
||||
visitors[i] = null;
|
||||
}
|
||||
@@ -197,8 +198,8 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
|
||||
private void removeOwner(MapleCharacter owner) {
|
||||
if (owner.getHiredMerchant() == this) {
|
||||
owner.announce(PacketCreator.hiredMerchantOwnerLeave());
|
||||
owner.announce(PacketCreator.leaveHiredMerchant(0x00, 0x03));
|
||||
owner.sendPacket(PacketCreator.hiredMerchantOwnerLeave());
|
||||
owner.sendPacket(PacketCreator.leaveHiredMerchant(0x00, 0x03));
|
||||
owner.setHiredMerchant(null);
|
||||
}
|
||||
}
|
||||
@@ -220,8 +221,8 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
iitem.setQuantity((short) (shopItem.getItem().getQuantity() * shopItem.getBundles()));
|
||||
|
||||
if (!MapleInventory.checkSpot(chr, iitem)) {
|
||||
chr.announce(PacketCreator.serverNotice(1, "Have a slot available on your inventory to claim back the item."));
|
||||
chr.announce(PacketCreator.enableActions());
|
||||
chr.sendPacket(PacketCreator.serverNotice(1, "Have a slot available on your inventory to claim back the item."));
|
||||
chr.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -229,7 +230,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
}
|
||||
|
||||
removeFromSlot(slot);
|
||||
chr.announce(PacketCreator.updateHiredMerchant(this, chr));
|
||||
chr.sendPacket(PacketCreator.updateHiredMerchant(this, chr));
|
||||
}
|
||||
|
||||
if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) {
|
||||
@@ -263,10 +264,10 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
|
||||
newItem.setQuantity((short) ((pItem.getItem().getQuantity() * quantity)));
|
||||
if (quantity < 1 || !pItem.isExist() || pItem.getBundles() < quantity) {
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
} else if (newItem.getInventoryType().equals(MapleInventoryType.EQUIP) && newItem.getQuantity() > 1) {
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -318,12 +319,12 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
}
|
||||
} else {
|
||||
c.getPlayer().dropMessage(1, "Your inventory is full. Please clear a slot before buying this item.");
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
c.getPlayer().dropMessage(1, "You don't have enough mesos to purchase this item.");
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
try {
|
||||
@@ -461,15 +462,15 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
this.setOpen(false);
|
||||
this.removeAllVisitors();
|
||||
|
||||
chr.announce(PacketCreator.getHiredMerchant(chr, this, false));
|
||||
chr.sendPacket(PacketCreator.getHiredMerchant(chr, this, false));
|
||||
} else if (!this.isOpen()) {
|
||||
chr.announce(PacketCreator.getMiniRoomError(18));
|
||||
chr.sendPacket(PacketCreator.getMiniRoomError(18));
|
||||
return;
|
||||
} else if (!this.addVisitor(chr)) {
|
||||
chr.announce(PacketCreator.getMiniRoomError(2));
|
||||
chr.sendPacket(PacketCreator.getMiniRoomError(2));
|
||||
return;
|
||||
} else {
|
||||
chr.announce(PacketCreator.getHiredMerchant(chr, this, false));
|
||||
chr.sendPacket(PacketCreator.getHiredMerchant(chr, this, false));
|
||||
}
|
||||
chr.setHiredMerchant(this);
|
||||
} finally {
|
||||
@@ -713,7 +714,7 @@ public class MapleHiredMerchant extends AbstractMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendSpawnData(MapleClient client) {
|
||||
client.announce(PacketCreator.spawnHiredMerchantBox(this));
|
||||
client.sendPacket(PacketCreator.spawnHiredMerchantBox(this));
|
||||
}
|
||||
|
||||
public class SoldItem {
|
||||
|
||||
@@ -2,24 +2,24 @@ package server.maps;
|
||||
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.packet.Packet;
|
||||
import tools.PacketCreator;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class MapleKite extends AbstractMapleMapObject {
|
||||
private final Point pos;
|
||||
private final MapleCharacter owner;
|
||||
private final String text;
|
||||
private final int ft;
|
||||
private final int itemid;
|
||||
|
||||
private Point pos;
|
||||
private MapleCharacter owner;
|
||||
private String text;
|
||||
private int ft;
|
||||
private int itemid;
|
||||
|
||||
public MapleKite(MapleCharacter owner, String text, int itemid) {
|
||||
public MapleKite(MapleCharacter owner, String text, int itemId) {
|
||||
this.owner = owner;
|
||||
this.pos = owner.getPosition();
|
||||
this.ft = owner.getFh();
|
||||
this.text = text;
|
||||
this.itemid = itemid;
|
||||
this.itemid = itemId;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,19 +43,19 @@ public class MapleKite extends AbstractMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(MapleClient client) {
|
||||
client.announce(makeDestroyData());
|
||||
client.sendPacket(makeDestroyData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendSpawnData(MapleClient client) {
|
||||
client.announce(makeSpawnData());
|
||||
client.sendPacket(makeSpawnData());
|
||||
}
|
||||
|
||||
public final byte[] makeSpawnData() {
|
||||
public final Packet makeSpawnData() {
|
||||
return PacketCreator.spawnKite(getObjectId(), itemid, owner.getName(), text, pos, ft);
|
||||
}
|
||||
|
||||
public final byte[] makeDestroyData() {
|
||||
public final Packet makeDestroyData() {
|
||||
return PacketCreator.removeKite(getObjectId(), 0);
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,7 @@ import client.status.MonsterStatusEffect;
|
||||
import config.YamlConfig;
|
||||
import constants.game.GameConstants;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.packet.Packet;
|
||||
import net.server.Server;
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.MonitoredReadLock;
|
||||
@@ -74,6 +75,7 @@ import java.util.Map.Entry;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class MapleMap {
|
||||
|
||||
@@ -199,28 +201,21 @@ public class MapleMap {
|
||||
public int getWorld() {
|
||||
return world;
|
||||
}
|
||||
|
||||
public void broadcastMessage(MapleCharacter source, final byte[] packet) {
|
||||
chrRLock.lock();
|
||||
try {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != source) {
|
||||
chr.getClient().announce(packet);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
chrRLock.unlock();
|
||||
}
|
||||
|
||||
public void broadcastPacket(MapleCharacter source, Packet packet) {
|
||||
broadcastPacket(packet, chr -> chr != source);
|
||||
}
|
||||
|
||||
public void broadcastGMMessage(MapleCharacter source, final byte[] packet) {
|
||||
public void broadcastGMPacket(MapleCharacter source, Packet packet) {
|
||||
broadcastPacket(packet, chr -> chr != source && chr.gmLevel() >= source.gmLevel());
|
||||
}
|
||||
|
||||
private void broadcastPacket(Packet packet, Predicate<MapleCharacter> chrFilter) {
|
||||
chrRLock.lock();
|
||||
try {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != source && (chr.gmLevel() >= source.gmLevel())) {
|
||||
chr.getClient().announce(packet);
|
||||
}
|
||||
}
|
||||
characters.stream()
|
||||
.filter(chrFilter)
|
||||
.forEach(chr -> chr.sendPacket(packet));
|
||||
} finally {
|
||||
chrRLock.unlock();
|
||||
}
|
||||
@@ -230,9 +225,8 @@ public class MapleMap {
|
||||
this.dropsOn = !dropsOn;
|
||||
}
|
||||
|
||||
|
||||
private static double getRangedDistance() {
|
||||
return(YamlConfig.config.server.USE_MAXRANGE ? Double.POSITIVE_INFINITY : 722500);
|
||||
return YamlConfig.config.server.USE_MAXRANGE ? Double.POSITIVE_INFINITY : 722500;
|
||||
}
|
||||
|
||||
public List<MapleMapObject> getMapObjectsInRect(Rectangle box, List<MapleMapObjectType> types) {
|
||||
@@ -1018,7 +1012,7 @@ public class MapleMap {
|
||||
return count;
|
||||
}
|
||||
|
||||
public void pickItemDrop(byte[] pickupPacket, MapleMapItem mdrop) { // mdrop must be already locked and not-pickedup checked at this point
|
||||
public void pickItemDrop(Packet pickupPacket, MapleMapItem mdrop) { // mdrop must be already locked and not-pickedup checked at this point
|
||||
broadcastMessage(pickupPacket, mdrop.getPosition());
|
||||
|
||||
droppedItemCount.decrementAndGet();
|
||||
@@ -1040,25 +1034,25 @@ public class MapleMap {
|
||||
|
||||
mdrop.setPartyOwnerId(partyid);
|
||||
|
||||
byte[] removePacket = PacketCreator.silentRemoveItemFromMap(mdrop.getObjectId());
|
||||
byte[] updatePacket = PacketCreator.updateMapItemObject(mdrop, partyLeaver == null);
|
||||
Packet removePacket = PacketCreator.silentRemoveItemFromMap(mdrop.getObjectId());
|
||||
Packet updatePacket = PacketCreator.updateMapItemObject(mdrop, partyLeaver == null);
|
||||
|
||||
for (MapleCharacter mc : partyMembers) {
|
||||
if (this.equals(mc.getMap())) {
|
||||
mc.announce(removePacket);
|
||||
mc.sendPacket(removePacket);
|
||||
|
||||
if (mc.needQuestItem(mdrop.getQuest(), mdrop.getItemId())) {
|
||||
mc.announce(updatePacket);
|
||||
mc.sendPacket(updatePacket);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (partyLeaver != null) {
|
||||
if (this.equals(partyLeaver.getMap())) {
|
||||
partyLeaver.announce(removePacket);
|
||||
partyLeaver.sendPacket(removePacket);
|
||||
|
||||
if (partyLeaver.needQuestItem(mdrop.getQuest(), mdrop.getItemId())) {
|
||||
partyLeaver.announce(PacketCreator.updateMapItemObject(mdrop, true));
|
||||
partyLeaver.sendPacket(PacketCreator.updateMapItemObject(mdrop, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1081,15 +1075,15 @@ public class MapleMap {
|
||||
continue;
|
||||
}
|
||||
|
||||
byte[] removePacket = PacketCreator.silentRemoveItemFromMap(mdrop.getObjectId());
|
||||
byte[] updatePacket = PacketCreator.updateMapItemObject(mdrop, true);
|
||||
Packet removePacket = PacketCreator.silentRemoveItemFromMap(mdrop.getObjectId());
|
||||
Packet updatePacket = PacketCreator.updateMapItemObject(mdrop, true);
|
||||
|
||||
if (newcomer != null) {
|
||||
if (this.equals(newcomer.getMap())) {
|
||||
newcomer.announce(removePacket);
|
||||
newcomer.sendPacket(removePacket);
|
||||
|
||||
if (newcomer.needQuestItem(mdrop.getQuest(), mdrop.getItemId())) {
|
||||
newcomer.announce(updatePacket);
|
||||
newcomer.sendPacket(updatePacket);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1108,7 +1102,7 @@ public class MapleMap {
|
||||
if (chr1.needQuestItem(questid, idrop.getItemId())) {
|
||||
mdrop.lockItem();
|
||||
try {
|
||||
c.announce(PacketCreator.dropItemFromMapObject(chr1, mdrop, dropper.getPosition(), dropPos, (byte) 1));
|
||||
c.sendPacket(PacketCreator.dropItemFromMapObject(chr1, mdrop, dropper.getPosition(), dropPos, (byte) 1));
|
||||
} finally {
|
||||
mdrop.unlockItem();
|
||||
}
|
||||
@@ -1127,7 +1121,7 @@ public class MapleMap {
|
||||
spawnAndAddRangedMapObject(mdrop, c -> {
|
||||
mdrop.lockItem();
|
||||
try {
|
||||
c.announce(PacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1));
|
||||
c.sendPacket(PacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1));
|
||||
} finally {
|
||||
mdrop.unlockItem();
|
||||
}
|
||||
@@ -1407,8 +1401,8 @@ public class MapleMap {
|
||||
MapleCharacter character = (MapleCharacter) mmo;
|
||||
if (character.isAlive()) {
|
||||
MapleStatEffect statEffect = mii.getItemEffect(buff);
|
||||
character.getClient().announce(PacketCreator.showOwnBuffEffect(buff, 1));
|
||||
broadcastMessage(character, PacketCreator.showBuffeffect(character.getId(), buff, 1), false);
|
||||
character.sendPacket(PacketCreator.showOwnBuffEffect(buff, 1));
|
||||
broadcastMessage(character, PacketCreator.showBuffEffect(character.getId(), buff, 1), false);
|
||||
statEffect.applyTo(character);
|
||||
}
|
||||
}
|
||||
@@ -1867,7 +1861,7 @@ public class MapleMap {
|
||||
getEventInstance().registerMonster(monster);
|
||||
}
|
||||
|
||||
spawnAndAddRangedMapObject(monster, c -> c.announce(PacketCreator.spawnMonster(monster, false)));
|
||||
spawnAndAddRangedMapObject(monster, c -> c.sendPacket(PacketCreator.spawnMonster(monster, false)));
|
||||
|
||||
monster.aggroUpdateController();
|
||||
updateBossSpawn(monster);
|
||||
@@ -1954,7 +1948,7 @@ public class MapleMap {
|
||||
getEventInstance().registerMonster(monster);
|
||||
}
|
||||
|
||||
spawnAndAddRangedMapObject(monster, c -> c.announce(PacketCreator.spawnMonster(monster, true)), null);
|
||||
spawnAndAddRangedMapObject(monster, c -> c.sendPacket(PacketCreator.spawnMonster(monster, true)), null);
|
||||
|
||||
monster.aggroUpdateController();
|
||||
updateBossSpawn(monster);
|
||||
@@ -2015,7 +2009,7 @@ public class MapleMap {
|
||||
monster.setPosition(spos);
|
||||
monster.setSpawnEffect(effect);
|
||||
|
||||
spawnAndAddRangedMapObject(monster, c -> c.announce(PacketCreator.spawnMonster(monster, true, effect)));
|
||||
spawnAndAddRangedMapObject(monster, c -> c.sendPacket(PacketCreator.spawnMonster(monster, true, effect)));
|
||||
|
||||
monster.aggroUpdateController();
|
||||
updateBossSpawn(monster);
|
||||
@@ -2028,7 +2022,7 @@ public class MapleMap {
|
||||
public void spawnFakeMonster(final MapleMonster monster) {
|
||||
monster.setMap(this);
|
||||
monster.setFake(true);
|
||||
spawnAndAddRangedMapObject(monster, c -> c.announce(PacketCreator.spawnFakeMonster(monster, 0)));
|
||||
spawnAndAddRangedMapObject(monster, c -> c.sendPacket(PacketCreator.spawnFakeMonster(monster, 0)));
|
||||
|
||||
spawnedMonstersOnMap.incrementAndGet();
|
||||
addSelfDestructive(monster);
|
||||
@@ -2043,7 +2037,7 @@ public class MapleMap {
|
||||
|
||||
public void spawnReactor(final MapleReactor reactor) {
|
||||
reactor.setMap(this);
|
||||
spawnAndAddRangedMapObject(reactor, c -> c.announce(reactor.makeSpawnData()));
|
||||
spawnAndAddRangedMapObject(reactor, c -> c.sendPacket(reactor.makeSpawnData()));
|
||||
}
|
||||
|
||||
public void spawnDoor(final MapleDoorObject door) {
|
||||
@@ -2069,7 +2063,7 @@ public class MapleMap {
|
||||
public void spawnSummon(final MapleSummon summon) {
|
||||
spawnAndAddRangedMapObject(summon, c -> {
|
||||
if (summon != null) {
|
||||
c.announce(PacketCreator.spawnSummon(summon, true));
|
||||
c.sendPacket(PacketCreator.spawnSummon(summon, true));
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
@@ -2148,7 +2142,7 @@ public class MapleMap {
|
||||
spawnAndAddRangedMapObject(mdrop, c -> {
|
||||
mdrop.lockItem();
|
||||
try {
|
||||
c.announce(PacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1));
|
||||
c.sendPacket(PacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1));
|
||||
} finally {
|
||||
mdrop.unlockItem();
|
||||
}
|
||||
@@ -2402,7 +2396,7 @@ public class MapleMap {
|
||||
|
||||
if (mapid == 200090060) { // To Rien
|
||||
int travelTime = getWorldServer().getTransportationTime(1 * 60 * 1000);
|
||||
chr.announce(PacketCreator.getClock(travelTime / 1000));
|
||||
chr.sendPacket(PacketCreator.getClock(travelTime / 1000));
|
||||
TimerManager.getInstance().schedule(() -> {
|
||||
if (chr.getMapId() == 200090060) {
|
||||
chr.changeMap(140020300, 0);
|
||||
@@ -2410,7 +2404,7 @@ public class MapleMap {
|
||||
}, travelTime);
|
||||
} else if (mapid == 200090070) { // To Lith Harbor
|
||||
int travelTime = getWorldServer().getTransportationTime(1 * 60 * 1000);
|
||||
chr.announce(PacketCreator.getClock(travelTime / 1000));
|
||||
chr.sendPacket(PacketCreator.getClock(travelTime / 1000));
|
||||
TimerManager.getInstance().schedule(() -> {
|
||||
if (chr.getMapId() == 200090070) {
|
||||
chr.changeMap(104000000, 3);
|
||||
@@ -2418,7 +2412,7 @@ public class MapleMap {
|
||||
}, travelTime);
|
||||
} else if (mapid == 200090030) { // To Ereve (SkyFerry)
|
||||
int travelTime = getWorldServer().getTransportationTime(2 * 60 * 1000);
|
||||
chr.announce(PacketCreator.getClock(travelTime / 1000));
|
||||
chr.sendPacket(PacketCreator.getClock(travelTime / 1000));
|
||||
TimerManager.getInstance().schedule(() -> {
|
||||
if (chr.getMapId() == 200090030) {
|
||||
chr.changeMap(130000210, 0);
|
||||
@@ -2426,7 +2420,7 @@ public class MapleMap {
|
||||
}, travelTime);
|
||||
} else if (mapid == 200090031) { // To Victoria Island (SkyFerry)
|
||||
int travelTime = getWorldServer().getTransportationTime(2 * 60 * 1000);
|
||||
chr.announce(PacketCreator.getClock(travelTime / 1000));
|
||||
chr.sendPacket(PacketCreator.getClock(travelTime / 1000));
|
||||
TimerManager.getInstance().schedule(() -> {
|
||||
if (chr.getMapId() == 200090031) {
|
||||
chr.changeMap(101000400, 0);
|
||||
@@ -2434,7 +2428,7 @@ public class MapleMap {
|
||||
}, travelTime);
|
||||
} else if (mapid == 200090021) { // To Orbis (SkyFerry)
|
||||
int travelTime = getWorldServer().getTransportationTime(8 * 60 * 1000);
|
||||
chr.announce(PacketCreator.getClock(travelTime / 1000));
|
||||
chr.sendPacket(PacketCreator.getClock(travelTime / 1000));
|
||||
TimerManager.getInstance().schedule(() -> {
|
||||
if (chr.getMapId() == 200090021) {
|
||||
chr.changeMap(200000161, 0);
|
||||
@@ -2442,7 +2436,7 @@ public class MapleMap {
|
||||
}, travelTime);
|
||||
} else if (mapid == 200090020) { // To Ereve From Orbis (SkyFerry)
|
||||
int travelTime = getWorldServer().getTransportationTime(8 * 60 * 1000);
|
||||
chr.announce(PacketCreator.getClock(travelTime / 1000));
|
||||
chr.sendPacket(PacketCreator.getClock(travelTime / 1000));
|
||||
TimerManager.getInstance().schedule(() -> {
|
||||
if (chr.getMapId() == 200090020) {
|
||||
chr.changeMap(130000210, 0);
|
||||
@@ -2455,14 +2449,14 @@ public class MapleMap {
|
||||
}
|
||||
} else if (GameConstants.isAriantColiseumArena(mapid)) {
|
||||
int pqTimer = (10 * 60 * 1000);
|
||||
chr.announce(PacketCreator.getClock(pqTimer / 1000));
|
||||
chr.sendPacket(PacketCreator.getClock(pqTimer / 1000));
|
||||
}
|
||||
|
||||
MaplePet[] pets = chr.getPets();
|
||||
for (MaplePet pet : pets) {
|
||||
if (pet != null) {
|
||||
pet.setPos(getGroundBelow(chr.getPosition()));
|
||||
chr.announce(PacketCreator.showPet(chr, pet, false, false));
|
||||
chr.sendPacket(PacketCreator.showPet(chr, pet, false, false));
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
@@ -2470,7 +2464,7 @@ public class MapleMap {
|
||||
chr.commitExcludedItems(); // thanks OishiiKawaiiDesu for noticing pet item ignore registry erasing upon changing maps
|
||||
|
||||
if (chr.getMonsterCarnival() != null) {
|
||||
chr.getClient().announce(PacketCreator.getClock(chr.getMonsterCarnival().getTimeLeftSeconds()));
|
||||
chr.sendPacket(PacketCreator.getClock(chr.getMonsterCarnival().getTimeLeftSeconds()));
|
||||
if (isCPQMap()) {
|
||||
int team = -1;
|
||||
int oposition = -1;
|
||||
@@ -2482,7 +2476,7 @@ public class MapleMap {
|
||||
team = 1;
|
||||
oposition = 0;
|
||||
}
|
||||
chr.getClient().announce(PacketCreator.startMonsterCarnival(chr, team, oposition));
|
||||
chr.sendPacket(PacketCreator.startMonsterCarnival(chr, team, oposition));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2490,7 +2484,7 @@ public class MapleMap {
|
||||
|
||||
if (chr.getChalkboard() != null) {
|
||||
if (!GameConstants.isFreeMarketRoom(mapid)) {
|
||||
chr.announce(PacketCreator.useChalkboard(chr, false)); // update player's chalkboard when changing maps found thanks to Vcoc
|
||||
chr.sendPacket(PacketCreator.useChalkboard(chr, false)); // update player's chalkboard when changing maps found thanks to Vcoc
|
||||
} else {
|
||||
chr.setChalkboard(null);
|
||||
}
|
||||
@@ -2498,7 +2492,7 @@ public class MapleMap {
|
||||
|
||||
if (chr.isHidden()) {
|
||||
broadcastGMSpawnPlayerMapObjectMessage(chr, chr, true);
|
||||
chr.announce(PacketCreator.getGMEffect(0x10, (byte) 1));
|
||||
chr.sendPacket(PacketCreator.getGMEffect(0x10, (byte) 1));
|
||||
|
||||
List<Pair<MapleBuffStat, Integer>> dsstat = Collections.singletonList(new Pair<>(MapleBuffStat.DARKSIGHT, 0));
|
||||
broadcastGMMessage(chr, PacketCreator.giveForeignBuff(chr.getId(), dsstat), false);
|
||||
@@ -2512,11 +2506,11 @@ public class MapleMap {
|
||||
chr.getMap().getPortal("join00").setPortalStatus(false);
|
||||
}
|
||||
if (hasForcedEquip()) {
|
||||
chr.getClient().announce(PacketCreator.showForcedEquip(-1));
|
||||
chr.sendPacket(PacketCreator.showForcedEquip(-1));
|
||||
}
|
||||
if (specialEquip()) {
|
||||
chr.getClient().announce(PacketCreator.coconutScore(0, 0));
|
||||
chr.getClient().announce(PacketCreator.showForcedEquip(chr.getTeam()));
|
||||
chr.sendPacket(PacketCreator.coconutScore(0, 0));
|
||||
chr.sendPacket(PacketCreator.showForcedEquip(chr.getTeam()));
|
||||
}
|
||||
objectWLock.lock();
|
||||
try {
|
||||
@@ -2534,9 +2528,9 @@ public class MapleMap {
|
||||
dragon.setPosition(chr.getPosition());
|
||||
this.addMapObject(dragon);
|
||||
if (chr.isHidden()) {
|
||||
this.broadcastGMMessage(chr, PacketCreator.spawnDragon(dragon));
|
||||
this.broadcastGMPacket(chr, PacketCreator.spawnDragon(dragon));
|
||||
} else {
|
||||
this.broadcastMessage(chr, PacketCreator.spawnDragon(dragon));
|
||||
this.broadcastPacket(chr, PacketCreator.spawnDragon(dragon));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2550,34 +2544,34 @@ public class MapleMap {
|
||||
if (mapEffect != null) {
|
||||
mapEffect.sendStartData(chr.getClient());
|
||||
}
|
||||
chr.getClient().announce(PacketCreator.resetForcedStats());
|
||||
chr.sendPacket(PacketCreator.resetForcedStats());
|
||||
if (mapid == 914000200 || mapid == 914000210 || mapid == 914000220) {
|
||||
chr.getClient().announce(PacketCreator.aranGodlyStats());
|
||||
chr.sendPacket(PacketCreator.aranGodlyStats());
|
||||
}
|
||||
if (chr.getEventInstance() != null && chr.getEventInstance().isTimerStarted()) {
|
||||
chr.getClient().announce(PacketCreator.getClock((int) (chr.getEventInstance().getTimeLeft() / 1000)));
|
||||
chr.sendPacket(PacketCreator.getClock((int) (chr.getEventInstance().getTimeLeft() / 1000)));
|
||||
}
|
||||
if (chr.getFitness() != null && chr.getFitness().isTimerStarted()) {
|
||||
chr.getClient().announce(PacketCreator.getClock((int) (chr.getFitness().getTimeLeft() / 1000)));
|
||||
chr.sendPacket(PacketCreator.getClock((int) (chr.getFitness().getTimeLeft() / 1000)));
|
||||
}
|
||||
|
||||
if (chr.getOla() != null && chr.getOla().isTimerStarted()) {
|
||||
chr.getClient().announce(PacketCreator.getClock((int) (chr.getOla().getTimeLeft() / 1000)));
|
||||
chr.sendPacket(PacketCreator.getClock((int) (chr.getOla().getTimeLeft() / 1000)));
|
||||
}
|
||||
|
||||
if (mapid == 109060000) {
|
||||
chr.announce(PacketCreator.rollSnowBall(true, 0, null, null));
|
||||
chr.sendPacket(PacketCreator.rollSnowBall(true, 0, null, null));
|
||||
}
|
||||
|
||||
if (hasClock()) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
chr.getClient().announce((PacketCreator.getClockTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND))));
|
||||
chr.sendPacket(PacketCreator.getClockTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND)));
|
||||
}
|
||||
if (hasBoat() > 0) {
|
||||
if (hasBoat() == 1) {
|
||||
chr.getClient().announce((PacketCreator.boatPacket(true)));
|
||||
chr.sendPacket((PacketCreator.boatPacket(true)));
|
||||
} else {
|
||||
chr.getClient().announce(PacketCreator.boatPacket(false));
|
||||
chr.sendPacket(PacketCreator.boatPacket(false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2715,18 +2709,18 @@ public class MapleMap {
|
||||
if (chr.getDragon() != null) {
|
||||
removeMapObject(chr.getDragon());
|
||||
if (chr.isHidden()) {
|
||||
this.broadcastGMMessage(chr, PacketCreator.removeDragon(chr.getId()));
|
||||
this.broadcastGMPacket(chr, PacketCreator.removeDragon(chr.getId()));
|
||||
} else {
|
||||
this.broadcastMessage(chr, PacketCreator.removeDragon(chr.getId()));
|
||||
this.broadcastPacket(chr, PacketCreator.removeDragon(chr.getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void broadcastMessage(final byte[] packet) {
|
||||
public void broadcastMessage(Packet packet) {
|
||||
broadcastMessage(null, packet, Double.POSITIVE_INFINITY, null);
|
||||
}
|
||||
|
||||
public void broadcastGMMessage(final byte[] packet) {
|
||||
public void broadcastGMMessage(Packet packet) {
|
||||
broadcastGMMessage(null, packet, Double.POSITIVE_INFINITY, null);
|
||||
}
|
||||
|
||||
@@ -2737,7 +2731,7 @@ public class MapleMap {
|
||||
* @param packet
|
||||
* @param repeatToSource
|
||||
*/
|
||||
public void broadcastMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) {
|
||||
public void broadcastMessage(MapleCharacter source, Packet packet, boolean repeatToSource) {
|
||||
broadcastMessage(repeatToSource ? null : source, packet, Double.POSITIVE_INFINITY, source.getPosition());
|
||||
}
|
||||
|
||||
@@ -2749,7 +2743,7 @@ public class MapleMap {
|
||||
* @param repeatToSource
|
||||
* @param ranged
|
||||
*/
|
||||
public void broadcastMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource, boolean ranged) {
|
||||
public void broadcastMessage(MapleCharacter source, Packet packet, boolean repeatToSource, boolean ranged) {
|
||||
broadcastMessage(repeatToSource ? null : source, packet, ranged ? getRangedDistance() : Double.POSITIVE_INFINITY, source.getPosition());
|
||||
}
|
||||
|
||||
@@ -2759,7 +2753,7 @@ public class MapleMap {
|
||||
* @param packet
|
||||
* @param rangedFrom
|
||||
*/
|
||||
public void broadcastMessage(final byte[] packet, Point rangedFrom) {
|
||||
public void broadcastMessage(Packet packet, Point rangedFrom) {
|
||||
broadcastMessage(null, packet, getRangedDistance(), rangedFrom);
|
||||
}
|
||||
|
||||
@@ -2770,21 +2764,21 @@ public class MapleMap {
|
||||
* @param packet
|
||||
* @param rangedFrom
|
||||
*/
|
||||
public void broadcastMessage(MapleCharacter source, final byte[] packet, Point rangedFrom) {
|
||||
public void broadcastMessage(MapleCharacter source, Packet packet, Point rangedFrom) {
|
||||
broadcastMessage(source, packet, getRangedDistance(), rangedFrom);
|
||||
}
|
||||
|
||||
private void broadcastMessage(MapleCharacter source, final byte[] packet, double rangeSq, Point rangedFrom) {
|
||||
private void broadcastMessage(MapleCharacter source, Packet packet, double rangeSq, Point rangedFrom) {
|
||||
chrRLock.lock();
|
||||
try {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != source) {
|
||||
if (rangeSq < Double.POSITIVE_INFINITY) {
|
||||
if (rangedFrom.distanceSq(chr.getPosition()) <= rangeSq) {
|
||||
chr.getClient().announce(packet);
|
||||
chr.sendPacket(packet);
|
||||
}
|
||||
} else {
|
||||
chr.getClient().announce(packet);
|
||||
chr.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2808,15 +2802,15 @@ public class MapleMap {
|
||||
}
|
||||
}
|
||||
|
||||
public void broadcastBossHpMessage(MapleMonster mm, int bossHash, final byte[] packet) {
|
||||
public void broadcastBossHpMessage(MapleMonster mm, int bossHash, Packet packet) {
|
||||
broadcastBossHpMessage(mm, bossHash, null, packet, Double.POSITIVE_INFINITY, null);
|
||||
}
|
||||
|
||||
public void broadcastBossHpMessage(MapleMonster mm, int bossHash, final byte[] packet, Point rangedFrom) {
|
||||
public void broadcastBossHpMessage(MapleMonster mm, int bossHash, Packet packet, Point rangedFrom) {
|
||||
broadcastBossHpMessage(mm, bossHash, null, packet, getRangedDistance(), rangedFrom);
|
||||
}
|
||||
|
||||
private void broadcastBossHpMessage(MapleMonster mm, int bossHash, MapleCharacter source, final byte[] packet, double rangeSq, Point rangedFrom) {
|
||||
private void broadcastBossHpMessage(MapleMonster mm, int bossHash, MapleCharacter source, Packet packet, double rangeSq, Point rangedFrom) {
|
||||
chrRLock.lock();
|
||||
try {
|
||||
for (MapleCharacter chr : characters) {
|
||||
@@ -2847,14 +2841,14 @@ public class MapleMap {
|
||||
chrRLock.lock();
|
||||
try {
|
||||
for (MapleCharacter chr : characters) {
|
||||
final byte[] packet = PacketCreator.dropItemFromMapObject(chr, mdrop, dropperPos, dropPos, mod);
|
||||
Packet packet = PacketCreator.dropItemFromMapObject(chr, mdrop, dropperPos, dropPos, mod);
|
||||
|
||||
if (rangeSq < Double.POSITIVE_INFINITY) {
|
||||
if (rangedFrom.distanceSq(chr.getPosition()) <= rangeSq) {
|
||||
chr.announce(packet);
|
||||
chr.sendPacket(packet);
|
||||
}
|
||||
} else {
|
||||
chr.announce(packet);
|
||||
chr.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
@@ -2877,14 +2871,14 @@ public class MapleMap {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr.isGM()) {
|
||||
if (chr != source) {
|
||||
chr.announce(PacketCreator.spawnPlayerMapObject(chr.getClient(), player, enteringField));
|
||||
chr.sendPacket(PacketCreator.spawnPlayerMapObject(chr.getClient(), player, enteringField));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != source) {
|
||||
chr.announce(PacketCreator.spawnPlayerMapObject(chr.getClient(), player, enteringField));
|
||||
chr.sendPacket(PacketCreator.spawnPlayerMapObject(chr.getClient(), player, enteringField));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2898,7 +2892,7 @@ public class MapleMap {
|
||||
try {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != source) {
|
||||
chr.announce(PacketCreator.updateCharLook(chr.getClient(), player));
|
||||
chr.sendPacket(PacketCreator.updateCharLook(chr.getClient(), player));
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
@@ -3723,21 +3717,21 @@ public class MapleMap {
|
||||
return seats;
|
||||
}
|
||||
|
||||
public void broadcastGMMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) {
|
||||
public void broadcastGMMessage(MapleCharacter source, Packet packet, boolean repeatToSource) {
|
||||
broadcastGMMessage(repeatToSource ? null : source, packet, Double.POSITIVE_INFINITY, source.getPosition());
|
||||
}
|
||||
|
||||
private void broadcastGMMessage(MapleCharacter source, final byte[] packet, double rangeSq, Point rangedFrom) {
|
||||
private void broadcastGMMessage(MapleCharacter source, Packet packet, double rangeSq, Point rangedFrom) {
|
||||
chrRLock.lock();
|
||||
try {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != source && chr.isGM()) {
|
||||
if (rangeSq < Double.POSITIVE_INFINITY) {
|
||||
if (rangedFrom.distanceSq(chr.getPosition()) <= rangeSq) {
|
||||
chr.getClient().announce(packet);
|
||||
chr.sendPacket(packet);
|
||||
}
|
||||
} else {
|
||||
chr.getClient().announce(packet);
|
||||
chr.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3746,12 +3740,12 @@ public class MapleMap {
|
||||
}
|
||||
}
|
||||
|
||||
public void broadcastNONGMMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) {
|
||||
public void broadcastNONGMMessage(MapleCharacter source, Packet packet, boolean repeatToSource) {
|
||||
chrRLock.lock();
|
||||
try {
|
||||
for (MapleCharacter chr : characters) {
|
||||
if (chr != source && !chr.isGM()) {
|
||||
chr.getClient().announce(packet);
|
||||
chr.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
|
||||
@@ -22,27 +22,28 @@
|
||||
package server.maps;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.packet.Packet;
|
||||
import tools.PacketCreator;
|
||||
|
||||
public class MapleMapEffect {
|
||||
private String msg;
|
||||
private int itemId;
|
||||
private boolean active = true;
|
||||
private final String msg;
|
||||
private final int itemId;
|
||||
private final boolean active = true;
|
||||
|
||||
public MapleMapEffect(String msg, int itemId) {
|
||||
this.msg = msg;
|
||||
this.itemId = itemId;
|
||||
}
|
||||
|
||||
public final byte[] makeDestroyData() {
|
||||
public final Packet makeDestroyData() {
|
||||
return PacketCreator.removeMapEffect();
|
||||
}
|
||||
|
||||
public final byte[] makeStartData() {
|
||||
public final Packet makeStartData() {
|
||||
return PacketCreator.startMapEffect(msg, itemId, active);
|
||||
}
|
||||
|
||||
public void sendStartData(MapleClient client) {
|
||||
client.announce(makeStartData());
|
||||
client.sendPacket(makeStartData());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,56 +41,58 @@ public class MapleMapItem extends AbstractMapleMapObject {
|
||||
private Lock itemLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_ITEM);
|
||||
|
||||
public MapleMapItem(Item item, Point position, MapleMapObject dropper, MapleCharacter owner, MapleClient ownerClient, byte type, boolean playerDrop) {
|
||||
setPosition(position);
|
||||
this.item = item;
|
||||
this.dropper = dropper;
|
||||
setPosition(position);
|
||||
this.item = item;
|
||||
this.dropper = dropper;
|
||||
this.character_ownerid = owner.getId();
|
||||
this.party_ownerid = owner.getPartyId();
|
||||
this.partyDrop = this.party_ownerid != -1;
|
||||
this.ownerClient = owner.getClient();
|
||||
this.meso = 0;
|
||||
this.type = type;
|
||||
this.playerDrop = playerDrop;
|
||||
this.meso = 0;
|
||||
this.type = type;
|
||||
this.playerDrop = playerDrop;
|
||||
}
|
||||
|
||||
public MapleMapItem(Item item, Point position, MapleMapObject dropper, MapleCharacter owner, MapleClient ownerClient, byte type, boolean playerDrop, int questid) {
|
||||
setPosition(position);
|
||||
this.item = item;
|
||||
this.dropper = dropper;
|
||||
setPosition(position);
|
||||
this.item = item;
|
||||
this.dropper = dropper;
|
||||
this.character_ownerid = owner.getId();
|
||||
this.party_ownerid = owner.getPartyId();
|
||||
this.partyDrop = this.party_ownerid != -1;
|
||||
this.ownerClient = owner.getClient();
|
||||
this.ownerClient = owner.getClient();
|
||||
this.meso = 0;
|
||||
this.type = type;
|
||||
this.playerDrop = playerDrop;
|
||||
this.questid = questid;
|
||||
this.type = type;
|
||||
this.playerDrop = playerDrop;
|
||||
this.questid = questid;
|
||||
}
|
||||
|
||||
public MapleMapItem(int meso, Point position, MapleMapObject dropper, MapleCharacter owner, MapleClient ownerClient, byte type, boolean playerDrop) {
|
||||
setPosition(position);
|
||||
this.item = null;
|
||||
this.dropper = dropper;
|
||||
this.character_ownerid = owner.getId();
|
||||
setPosition(position);
|
||||
this.item = null;
|
||||
this.dropper = dropper;
|
||||
this.character_ownerid = owner.getId();
|
||||
this.party_ownerid = owner.getPartyId();
|
||||
this.partyDrop = this.party_ownerid != -1;
|
||||
this.ownerClient = owner.getClient();
|
||||
this.meso = meso;
|
||||
this.type = type;
|
||||
this.playerDrop = playerDrop;
|
||||
this.type = type;
|
||||
this.playerDrop = playerDrop;
|
||||
}
|
||||
|
||||
public final Item getItem() {
|
||||
return item;
|
||||
return item;
|
||||
}
|
||||
|
||||
public final int getQuest() {
|
||||
return questid;
|
||||
return questid;
|
||||
}
|
||||
|
||||
public final int getItemId() {
|
||||
if (meso > 0) return meso;
|
||||
return item.getItemId();
|
||||
if (meso > 0) {
|
||||
return meso;
|
||||
}
|
||||
return item.getItemId();
|
||||
}
|
||||
|
||||
public final MapleMapObject getDropper() {
|
||||
@@ -203,7 +205,7 @@ public class MapleMapItem extends AbstractMapleMapObject {
|
||||
if (chr.needQuestItem(questid, getItemId())) {
|
||||
this.lockItem();
|
||||
try {
|
||||
client.announce(PacketCreator.dropItemFromMapObject(chr, this, null, getPosition(), (byte) 2));
|
||||
client.sendPacket(PacketCreator.dropItemFromMapObject(chr, this, null, getPosition(), (byte) 2));
|
||||
} finally {
|
||||
this.unlockItem();
|
||||
}
|
||||
@@ -212,6 +214,6 @@ public class MapleMapItem extends AbstractMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(final MapleClient client) {
|
||||
client.announce(PacketCreator.removeItemFromMap(getObjectId(), 1, 0));
|
||||
client.sendPacket(PacketCreator.removeItemFromMap(getObjectId(), 1, 0));
|
||||
}
|
||||
}
|
||||
@@ -53,7 +53,7 @@ public class MapleMiniDungeon {
|
||||
|
||||
public boolean registerPlayer(MapleCharacter chr) {
|
||||
int time = (int)((expireTime - System.currentTimeMillis()) / 1000);
|
||||
if(time > 0) chr.getClient().announce(PacketCreator.getClock(time));
|
||||
if(time > 0) chr.sendPacket(PacketCreator.getClock(time));
|
||||
|
||||
lock.lock();
|
||||
try {
|
||||
@@ -68,7 +68,7 @@ public class MapleMiniDungeon {
|
||||
}
|
||||
|
||||
public boolean unregisterPlayer(MapleCharacter chr) {
|
||||
chr.getClient().announce(PacketCreator.removeClock());
|
||||
chr.sendPacket(PacketCreator.removeClock());
|
||||
|
||||
lock.lock();
|
||||
try {
|
||||
|
||||
@@ -23,6 +23,7 @@ package server.maps;
|
||||
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.packet.Packet;
|
||||
import net.server.Server;
|
||||
import tools.PacketCreator;
|
||||
|
||||
@@ -107,10 +108,10 @@ public class MapleMiniGame extends AbstractMapleMapObject {
|
||||
|
||||
MapleCharacter owner = this.getOwner();
|
||||
if (GameType == MiniGameType.OMOK) {
|
||||
owner.announce(PacketCreator.getMiniGameNewVisitor(this, challenger, 1));
|
||||
owner.sendPacket(PacketCreator.getMiniGameNewVisitor(this, challenger, 1));
|
||||
owner.getMap().broadcastMessage(PacketCreator.addOmokBox(owner, 2, 0));
|
||||
} else if (GameType == MiniGameType.MATCH_CARD) {
|
||||
owner.announce(PacketCreator.getMatchCardNewVisitor(this, challenger, 1));
|
||||
owner.sendPacket(PacketCreator.getMatchCardNewVisitor(this, challenger, 1));
|
||||
owner.getMap().broadcastMessage(PacketCreator.addMatchCardBox(owner, 2, 0));
|
||||
}
|
||||
}
|
||||
@@ -135,13 +136,13 @@ public class MapleMiniGame extends AbstractMapleMapObject {
|
||||
public void removeVisitor(boolean forceClose, MapleCharacter challenger) {
|
||||
if (visitor == challenger) {
|
||||
if (forceClose) {
|
||||
visitor.announce(PacketCreator.getMiniGameClose(true, 4));
|
||||
visitor.sendPacket(PacketCreator.getMiniGameClose(true, 4));
|
||||
}
|
||||
|
||||
challenger.setMiniGame(null);
|
||||
visitor = null;
|
||||
|
||||
this.getOwner().getClient().announce(PacketCreator.getMiniGameRemoveVisitor());
|
||||
this.getOwner().sendPacket(PacketCreator.getMiniGameRemoveVisitor());
|
||||
if (GameType == MiniGameType.OMOK) {
|
||||
this.getOwner().getMap().broadcastMessage(PacketCreator.addOmokBox(owner, 1, 0));
|
||||
} else if (GameType == MiniGameType.MATCH_CARD) {
|
||||
@@ -154,16 +155,16 @@ public class MapleMiniGame extends AbstractMapleMapObject {
|
||||
return visitor == challenger;
|
||||
}
|
||||
|
||||
public void broadcastToOwner(final byte[] packet) {
|
||||
public void broadcastToOwner(Packet packet) {
|
||||
MapleClient c = owner.getClient();
|
||||
if (c != null) {
|
||||
c.announce(packet);
|
||||
c.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
public void broadcastToVisitor(final byte[] packet) {
|
||||
public void broadcastToVisitor(Packet packet) {
|
||||
if (visitor != null) {
|
||||
visitor.getClient().announce(packet);
|
||||
visitor.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,7 +385,7 @@ public class MapleMiniGame extends AbstractMapleMapObject {
|
||||
return loser;
|
||||
}
|
||||
|
||||
public void broadcast(final byte[] packet) {
|
||||
public void broadcast(Packet packet) {
|
||||
broadcastToOwner(packet);
|
||||
broadcastToVisitor(packet);
|
||||
}
|
||||
@@ -394,11 +395,11 @@ public class MapleMiniGame extends AbstractMapleMapObject {
|
||||
}
|
||||
|
||||
public void sendOmok(MapleClient c, int type) {
|
||||
c.announce(PacketCreator.getMiniGame(c, this, isOwner(c.getPlayer()), type));
|
||||
c.sendPacket(PacketCreator.getMiniGame(c, this, isOwner(c.getPlayer()), type));
|
||||
}
|
||||
|
||||
public void sendMatchCard(MapleClient c, int type) {
|
||||
c.announce(PacketCreator.getMatchCard(c, this, isOwner(c.getPlayer()), type));
|
||||
c.sendPacket(PacketCreator.getMatchCard(c, this, isOwner(c.getPlayer()), type));
|
||||
}
|
||||
|
||||
public MapleCharacter getOwner() {
|
||||
|
||||
@@ -26,6 +26,7 @@ import client.MapleClient;
|
||||
import client.Skill;
|
||||
import client.SkillFactory;
|
||||
import constants.skills.*;
|
||||
import net.packet.Packet;
|
||||
import server.MapleStatEffect;
|
||||
import server.life.MapleMonster;
|
||||
import server.life.MobSkill;
|
||||
@@ -128,18 +129,18 @@ public class MapleMist extends AbstractMapleMapObject {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public final byte[] makeDestroyData() {
|
||||
public final Packet makeDestroyData() {
|
||||
return PacketCreator.removeMist(getObjectId());
|
||||
}
|
||||
|
||||
public final byte[] makeSpawnData() {
|
||||
public final Packet makeSpawnData() {
|
||||
if (owner != null) {
|
||||
return PacketCreator.spawnMist(getObjectId(), owner.getId(), getSourceSkill().getId(), owner.getSkillLevel(SkillFactory.getSkill(source.getSourceId())), this);
|
||||
}
|
||||
return PacketCreator.spawnMist(getObjectId(), mob.getId(), skill.getSkillId(), skill.getSkillLevel(), this);
|
||||
}
|
||||
|
||||
public final byte[] makeFakeSpawnData(int level) {
|
||||
public final Packet makeFakeSpawnData(int level) {
|
||||
if (owner != null) {
|
||||
return PacketCreator.spawnMist(getObjectId(), owner.getId(), getSourceSkill().getId(), level, this);
|
||||
}
|
||||
@@ -148,12 +149,12 @@ public class MapleMist extends AbstractMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendSpawnData(MapleClient client) {
|
||||
client.announce(makeSpawnData());
|
||||
client.sendPacket(makeSpawnData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(MapleClient client) {
|
||||
client.announce(makeDestroyData());
|
||||
client.sendPacket(makeDestroyData());
|
||||
}
|
||||
|
||||
public boolean makeChanceResult() {
|
||||
|
||||
@@ -29,6 +29,7 @@ import client.inventory.MapleInventoryType;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import client.inventory.manipulator.MapleKarmaManipulator;
|
||||
import net.opcodes.SendOpcode;
|
||||
import net.packet.Packet;
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
||||
import server.MapleTrade;
|
||||
@@ -169,13 +170,13 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
visitor.setSlot(-1); //absolutely cant remove player slot for late players without dc'ing them... heh
|
||||
|
||||
for(int j = i; j < 2; j++) {
|
||||
if(visitors[j] != null) owner.announce(PacketCreator.getPlayerShopRemoveVisitor(j + 1));
|
||||
if(visitors[j] != null) owner.sendPacket(PacketCreator.getPlayerShopRemoveVisitor(j + 1));
|
||||
visitors[j] = visitors[j + 1];
|
||||
if(visitors[j] != null) visitors[j].setSlot(j);
|
||||
}
|
||||
visitors[2] = null;
|
||||
for(int j = i; j < 2; j++) {
|
||||
if(visitors[j] != null) owner.announce(PacketCreator.getPlayerShopNewVisitor(visitors[j], j + 1));
|
||||
if(visitors[j] != null) owner.sendPacket(PacketCreator.getPlayerShopNewVisitor(visitors[j], j + 1));
|
||||
}
|
||||
|
||||
this.broadcastRestoreToVisitors();
|
||||
@@ -226,8 +227,8 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
iitem.setQuantity((short) (shopItem.getItem().getQuantity() * shopItem.getBundles()));
|
||||
|
||||
if (!MapleInventory.checkSpot(chr, iitem)) {
|
||||
chr.announce(PacketCreator.serverNotice(1, "Have a slot available on your inventory to claim back the item."));
|
||||
chr.announce(PacketCreator.enableActions());
|
||||
chr.sendPacket(PacketCreator.serverNotice(1, "Have a slot available on your inventory to claim back the item."));
|
||||
chr.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -235,7 +236,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
}
|
||||
|
||||
removeFromSlot(slot);
|
||||
chr.announce(PacketCreator.getPlayerShopItemUpdate(this));
|
||||
chr.sendPacket(PacketCreator.getPlayerShopItemUpdate(this));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -254,10 +255,10 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
|
||||
newItem.setQuantity((short) ((pItem.getItem().getQuantity() * quantity)));
|
||||
if (quantity < 1 || !pItem.isExist() || pItem.getBundles() < quantity) {
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return false;
|
||||
} else if (newItem.getInventoryType().equals(MapleInventoryType.EQUIP) && newItem.getQuantity() > 1) {
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -270,7 +271,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
if (c.getPlayer().getMeso() >= price) {
|
||||
if (!owner.canHoldMeso(price)) { // thanks Rohenn for noticing owner hold check misplaced
|
||||
c.getPlayer().dropMessage(1, "Transaction failed since the shop owner can't hold any more mesos.");
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -280,7 +281,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
owner.gainMeso(price, true);
|
||||
|
||||
SoldItem soldItem = new SoldItem(c.getPlayer().getName(), pItem.getItem().getItemId(), quantity, price);
|
||||
owner.announce(PacketCreator.getPlayerShopOwnerUpdate(soldItem, item));
|
||||
owner.sendPacket(PacketCreator.getPlayerShopOwnerUpdate(soldItem, item));
|
||||
|
||||
synchronized (sold) {
|
||||
sold.add(soldItem);
|
||||
@@ -298,12 +299,12 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
}
|
||||
} else {
|
||||
c.getPlayer().dropMessage(1, "Your inventory is full. Please clear a slot before buying this item.");
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
c.getPlayer().dropMessage(1, "You don't have enough mesos to purchase this item.");
|
||||
c.announce(PacketCreator.enableActions());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -317,12 +318,12 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
}
|
||||
}
|
||||
|
||||
public void broadcastToVisitors(final byte[] packet) {
|
||||
public void broadcastToVisitors(Packet packet) {
|
||||
visitorLock.lock();
|
||||
try {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (visitors[i] != null) {
|
||||
visitors[i].getClient().announce(packet);
|
||||
visitors[i].sendPacket(packet);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
@@ -335,13 +336,13 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
try {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (visitors[i] != null) {
|
||||
visitors[i].getClient().announce(PacketCreator.getPlayerShopRemoveVisitor(i + 1));
|
||||
visitors[i].sendPacket(PacketCreator.getPlayerShopRemoveVisitor(i + 1));
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (visitors[i] != null) {
|
||||
visitors[i].getClient().announce(PacketCreator.getPlayerShop(this, false));
|
||||
visitors[i].sendPacket(PacketCreator.getPlayerShop(this, false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -359,7 +360,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
try {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (visitors[i] != null) {
|
||||
visitors[i].getClient().announce(PacketCreator.shopErrorMessage(10, 1));
|
||||
visitors[i].sendPacket(PacketCreator.shopErrorMessage(10, 1));
|
||||
visitorList.add(visitors[i]);
|
||||
}
|
||||
}
|
||||
@@ -385,10 +386,10 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
return mplew.getPacket();
|
||||
}
|
||||
|
||||
public void broadcast(final byte[] packet) {
|
||||
public void broadcast(Packet packet) {
|
||||
MapleClient client = owner.getClient();
|
||||
if (client != null) {
|
||||
client.announce(packet);
|
||||
client.sendPacket(packet);
|
||||
}
|
||||
broadcastToVisitors(packet);
|
||||
}
|
||||
@@ -447,7 +448,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
public void sendShop(MapleClient c) {
|
||||
visitorLock.lock();
|
||||
try {
|
||||
c.announce(PacketCreator.getPlayerShop(this, isOwner(c.getPlayer())));
|
||||
c.sendPacket(PacketCreator.getPlayerShop(this, isOwner(c.getPlayer())));
|
||||
} finally {
|
||||
visitorLock.unlock();
|
||||
}
|
||||
@@ -512,7 +513,7 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
}
|
||||
|
||||
if(target != null) {
|
||||
target.getClient().announce(PacketCreator.shopErrorMessage(5, 1));
|
||||
target.sendPacket(PacketCreator.shopErrorMessage(5, 1));
|
||||
removeVisitor(target);
|
||||
}
|
||||
}
|
||||
@@ -572,12 +573,12 @@ public class MaplePlayerShop extends AbstractMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(MapleClient client) {
|
||||
client.announce(PacketCreator.removePlayerShopBox(this));
|
||||
client.sendPacket(PacketCreator.removePlayerShopBox(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendSpawnData(MapleClient client) {
|
||||
client.announce(PacketCreator.updatePlayerShopBox(this));
|
||||
client.sendPacket(PacketCreator.updatePlayerShopBox(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -23,6 +23,7 @@ package server.maps;
|
||||
|
||||
import client.MapleClient;
|
||||
import config.YamlConfig;
|
||||
import net.packet.Packet;
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
||||
import net.server.services.task.channel.OverallService;
|
||||
@@ -166,21 +167,21 @@ public class MapleReactor extends AbstractMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(MapleClient client) {
|
||||
client.announce(makeDestroyData());
|
||||
client.sendPacket(makeDestroyData());
|
||||
}
|
||||
|
||||
public final byte[] makeDestroyData() {
|
||||
public final Packet makeDestroyData() {
|
||||
return PacketCreator.destroyReactor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendSpawnData(MapleClient client) {
|
||||
if (this.isAlive()) {
|
||||
client.announce(makeSpawnData());
|
||||
client.sendPacket(makeSpawnData());
|
||||
}
|
||||
}
|
||||
|
||||
public final byte[] makeSpawnData() {
|
||||
public final Packet makeSpawnData() {
|
||||
return PacketCreator.spawnReactor(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,12 +50,12 @@ public class MapleSummon extends AbstractAnimatedMapleMapObject {
|
||||
|
||||
@Override
|
||||
public void sendSpawnData(MapleClient client) {
|
||||
client.announce(PacketCreator.spawnSummon(this, false));
|
||||
client.sendPacket(PacketCreator.spawnSummon(this, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendDestroyData(MapleClient client) {
|
||||
client.announce(PacketCreator.removeSummon(this, true));
|
||||
client.sendPacket(PacketCreator.removeSummon(this, true));
|
||||
}
|
||||
|
||||
public MapleCharacter getOwner() {
|
||||
|
||||
@@ -18,7 +18,7 @@ public class MapleRockPaperScissor{
|
||||
private boolean win = false;
|
||||
|
||||
public MapleRockPaperScissor(final MapleClient c, final byte mode){
|
||||
c.announce(PacketCreator.rpsMode((byte) (9 + mode)));
|
||||
c.sendPacket(PacketCreator.rpsMode((byte) (9 + mode)));
|
||||
if(mode == 0){
|
||||
c.getPlayer().gainMeso(-1000, true, true, true);
|
||||
}
|
||||
@@ -28,14 +28,14 @@ public class MapleRockPaperScissor{
|
||||
if(ableAnswer && !win && answer >= 0 && answer <= 2){
|
||||
final int response = Randomizer.nextInt(3);
|
||||
if(response == answer){
|
||||
c.announce(PacketCreator.rpsSelection((byte) response, (byte) round));
|
||||
c.sendPacket(PacketCreator.rpsSelection((byte) response, (byte) round));
|
||||
// dont do anything. they can still answer once a draw
|
||||
}else if((answer == 0 && response == 2) || (answer == 1 && response == 0) || (answer == 2 && response == 1)){ // they win
|
||||
c.announce(PacketCreator.rpsSelection((byte) response, (byte) (round + 1)));
|
||||
c.sendPacket(PacketCreator.rpsSelection((byte) response, (byte) (round + 1)));
|
||||
ableAnswer = false;
|
||||
win = true;
|
||||
}else{ // they lose
|
||||
c.announce(PacketCreator.rpsSelection((byte) response, (byte) -1));
|
||||
c.sendPacket(PacketCreator.rpsSelection((byte) response, (byte) -1));
|
||||
ableAnswer = false;
|
||||
}
|
||||
return true;
|
||||
@@ -47,7 +47,7 @@ public class MapleRockPaperScissor{
|
||||
public final boolean timeOut(final MapleClient c){
|
||||
if(ableAnswer && !win){
|
||||
ableAnswer = false;
|
||||
c.announce(PacketCreator.rpsMode((byte) 0x0A));
|
||||
c.sendPacket(PacketCreator.rpsMode((byte) 0x0A));
|
||||
return true;
|
||||
}
|
||||
reward(c);
|
||||
@@ -60,7 +60,7 @@ public class MapleRockPaperScissor{
|
||||
if(round < 10){
|
||||
win = false;
|
||||
ableAnswer = true;
|
||||
c.announce(PacketCreator.rpsMode((byte) 0x0C));
|
||||
c.sendPacket(PacketCreator.rpsMode((byte) 0x0C));
|
||||
return true;
|
||||
} else {
|
||||
round = 10;
|
||||
@@ -79,6 +79,6 @@ public class MapleRockPaperScissor{
|
||||
|
||||
public final void dispose(final MapleClient c){
|
||||
reward(c);
|
||||
c.announce(PacketCreator.rpsMode((byte) 0x0D));
|
||||
c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,8 +21,9 @@
|
||||
*/
|
||||
package server.movement;
|
||||
|
||||
import java.awt.Point;
|
||||
import tools.data.output.LittleEndianWriter;
|
||||
import net.packet.OutPacket;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class AbsoluteLifeMovement extends AbstractLifeMovement {
|
||||
private Point pixelsPerSecond;
|
||||
@@ -49,14 +50,12 @@ public class AbsoluteLifeMovement extends AbstractLifeMovement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(LittleEndianWriter lew) {
|
||||
lew.write(getType());
|
||||
lew.writeShort(getPosition().x);
|
||||
lew.writeShort(getPosition().y);
|
||||
lew.writeShort(pixelsPerSecond.x);
|
||||
lew.writeShort(pixelsPerSecond.y);
|
||||
lew.writeShort(fh);
|
||||
lew.write(getNewstate());
|
||||
lew.writeShort(getDuration());
|
||||
public void serialize(OutPacket p) {
|
||||
p.writeByte(getType());
|
||||
p.writePos(getPosition());
|
||||
p.writePos(pixelsPerSecond);
|
||||
p.writeShort(fh);
|
||||
p.writeByte(getNewstate());
|
||||
p.writeShort(getDuration());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,8 +21,9 @@
|
||||
*/
|
||||
package server.movement;
|
||||
|
||||
import java.awt.Point;
|
||||
import tools.data.output.LittleEndianWriter;
|
||||
import net.packet.OutPacket;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class ChairMovement extends AbstractLifeMovement {
|
||||
private int fh;
|
||||
@@ -40,13 +41,12 @@ public class ChairMovement extends AbstractLifeMovement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(LittleEndianWriter lew) {
|
||||
lew.write(getType());
|
||||
lew.writeShort(getPosition().x);
|
||||
lew.writeShort(getPosition().y);
|
||||
lew.writeShort(fh);
|
||||
lew.write(getNewstate());
|
||||
lew.writeShort(getDuration());
|
||||
public void serialize(OutPacket p) {
|
||||
p.writeByte(getType());
|
||||
p.writePos(getPosition());
|
||||
p.writeShort(fh);
|
||||
p.writeByte(getNewstate());
|
||||
p.writeShort(getDuration());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,20 +21,21 @@
|
||||
*/
|
||||
package server.movement;
|
||||
|
||||
import java.awt.Point;
|
||||
import tools.data.output.LittleEndianWriter;
|
||||
import net.packet.OutPacket;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class ChangeEquip implements LifeMovementFragment {
|
||||
private int wui;
|
||||
private final int wui;
|
||||
|
||||
public ChangeEquip(int wui) {
|
||||
this.wui = wui;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(LittleEndianWriter lew) {
|
||||
lew.write(10);
|
||||
lew.write(wui);
|
||||
public void serialize(OutPacket p) {
|
||||
p.writeByte(10);
|
||||
p.writeByte(wui);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,8 +21,9 @@
|
||||
*/
|
||||
package server.movement;
|
||||
|
||||
import java.awt.Point;
|
||||
import tools.data.output.LittleEndianWriter;
|
||||
import net.packet.OutPacket;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class JumpDownMovement extends AbstractLifeMovement {
|
||||
private Point pixelsPerSecond;
|
||||
@@ -58,15 +59,13 @@ public class JumpDownMovement extends AbstractLifeMovement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(LittleEndianWriter lew) {
|
||||
lew.write(getType());
|
||||
lew.writeShort(getPosition().x);
|
||||
lew.writeShort(getPosition().y);
|
||||
lew.writeShort(pixelsPerSecond.x);
|
||||
lew.writeShort(pixelsPerSecond.y);
|
||||
lew.writeShort(fh);
|
||||
lew.writeShort(originFh);
|
||||
lew.write(getNewstate());
|
||||
lew.writeShort(getDuration());
|
||||
public void serialize(OutPacket p) {
|
||||
p.writeByte(getType());
|
||||
p.writePos(getPosition());
|
||||
p.writePos(pixelsPerSecond);
|
||||
p.writeShort(fh);
|
||||
p.writeShort(originFh);
|
||||
p.writeByte(getNewstate());
|
||||
p.writeShort(getDuration());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,10 +21,11 @@
|
||||
*/
|
||||
package server.movement;
|
||||
|
||||
import java.awt.Point;
|
||||
import tools.data.output.LittleEndianWriter;
|
||||
import net.packet.OutPacket;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public interface LifeMovementFragment {
|
||||
void serialize(LittleEndianWriter lew);
|
||||
void serialize(OutPacket p);
|
||||
Point getPosition();
|
||||
}
|
||||
|
||||
@@ -21,8 +21,9 @@
|
||||
*/
|
||||
package server.movement;
|
||||
|
||||
import java.awt.Point;
|
||||
import tools.data.output.LittleEndianWriter;
|
||||
import net.packet.OutPacket;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class RelativeLifeMovement extends AbstractLifeMovement {
|
||||
public RelativeLifeMovement(int type, Point position, int duration, int newstate) {
|
||||
@@ -30,11 +31,10 @@ public class RelativeLifeMovement extends AbstractLifeMovement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(LittleEndianWriter lew) {
|
||||
lew.write(getType());
|
||||
lew.writeShort(getPosition().x);
|
||||
lew.writeShort(getPosition().y);
|
||||
lew.write(getNewstate());
|
||||
lew.writeShort(getDuration());
|
||||
public void serialize(OutPacket p) {
|
||||
p.writeByte(getType());
|
||||
p.writePos(getPosition());
|
||||
p.writeByte(getNewstate());
|
||||
p.writeShort(getDuration());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,8 +20,9 @@
|
||||
*/
|
||||
package server.movement;
|
||||
|
||||
import java.awt.Point;
|
||||
import tools.data.output.LittleEndianWriter;
|
||||
import net.packet.OutPacket;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class TeleportMovement extends AbsoluteLifeMovement {
|
||||
|
||||
@@ -30,12 +31,10 @@ public class TeleportMovement extends AbsoluteLifeMovement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(LittleEndianWriter lew) {
|
||||
lew.write(getType());
|
||||
lew.writeShort(getPosition().x);
|
||||
lew.writeShort(getPosition().y);
|
||||
lew.writeShort(getPixelsPerSecond().x);
|
||||
lew.writeShort(getPixelsPerSecond().y);
|
||||
lew.write(getNewstate());
|
||||
public void serialize(OutPacket p) {
|
||||
p.writeByte(getType());
|
||||
p.writePos(getPosition());
|
||||
p.writePos(getPixelsPerSecond());
|
||||
p.writeByte(getNewstate());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public class AriantColiseum {
|
||||
}
|
||||
|
||||
for (MapleCharacter mc : players) {
|
||||
mc.announce(PacketCreator.updateAriantPQRanking(score));
|
||||
mc.sendPacket(PacketCreator.updateAriantPQRanking(score));
|
||||
}
|
||||
|
||||
setAriantScoreBoard(TimerManager.getInstance().schedule(() -> showArenaResults(), pqTimerBoard));
|
||||
@@ -144,7 +144,7 @@ public class AriantColiseum {
|
||||
private void broadcastAriantScoreUpdate() {
|
||||
if (scoreDirty) {
|
||||
for (MapleCharacter chr : score.keySet()) {
|
||||
chr.announce(PacketCreator.updateAriantPQRanking(score));
|
||||
chr.sendPacket(PacketCreator.updateAriantPQRanking(score));
|
||||
}
|
||||
scoreDirty = false;
|
||||
}
|
||||
|
||||
@@ -374,12 +374,12 @@ public class MonsterCarnival {
|
||||
MapleCharacter mc = mpc.getPlayer();
|
||||
if (mc != null) {
|
||||
if (redWin) {
|
||||
mc.getClient().announce(PacketCreator.showEffect("quest/carnival/win"));
|
||||
mc.getClient().announce(PacketCreator.playSound("MobCarnival/Win"));
|
||||
mc.sendPacket(PacketCreator.showEffect("quest/carnival/win"));
|
||||
mc.sendPacket(PacketCreator.playSound("MobCarnival/Win"));
|
||||
mc.dispelDebuffs();
|
||||
} else {
|
||||
mc.getClient().announce(PacketCreator.showEffect("quest/carnival/lose"));
|
||||
mc.getClient().announce(PacketCreator.playSound("MobCarnival/Lose"));
|
||||
mc.sendPacket(PacketCreator.showEffect("quest/carnival/lose"));
|
||||
mc.sendPacket(PacketCreator.playSound("MobCarnival/Lose"));
|
||||
mc.dispelDebuffs();
|
||||
}
|
||||
}
|
||||
@@ -388,12 +388,12 @@ public class MonsterCarnival {
|
||||
MapleCharacter mc = mpc.getPlayer();
|
||||
if (mc != null) {
|
||||
if (!redWin) {
|
||||
mc.getClient().announce(PacketCreator.showEffect("quest/carnival/win"));
|
||||
mc.getClient().announce(PacketCreator.playSound("MobCarnival/Win"));
|
||||
mc.sendPacket(PacketCreator.showEffect("quest/carnival/win"));
|
||||
mc.sendPacket(PacketCreator.playSound("MobCarnival/Win"));
|
||||
mc.dispelDebuffs();
|
||||
} else {
|
||||
mc.getClient().announce(PacketCreator.showEffect("quest/carnival/lose"));
|
||||
mc.getClient().announce(PacketCreator.playSound("MobCarnival/Lose"));
|
||||
mc.sendPacket(PacketCreator.showEffect("quest/carnival/lose"));
|
||||
mc.sendPacket(PacketCreator.playSound("MobCarnival/Lose"));
|
||||
mc.dispelDebuffs();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ public class MonsterCarnivalParty {
|
||||
final String effect = winner ? "quest/carnival/win" : "quest/carnival/lose";
|
||||
|
||||
for (final MapleCharacter chr : members) {
|
||||
chr.announce(PacketCreator.showEffect(effect));
|
||||
chr.sendPacket(PacketCreator.showEffect(effect));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -151,8 +151,8 @@ public class Pyramid extends PartyQuest {
|
||||
|
||||
public void broadcastInfo(String info, int amount) {
|
||||
for (MapleCharacter chr : getParticipants()) {
|
||||
chr.announce(PacketCreator.getEnergy("massacre_" + info, amount));
|
||||
chr.announce(PacketCreator.pyramidGauge(count));
|
||||
chr.sendPacket(PacketCreator.getEnergy("massacre_" + info, amount));
|
||||
chr.sendPacket(PacketCreator.pyramidGauge(count));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ public class Pyramid extends PartyQuest {
|
||||
skill++;
|
||||
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
|
||||
for (MapleCharacter chr : getParticipants()) {
|
||||
chr.announce(PacketCreator.getEnergy("massacre_skill", skill));
|
||||
chr.sendPacket(PacketCreator.getEnergy("massacre_skill", skill));
|
||||
ii.getItemEffect(2022586).applyTo(chr);
|
||||
}
|
||||
} else if (buffcount == 2 && total >= 1000) {
|
||||
@@ -185,7 +185,7 @@ public class Pyramid extends PartyQuest {
|
||||
skill++;
|
||||
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
|
||||
for (MapleCharacter chr : getParticipants()) {
|
||||
chr.announce(PacketCreator.getEnergy("massacre_skill", skill));
|
||||
chr.sendPacket(PacketCreator.getEnergy("massacre_skill", skill));
|
||||
ii.getItemEffect(2022587).applyTo(chr);
|
||||
}
|
||||
} else if (buffcount == 3 && total >= 1500) {
|
||||
@@ -196,7 +196,7 @@ public class Pyramid extends PartyQuest {
|
||||
skill++;
|
||||
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
|
||||
for (MapleCharacter chr : getParticipants()) {
|
||||
chr.announce(PacketCreator.getEnergy("massacre_skill", skill));
|
||||
chr.sendPacket(PacketCreator.getEnergy("massacre_skill", skill));
|
||||
ii.getItemEffect(2022588).applyTo(chr);
|
||||
}
|
||||
} else if (buffcount == 5 && total >= 2500) {
|
||||
@@ -229,7 +229,7 @@ public class Pyramid extends PartyQuest {
|
||||
|
||||
exp += ((kill * 2) + (cool * 10));
|
||||
}
|
||||
chr.announce(PacketCreator.pyramidScore(rank, exp));
|
||||
chr.sendPacket(PacketCreator.pyramidScore(rank, exp));
|
||||
chr.gainExp(exp, true, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -315,7 +315,7 @@ public class MapleQuest {
|
||||
return false;
|
||||
}
|
||||
if (timeLimit > 0) {
|
||||
chr.announce(PacketCreator.removeQuestTimeLimit(id));
|
||||
chr.sendPacket(PacketCreator.removeQuestTimeLimit(id));
|
||||
}
|
||||
MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED);
|
||||
newStatus.setForfeited(chr.getQuest(this).getForfeited() + 1);
|
||||
@@ -361,7 +361,7 @@ public class MapleQuest {
|
||||
|
||||
public boolean forceComplete(MapleCharacter chr, int npc) {
|
||||
if (timeLimit > 0) {
|
||||
chr.announce(PacketCreator.removeQuestTimeLimit(id));
|
||||
chr.sendPacket(PacketCreator.removeQuestTimeLimit(id));
|
||||
}
|
||||
|
||||
MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.COMPLETED, npc);
|
||||
@@ -370,7 +370,7 @@ public class MapleQuest {
|
||||
newStatus.setCompletionTime(System.currentTimeMillis());
|
||||
chr.updateQuestStatus(newStatus);
|
||||
|
||||
chr.announce(PacketCreator.showSpecialEffect(9)); // Quest completion
|
||||
chr.sendPacket(PacketCreator.showSpecialEffect(9)); // Quest completion
|
||||
chr.getMap().broadcastMessage(chr, PacketCreator.showForeignEffect(chr.getId(), 9), false); //use 9 instead of 12 for both
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -143,14 +143,14 @@ public class ItemAction extends MapleQuestAction {
|
||||
}
|
||||
|
||||
MapleInventoryManipulator.removeById(chr.getClient(), type, itemid, quantity, true, false);
|
||||
chr.announce(PacketCreator.getShowItemGain(itemid, (short) count, true));
|
||||
chr.sendPacket(PacketCreator.getShowItemGain(itemid, (short) count, true));
|
||||
}
|
||||
|
||||
for(ItemData iEntry: giveItem) {
|
||||
int itemid = iEntry.getId(), count = iEntry.getCount(), period = iEntry.getPeriod(); // thanks Vcoc for noticing quest milestone item not getting removed from inventory after a while
|
||||
|
||||
MapleInventoryManipulator.addById(chr.getClient(), itemid, (short) count, "", -1, period > 0 ? (System.currentTimeMillis() + period * 60 * 1000) : -1);
|
||||
chr.announce(PacketCreator.getShowItemGain(itemid, (short) count, true));
|
||||
chr.sendPacket(PacketCreator.getShowItemGain(itemid, (short) count, true));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,6 @@ public class NextQuestAction extends MapleQuestAction {
|
||||
@Override
|
||||
public void run(MapleCharacter chr, Integer extSelection) {
|
||||
MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID));
|
||||
chr.announce(PacketCreator.updateQuestFinish((short) questID, status.getNpc(), (short) nextQuest));
|
||||
chr.sendPacket(PacketCreator.updateQuestFinish((short) questID, status.getNpc(), (short) nextQuest));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user