Take damage & Summon packets
Fixed some oddities with other player clients when dealing with summons (spawning, taking damage or attacking). Fixed damage dealt to player not apearing if the player is a GM on hiding and other players in the area are GMs as well.
This commit is contained in:
@@ -872,6 +872,11 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
List<MapleBuffStat> dsstat = Collections.singletonList(MapleBuffStat.DARKSIGHT);
|
||||
getMap().broadcastGMMessage(this, MaplePacketCreator.cancelForeignBuff(id, dsstat), false);
|
||||
getMap().broadcastMessage(this, MaplePacketCreator.spawnPlayerMapobject(this), false);
|
||||
|
||||
for(MapleSummon ms: this.getSummonsValues()) {
|
||||
getMap().broadcastNONGMMessage(this, MaplePacketCreator.spawnSummon(ms, false), false);
|
||||
}
|
||||
|
||||
updatePartyMemberHP();
|
||||
} else {
|
||||
this.hidden = true;
|
||||
@@ -1290,7 +1295,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
this.currentType = type;
|
||||
}
|
||||
|
||||
public void checkBerserk() {
|
||||
public void checkBerserk(final boolean isHidden) {
|
||||
if (BerserkSchedule != null) {
|
||||
BerserkSchedule.cancel(false);
|
||||
}
|
||||
@@ -1304,7 +1309,8 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
@Override
|
||||
public void run() {
|
||||
client.announce(MaplePacketCreator.showOwnBerserk(skilllevel, Berserk));
|
||||
getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showBerserk(getId(), skilllevel, Berserk), false);
|
||||
if(!isHidden) getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showBerserk(getId(), skilllevel, Berserk), false);
|
||||
else getMap().broadcastGMMessage(MapleCharacter.this, MaplePacketCreator.showBerserk(getId(), skilllevel, Berserk), false);
|
||||
}
|
||||
}, 5000, 3000);
|
||||
}
|
||||
@@ -1801,15 +1807,16 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
getMap().removeMapObject(summon);
|
||||
removeVisibleMapObject(summon);
|
||||
summons.remove(summonId);
|
||||
}
|
||||
if (summon.getSkill() == DarkKnight.BEHOLDER) {
|
||||
if (beholderHealingSchedule != null) {
|
||||
beholderHealingSchedule.cancel(false);
|
||||
beholderHealingSchedule = null;
|
||||
}
|
||||
if (beholderBuffSchedule != null) {
|
||||
beholderBuffSchedule.cancel(false);
|
||||
beholderBuffSchedule = null;
|
||||
|
||||
if (summon.getSkill() == DarkKnight.BEHOLDER) {
|
||||
if (beholderHealingSchedule != null) {
|
||||
beholderHealingSchedule.cancel(false);
|
||||
beholderHealingSchedule = null;
|
||||
}
|
||||
if (beholderBuffSchedule != null) {
|
||||
beholderBuffSchedule.cancel(false);
|
||||
beholderBuffSchedule = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (stat == MapleBuffStat.DRAGONBLOOD) {
|
||||
@@ -4417,7 +4424,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
addHP(-bloodEffect.getX());
|
||||
client.announce(MaplePacketCreator.showOwnBuffEffect(bloodEffect.getSourceId(), 5));
|
||||
getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showBuffeffect(getId(), bloodEffect.getSourceId(), 5), false);
|
||||
checkBerserk();
|
||||
checkBerserk(isHidden());
|
||||
}
|
||||
}, 4000, 4000);
|
||||
}
|
||||
@@ -4564,7 +4571,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
if (effect.isDragonBlood()) {
|
||||
prepareDragonBlood(effect);
|
||||
} else if (effect.isBerserk()) {
|
||||
checkBerserk();
|
||||
checkBerserk(isHidden());
|
||||
} else if (effect.isBeholder()) {
|
||||
final int beholder = DarkKnight.BEHOLDER;
|
||||
if (beholderHealingSchedule != null) {
|
||||
|
||||
@@ -2068,6 +2068,9 @@ public class Commands {
|
||||
MapleMapItem mapItem = (MapleMapItem) item;
|
||||
if (mapItem.getMeso() > 0) {
|
||||
player.gainMeso(mapItem.getMeso(), true);
|
||||
} else if(mapItem.getItemId() == 4031865 || mapItem.getItemId() == 4031866) {
|
||||
// Add NX to account, show effect and make item disappear
|
||||
player.getCashShop().gainCash(1, mapItem.getItemId() == 4031865 ? 100 : 250);
|
||||
} else if (mapItem.getItem().getItemId() >= 5000000 && mapItem.getItem().getItemId() <= 5000100) {
|
||||
int petId = MaplePet.createPet(mapItem.getItem().getItemId());
|
||||
if (petId == -1) {
|
||||
|
||||
Reference in New Issue
Block a user